背景:想通过kafka做一个需求,之前没有用过,将TXT文件中的数据加载到kafka中,再通过logstash将kafka中的数据加载到es中。
基本操作环境介绍
操作系统 | 苹果M2 |
---|---|
kafka镜像版本 | wurstmeister/kafka |
zookeeper镜像版本 | zookeeper:latest |
kafka-ui-lite镜像版本 | freakchicken/kafka-ui-lite |
在网上搜了好多教程,针对M1和M2的太少了,大写的尴尬😓,然后就是将不同的文章进行尝试,试错
终于尝试成功了,😄
废话不多说,上干货
第一步:去下载镜像文件,这两个版本是适合M1和M2的
wurstmeister/kafka //适合M芯片的版本
wurstmeister/zookeeper //这个版本是不合适M芯片的
zookeeper最新版
docker pull wurstmeister/kafka //下载命令
docker pull zookeeper
docker pull freakchicken/kafka-ui-lite
第二步:安装zookeeper,kafka是依赖于zookeeper的,首先,先安装zookeeper
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper
/etc/localtime:/etc/localtime让docker容器使用主机系统时间(挂载到/etc/localtime)
-p 2181:2181前面的2181表示容器外宿主机的监听端口,后面的2181表示zookeeper 在容器中运行的端口
验证是否安装成功了,docker ps ,查看一下是否有zookeeper的进程在,如下图所示,则表示启动成功了
第三步:安装kafka,每个参数的意义附在下面了
docker run -d --name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.85.109:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.85.109:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-t wurstmeister/kafka
-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e KAFKA_ZOOKEEPER_CONNECT=192.168.85.109:2181/kafka 配置zookeeper管理kafka的路径,192.168.85.109改为你zookeeper部署的实际ip
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.85.109:9092 把kafka的地址端口注册给zookeeper,192.168.101.778改为你kafka部署的实际ip
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间
验证kafka是否启动成功了,几种方式可以尝试
docker ps //可以查看是否有kafka的进程
docker logs kafka //可以查看kafka的日志信息
第四步:安装kafka-ui-lite,是kafka比较好用的客户端工具,可以在生产消息、消费消息、管理topic、管理group;可以支持管理多个kafka集群
docker run -d --name kafka-ui-lite -p 8889:8889 freakchicken/kafka-ui-lite
然后去浏览器端去访问:localhost:8889
点击kafka,点击配置,即可创建一个kafka集群环境
点击添加环境
然后就是创建topic了,我是在容器中执行的
docker exec -it kafka /bin/bash //进入容器的命令
cd /opt/kafka/bin //进入容器后,进入到这个目录下,都是可执行命令
./kafka-topics.sh --create --zookeeper 192.168.85.109:2181 --replication-factor 1 --partitions 1 --topic test //创建topic的命令