zk/kafka集群管理常用命令

1.创建topic(test)

[root@kafka02 kafka-logs]# /apprun/kafka/bin/kafka-topics.sh --create -zookeeper 192.168.109.139:2181 -topic test -replication-factor 2 -partitions 3

 

 

 --create 创建

-zookeeper 一般配置集群,这里随意写了一台

-topic test 主题名称test

-replication-factor 2 副本因子,副本数为2,小于等于brokers数(集群数)

-partitions 3 分区数量,分区过多会影响读写性能

 

2.查看topic

只看主题名称

[root@kafka02 version-2]# /apprun/kafka/bin/kafka-topics.sh -zookeeper 192.168.109.139:2181 --list

查看有哪些主题

[root@kafka02 kafka-logs]# /apprun/kafka/bin/kafka-topics.sh --describe -zookeeper 192.168.109.139:2181

[root@kafka02 kafka-logs]# /apprun/kafka/bin/kafka-topics.sh --describe -zookeeper 192.168.109.139:2181 --topic test

 

/******修改主题的分区数
/apprun/kafka/bin/kafka-topics.sh -zookeeper 192.168.109.139:2181 --alter --topic test --partitions 3
警告:如果为具有键的主题增加分区,则将影响消息的分区逻辑或排序

修改配置项
kafka-topics.sh --zookeeper localhost:2281 --alter --topic KafkaTestTopic --config flush.messages=1
警告:从此脚本更改主题配置已被弃用,可能会在未来版本中删除。
接下来,请使用kafka-config .sh来实现这个功能

删除配置项
kafka-topics.sh --zookeeper localhost:2281 --alter --topic KafkaTestTopic --delete-config flush.messages
警告:从此脚本更改主题配置已被弃用,可能会在未来版本中删除。
接下来,请使用kafka-config .sh来实现这个功能

*****/

 

 

 3.为topic(test)创建producer:

[root@kafka01 ~]# /apprun/kafka/bin/kafka-console-producer.sh -broker-list 192.168.109.139:9092 -topic test

 

4.消费topic(test),创建消费者(组)

[root@kafka03 kafka-logs]# /apprun/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.109.139:9092 -topic test

 

 

 

 5.查看消费情况:

(老版:)

进入zookeeper的客户端界面:./zkCli.sh(在zookeeper目录的bin下)

查看目录:ls /consumers

例如其中一个消费组名:console-consumer-99082

 

 

 kafka的bin目录下执行:

[root@kafka02 version-2]# /apprun/kafka/bin/kafka-consumer-groups.sh --describe --group console-consumer-99082 --zookeeper 192.168.109.139:2181

标记解释:
TOPIC   PARTITION    CURRENT-OFFSET    LOG-END-OFFSET   LAG    CONSUMER-ID    HOST     CLIENT-ID
topic名字   分区id      当前已消费的条数     总条数      未消费的条数     消费id      主机ip    客户端id

(新版:)

查看有那些 group ID 正在进行消费:

[root@kafka03 kafka-logs]# /apprun/kafka/bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 192.168.109.139:9092 --list

查看指定group.id 的消费者消费情况

[root@kafka03 kafka-logs]# /apprun/kafka/bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 192.168.109.139:9092 --group console-consumer-81077 --describe

 

 

6.kafka消费者如何才能从头开始消费某个topic的全量数据

[root@kafka03 kafka-logs]# /apprun/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.109.139:9092 --from-beginning --topic test

 

 

7.从最后消耗的偏移量中获取消息.

 可以使用控制台消费者来读取上次消耗的偏移量.在调用kafka-console-consumer时添加consumer.config标志.

配置/apprun/kafka/config/consumer.properties  具体配置网上查看(group.id=testwang-consumer-group)

[root@kafka02 version-2]# /apprun/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.109.139:9092 --topic test --consumer.config /apprun/kafka/config/consumer.properties

 

 

将消费组testwang-consumer-group 停掉或阻塞,然后我们在生产一些消息(a7;a8;a9;b1;b2;b3;b4;b5),然后我在启动消费组testwang-consumer-group 

[root@kafka02 version-2]# /apprun/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.109.139:9092 --topic test --consumer.config /apprun/kafka/config/consumer.properties

我们可以看出是从未消费的地方开始消费的

 

 

 

 

/**** 

8.修改某个消费组的偏移量(offset)备注:--reset-offsets是从0.11.*后支持,

如果是0.10.*的版本可以如下操作:

a.下载0.11.*或更新版本

b.使用0.11.*或更新版本的脚本即可(kafka-consumer-groups.sh),不过有的功能可能会提示接口版本问题。例如--describe提示kafka服务端接口版本过低。

 

/apprun/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.109.139:9092 --group testwang-consumer-group --topic test:0 --reset-offsets --to-earliest –execute
将test topic的消费组testwang-consumer-group的0和1分区的偏移量设置为最旧
--topic test:0,1 --reset-offsets --to-latest –execute
将test topic的消费组testwang-consumer-group的所有分区的偏移量设置为1000
--topic test --reset-offsets --to-offset 1000 –execute
--reset-offsets后可以跟的其他用法:--to-current:把位移调整到分区当前位移
--reset-offsets后可以跟的其他用法:--shift-by N: 把位移调整到当前位移 + N处,注意N可以是负数,表示向前移动
--reset-offsets后可以跟的其他用法:--to-datetime <datetime>:把位移调整到大于给定时间的最早位移处,datetime格式是yyyy-MM-ddTHH:mm:ss.xxx,比如2017-08-04T00:00:00.000

****/

 

9.如何彻底删除Kafka中的topic

配置文件:delete.topic.enable=true

[root@kafka02 kafka-logs]# /apprun/kafka/bin/kafka-topics.sh --delete -zookeeper 192.168.109.139:2181 -topic test

 

 

 

 

 

 

 数据目录下无topic分区目录,zk中无记录

 

 

 

备注(如果未设置成delete.topic.enable=true;第一步:上面命令删除,第二步:进入zk删除三个目录①rmr /brokers/topics/market ②rmr /admin/delete_topics/market③rmr /config/topics/market;第三步:删除数据目录下的topic名目录;第四步:重启kafka)

再次重建同名topic消费:

 

 

 

 

10.压测:

[root@kafka01 apprun]# /apprun/kafka/bin/kafka-producer-perf-test.sh --topic test --num-records 1000000 --record-size 15000 --throughput -1 --producer-props bootstrap.servers=192.168.109.138:9092,192.168.109.139:9092,192.168.109.140:9092 acks=1

 

 

acks 消息确认模式,-1 表示需要确认所有副本都写入成功,1 表示只需确认一个副本写入成功,0 表示无需确认。
--topic topic 名称,本例为 test_perf
--num-records 总共需要发送的消息数,本例为 1000000
--record-size 每个记录的字节数,本例为 15000
--throughput 每秒钟发送的记录数,本例为 -1,表示不做限制
--producer-props bootstrap.servers=localhost:9092 发送端的配置信息,本例只指定了 kafka 的链接信息
--producer-num-retries 一个消息失败发送重试次数
--request-timeouts-ms 一个消息请求发送超时时间
消息体的大小,我们可以根据实际的业务场景构造合适的消息大小,例如统计一批消息的平均大小:

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.109.138:9092,192.168.109.139:9092,192.168.109.140:9092 --topic test  --max-messages=100 | wc

确定了消息体大小,和 acks 之后,可以调整 num-records 和 throughput,保证有足够的消息数量和速率。

posted on 2021-10-21 17:35  NG-承  阅读(50)  评论(0)    收藏  举报

导航