docker运行kafka示例
Posted luffy5459
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker运行kafka示例相关的知识,希望对你有一定的参考价值。
kafka依赖zookeeper,kafka自身没有管理界面,运行之后,只能通过查看日志来定位问题,不方便,所以这里还需要引入一个kafka-manager镜像来管理kafka。
话不多说,直接上代码。
1、拉取镜像
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
docker pull sheepkiller/kafka-manager
2、启动zookeeper
[root@server ~]# docker run -d -t --name zookeeper -p 2181:2181 wurstmeister/zookeeper
1d0620baad47494978c2470e050a275600a3f8aa04509613053356d1f907282f
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d0620baad47 wurstmeister/zookeeper "/bin/sh -c '/usr/..." 6 seconds ago Up 4 seconds 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp zookeeper
3、启动kafka
[root@server ~]# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.226.100:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.226.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
9badfbdae3b94e7464d2c364dac1390fb40ca65b14179417c2f88af315ccf449
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9badfbdae3b9 wurstmeister/kafka "start-kafka.sh" 5 seconds ago Up 3 seconds 0.0.0.0:9092->9092/tcp kafka
1d0620baad47 wurstmeister/zookeeper "/bin/sh -c '/usr/..." 3 minutes ago Up 3 minutes 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp zookeeper
4、创建主题
[root@server ~]# docker exec -it kafka /bin/bash
bash-5.1# /opt/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.226.100:2181 --replication-factor 1 --partitions 1 --topic test_topic
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic test_topic.
5、模拟消费者
bash-5.1# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.226.100:9092 --topic test_topic --from-beginning
这一步执行完毕,会挂住,没有任何输出,需要等到生产者发布消息,这里才能显示消息。
6、模拟生产者
克隆一个linux连接终端,同样进入kafka容器中,执行生产者指令,这里,输入指令之后,可以接着输入消息,然后回车。
[root@server ~]# docker exec -it kafka /bin/bash
bash-5.1# /opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.226.100:9092 --topic test_topic
>hello
>haha
这里发送的消息,可以回到步骤5查看。
7、运行kafka-manager
docker run -d --name kafka-manager -p 9000:9000 --link zookeeper:zookeeper --link kafka:kafka --env ZK_HOSTS=zookeeper:2181 sheepkiller/kafka-manager
在浏览器中,输入kafka-manager访问地址进行访问:
第一次打开,默认是没有clusters显示的,需要我们手动添加,在菜单栏中Cluster下拉列表选择Add Cluster选项,在添加页面,我们主要填写cluster name和zookeeper的连接信息,就添加成功了。
添加成功,可以回到主页,看cluster列表:
这里可以看到概要,有5个topic,点击数字5,进入主题topic详细列表页面:
至此,我们利用docker搭建kafka就成功了,用到了zookeeper,kafka,kafka-manager,相对来说比较清晰,按照顺序启动就可以了。
kafka-manager是管理kafka集群的,真正的环境中,zookeeper至少是3个结点,kafka是两个结点,保证集群稳定与负载均衡。
kafka作为消息队列,有着广泛的用途,在实际中,有很多生态都集成了kafka,包括hadoop,elasticsearch。
以上是关于docker运行kafka示例的主要内容,如果未能解决你的问题,请参考以下文章
从 Docker 容器将 PySpark 连接到 Kafka