kafka+ubuntu20.04+docker配置

记录一次配置过程

安装docker

参加下面链接的第一部分

Ubuntu20.04使用docker安装kafka服务-CSDN博客

安装zookeeper

bash 复制代码
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

安装kafka服务

bash 复制代码
docker run  -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=[你的IP地址]:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://[你的IP地址]:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

改成我自己的本机的就是:

bash 复制代码
docker run  -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.147.131:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.147.131:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

进入docker

执行docker ps -a命令,查看结果如下:

注意上述结果显示kafka和zookeeper都是已关闭状态,需要开启,使用下面的命令:docker start 容器id,即

bash 复制代码
docker start a01c
docker start c0c7

注意要先启动父容器(或者说是依赖项zookeeper),再启动子容器kafka,容器id输入前几位有区分即可,不必全部输入,也不必补全(tab不会给你补全)

执行docker ps -a命令,再次查看结果如下:

ok这就启动成功了

然后执行命令进入docker

bash 复制代码
docker exec -it [container-id] /bin/sh    #container-id就是上图中c0c7这一串数字,执行命令时只需要输入前几个数字/字母即可
cd /opt/kafka/bin    #跳转到kafka目录下的bin目录,这下面有一些可执行脚本

换成我的本机就是执行下面的命令:

bash 复制代码
docker exec -it c0c7 /bin/sh    #container-id就是上图中41b8e4db352f这一串数字,执行命令时只需要输入前几个数字/字母即可
cd /opt/kafka/bin    #跳转到kafka目录下的bin目录,这下面有一些可执行脚本

得到下面的结果:

生产者消费者模式初体验

启动生产者

注意下面的ip:192.168.147.131要和你本机ip一致,使用ifconfig命令查看

bash 复制代码
./kafka-console-producer.sh --broker-list 192.168.147.131:9092 --topic wxj

打开另一个终端,启动消费者

注意ip要一致,topic要一致

bash 复制代码
docker exec -it c0c7 /bin/sh
cd /opt/kafka/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.147.131:9092 --topic wxj

运行效果如下:

其他一点别的,就是常识啦,比如如何退出生产者消费者的环境,ctrl+c,ctrl+d都试试,如何退出容器,可以试试输入exit命令

ok 完事了,还是去探索腾讯云的kafka服务吧

常用命令行命令

首先进入kafka容器的环境中

bash 复制代码
docker exec -it c0c7 /bin/sh
cd /opt/kafka/bin

kafka-topics.sh

对主题topic进行增删改查的工具

常用选项如下:

--bootstrap-server:kafka服务器ip:port,需要查询指定的topic或者topic列表,必须指定这个量

--create:创建主题

--delete:删除主题

--describe:描述主题

--list:查看主题列表

--alter:修改主题的 partitions等

--topic <String: topic>:主题名

--topic-id <String: topic-id>:主题id

--partitions <Integer: # of partitions>:主题的partition

新增

命令

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --create --topic wxj2

效果

查看topic列表

命令

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --list

效果

查看topic详情(描述)

命令

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --describe --topic wxj2

效果

修改

命令

以修改主题partiion数量为例

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --alter --topic wxj2 --partitions 3

再次查看topic的描述发现分区完成

删除

命令

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --delete --topic wxj2

kafka-console-producer.sh

标准输入读数据,发送到Kafka的工具

常用选项如下:

--bootstrap-server:kafka服务器ip:port,必须的

--topic <String: topic> :Kafka主题,必须的

--sync:同步发送

--compression-codec [String: compression-codec] :压缩方式,'none','gzip', 'snappy', 'lz4', , 'zstd',默认gzip.

使用示例

bash 复制代码
kafka-topics.sh --bootstrap-server=127.0.0.1:9092 --create --topic demo
kafka-console-producer.sh  --bootstrap-server=127.0.0.1:9092 --topic demo

kafka-console-consumer.sh

常用选项如下:

--bootstrap-server:kafka服务器ip:port,必须的

--topic <String: topic> :Kafka主题,必须的

--group <String: consumer group id>:消费者组id

--key-deserializer <String: deserializer for key>:key反序列化,默认是org.apache.kafka.common.serialization.StringDeserializer

--value-deserializer <String: deserializer for values>:value反序列化,默认是org.apache.kafka.common.serialization.StringDeserializer

--offset <String: consume offset>:消费的offset

--partition <Integer: partition>:消费的分区

使用示例

bash 复制代码
kafka-console-consumer.sh  --bootstrap-server=127.0.0.1:9092 --topic demo
kafka-console-consumer.sh  --bootstrap-server=127.0.0.1:9092 --topic demo --partition 0 --offset 2

上述命令的使用方法是进入到了docker容器kafka中了,要是不想进入环境直接运行命令的示例是

bash 复制代码
docker exec -it c0c7 /opt/kafka/bin/kafka-topics.sh  --bootstrap-server=127.0.0.1:9092 --create --topic demo

效果:

相关推荐
m0_515790415 小时前
【深度学习实战(55)】记录一次在新服务器上使用docker的流程
docker
草明5 小时前
docker stats 增加一列容器名称的显示
java·开发语言·docker
Rookie小强6 小时前
kafka的rebalance机制是什么
分布式·kafka
终端行者6 小时前
jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
服务器·分布式·jenkins
楚禾Noah7 小时前
【通用常识】YAML 中的高阶语法
运维·docker·容器
东心十15 小时前
Win11安装WSL、Docker Desktop
运维·docker·容器
预判你的代码20 小时前
Docker 快速下载Neo4j 方法记录
docker·容器·neo4j
计算机小手20 小时前
基于 Flask 与 Milvus 构建高效图片搜索引擎,可通过API接入,支持Docker一键部署
经验分享·docker·flask·开源软件·milvus
码农小灰20 小时前
Kafka消息持久化机制全解析:存储原理与实战场景
java·分布式·kafka
Raisy_21 小时前
05 ODS层(Operation Data Store)
大数据·数据仓库·kafka·flume