Windows下使用Docker搭建Kafka

一,下载

首先,先启动本地的Docker服务,然后获取合适版本的zookeeper(我这里默认是最新)

docker pull wurstmeister/zookeeper

再到docker仓库获取合适版本的kafka

docker pull wurstmeister/kafka

二,搭建

启动zookeeper服务

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

启动kafka,[local-ip]为自己主机IP,切记不可使用localhost来代替【本人使用localhost后,启动容器后失败退出】

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=[local-ip]:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://[local-ip]:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

三,测试

首先,进入容器内部

docker exec -it kafka /bin/bash

再运行kafka生产者来发布消息,当前窗口称为【窗口A】

/opt/kafka_2.13-2.7.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

再重新开启一个窗口【窗口B】,运行kafka消费者,接受消息

/opt/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

在生产者窗口A中,我们可以注意到生产者前面出现“>”符号,在后面位置输入内容然后按下回车,就可以到消费者窗口B中看到内容。这意味着简单的kafka结合zookeeper消息生产与消费就完成了

窗口A
窗口B

四,基本命令

docker下kafka的配置文件和脚本文件都在:/opt/kafka_x.xx

4.1 启动kafka

# 指定对应的配置文件启动
kafka-server-start.sh $KAFKA_PATH/config/server.properties
# -daemon 以后台的方式启动
kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties

# 指定JMX port端口启动,指定jmx,可以方便监控kafka集群
JMX_PORT=9991 kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties

4.2 停止kafka

kafka-server-stop.sh
或
kill -9 pid	# pid 进程号

4.3 topic

查看当前服务器中所有的topic

# zhost为zookeeper服务器IP或dns映射域名,zport为端口
kafka-topics.sh --list --zookeeper host:port

创建topic

# --replication-factor: 必须参数,用来设置主题的副本数,每个主题可以有多个副本,副本位于集群中不同broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败
# --partitions: 必须参数,主题分区数
kafka-topics.sh --create --zookeeper zhost:zport --replication-factor 1 --partitions 1 --topic test

删除topic

kafka-topics.sh --delete --zookeeper zhost:zport --topic test
# 或
kafka-topics.sh --delete --bootstrap-server khost:kport --topic test

查看topic详情

kafka-topics.sh --topic test --describe --zookeeper zhost:zport
# 或
kafka-topics.sh --topic test --describe --bootstrap-server khost:kport

修改topic的分区数

kafka-topic.sh --zookeeper zhost --alter --partitions 2 --topic test 
# 或
kafka-topic.sh --bootstrap-server khost --alter --partitions 2 --topic test 

4.4 生产者

kafka自带了一个在终端演示生产者发布消息的脚本 --kafka-console-producer.sh

运行该脚本会启动一个进程,在运行该脚本时可以传递相应配置以覆盖默认配置。

参数

  • –producer.config,用于加载一个生产者级别相关的配置文件
  • –producer-property 直接在启动命令中设置参数,覆盖默认配置的参数
  • –property 通过该命令可以设置消费者相关的配置
  • –broker-list 指定kafka的代理地址列表(必传)
  • –topic 消息被发送的目标主题(必传)
# 启动生产者,通过shell命令发送消息
# khost: kafka服务器,kport:端口
# --broker-list: 指的是kafka的服务端,可以是一个服务器也可以是集群
kafka-console-producer.sh --broker-list khost:kport --topic test

4.5 消费者

kafka自带了一个在终端演示消费者消费消息的脚本 --kafka-console-consumer.sh

# --from-beginning 查看这个topic所有数据
# --bootstrap-server: 指的是目标集群的服务器地址
kafka-console-consumer.sh --bootstrap-server khost:kport --from-beginning --topic test
Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐