kafka学习日记之docker 中kafka的安装及基本使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

docker中kafka的安装使用

一、kafka,docker概念?

不需要深入理解它的具体实现原理,先装了跑个简单的demo慢慢弄会好很多欸,那概念看的头疼。
kafka是消息中间件,用来处理消息队列,它有很强大的特性:分布式/集群
docker是容器,就是实现特定功能的实例,每个docker容器共用最底层系统文件,相互之间不会发生干扰,但是又可以通过特定方式通讯。
可以在docker中装单个系统,系统中再装各种工具,或者只是装个单个系统,某些工具把它作为另外的容器。
我尝试过 再docker中安装centos7 ,再在里面装的centos7中装docker 无线套娃,其实挺有意思的~~~
docker中装centos7(ubuntu.等),centos7中装kafka或者docker中装centos7,另外的容器中装kafka,其实到最后的实现的功能基本差不多,但是可能带来的后续不一样,例如要是前者容器炸了,可能全炸了,后者只炸一个,另外一个可以工作,实现解耦,同时前者安装极其麻烦,因为docker中centos7 装jdk 很麻烦。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、安装使用

1.kafka需要zookeeper管理,先安装zookeeper

下载zookeeper镜像

docker pull wurstmeister/zookeeper

在这里插入图片描述
run 镜像生成容器容器名为:–name 后面的参数zookeeper

docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

在这里插入图片描述

2.kafka镜像下载运行

下载kafka镜像

docker pull wurstmeister/kafka

在这里插入图片描述

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.8.62.115:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.8.62.115:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

在这里插入图片描述

重要的事情说三遍 这个ip地址一定要是本机固定地址,否则运行镜像进入就停止!
重要的事情说三遍 这个ip地址一定要是本机固定地址,否则运行镜像进入就停止!
重要的事情说三遍 这个ip地址一定要是本机固定地址,否则运行镜像进入就停止!

run 镜像生成容器容器名为:–name 后面的参数:kafka

-e KAFKA_BROKER_ID=0

在kafka集群中,每个kafka都有一个BROKER_ID来进行区分

-e KAFKA_ZOOKEEPER_CONNECT=10.8.62.115:2181/kafka

配置zookeeper管理kafka的路径10.8.62.115:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.8.62.115:9092

把kafka的地址端口注册给zookeeper

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
配置kafka的监听端口

-v /etc/localtime:/etc/localtime
容器时间同步虚拟机的时间

3.消息通讯测试

此时说明一下两者的关系,就是这个地方的kafka容器其实是一个客户端工具,你可以通过在这个容器里面干一些的操作例如:topic的增删查等等,然后你可以在zookeeper这个容器中对topic的属性以及针对它的操作的状态进行查询。

首先进行kafka的示例测试
查看那些容器正在运行

docker ps

在这里插入图片描述
此时打开2个shell窗口 进入kafka容器进行操作
进入容器

docker exec -it kafka /bin/sh

进入/opt/kafka_2.11-2.0.0/bin路径下**

cd /opt/kafka_2.11-2.0.0/bin

左侧运行kafka生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic topic_name

这个topic_name 就是主题名字

右侧运行kafka消费者

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_name --from-beginning

右侧进行相应主题的消费者的运行,然后生成者进行传输一些消息右侧会进行显示
Ctrl +c 退出
在这里插入图片描述

4.主题操作测试

此时可以通过进入zookeeper对kafka中的操作进行确认以及对象查询
此时最好还是打开2个shell

1.zookeeper中kafka 相关对象查询
进入zookeeper容器

docker exec -it zookeeper /bin/sh

进入之后无法通过tab补全了
查询当前路径并进入bin目录

pwd
cd bin

在这里插入图片描述
运行该目录下的zkCli.sh脚本文件,进入客户端

./zkCli.sh

在这里插入图片描述
此时可以通过ls以及get进行相关的查询操作
查看zookeeper根节点目录

ls / 

查看主题目录

ls /kafka/brokers/topics

查看某个主题的partitions信息

ls /kafka/brokers/topics/topic_name/partitions

在这里插入图片描述
get用于显示某个节点的数据内容和属性`

get /kafka/brokers/topics/topic_name

在这里插入图片描述

ls2用于显示节点子节点的信息

ls2 /kafka/brokers/topics/topic_name

2.kafka容器中topic和partition的添加和删除
创建topic以及partitions

kafka-topics.sh --create --zookeeper 10.8.62.115/kafka --topic topic-partition-add --replication-factor 1 --partitions 3

在这里插入图片描述
左侧在zookeeper进行查询,replication-factor 1设置为2以上需要在zoo.cfg中进行tickTime参数的调高,要不然会报错链接超时
查询和修改链接时间参数

cat conf/zoo.cfg | grep tickTime
vi conf/zoo.cfg 

在这里插入图片描述

删除topic

kafka-topics.sh --delete --zookeeper 10.8.62.115:2181/kafka --topic-partition-add

在这里插入图片描述
左侧在zookeeper进行查询状态
注意:
如果当前 Topic 没有使用过:可以立即彻底删除。如果当前 Topic 有使用过:并不是立即删除只是标记为删除状态,重启kafka Server 后删除。

3.kafka 数据文件保存地址查询
进入kafka容器,在路径/opt/kafka_2.13-2.7.0/config/配置文件cat server.properties中的log.dirs属性中进行设置

cd /opt/kafka_2.13-2.7.0/config/
cat server.properties | grep log.dirs

在这里插入图片描述
地址

log.dirs=/kafka/kafka-logs-b0c04c8f2266

然后进去查看

总结

看着别人的教程终于完成的实验了一遍,
参考原文:
作者:szgl_lucifer
链接:https://www.jianshu.com/p/e8c29cba9fae

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值