kafka常用命令总结

1、集群管理
1.1、启动broker
bin/kafka-server-start.sh config/server.properties &
## 或者
bin/kafka-server-start.sh -daemon config/server.properties
1.2、关闭broker
bin/kafka-server-stop.sh
2、主题操作
2.1、创建主题

创建主题有多种方式:通过kafka-topic.sh命令行工具创建、API方式创建、直接向zookeeper的/brokers/topics路径下写入节点、auto.create.topics.enable为true时直接发送消息创建topic。通常使用前两种方式创建。

创建主题时用到三个参数:

  • –topic :主题名字
  • –partitions :分区数量
  • –replication-factor :副本因子

副本因子不能超过集群broker数量。

bin/kafka-topics.sh --zookeeper cluster101:2181 --create --topic demo --partitions 3 --replication-factor 3
2.2、删除主题

若删除topic,要确保delete.topic.enable设置为true,不然无法删除topic。

 bin/kafka-topics.sh --zookeeper cluster:2181 --delete --topic del_topic
 
 Topic third is marked for deletion.
 Note: This will have no impact if delete.topic.enable is not set to true.

该命令只是标记为待删除状态。删除逻辑由controller在后台默默执行,用户无法感知进度。需要列出topic看是否还在才能确定。

2.3、删除主题(手动)

手动删除过程如下:

  1. 关闭所有broker
  2. 删除Zookeeper路径/brokers/topics/TOPICNAME,命令:rmr /brokers/topics/TOPICNAME
  3. 删除每个broker中数据实际的存储分区目录,名字可能是 TOPICNAME-NUM,位置由server.properties文件log.dirs配置指定, 默认是/tmp/kafka-logs
  4. 重启所有broker
2.4、列出所有主题
./kafka-topics.sh --zookeeper 172.23.163.127:2181,172.23.163.128:2181,172.23.163.129:2181 --list

image-20220913100655997

2.5、查看主题详情
./kafka-topics.sh --zookeeper 172.23.163.127:2181,172.23.163.128:2181,172.23.163.129:2181 --describe --topic passLogSave

image-20220913100919340

3、消费和生产

kafka-console-consumer.shkafka-console-producer.sh也许是用户最常用的两个Kafka脚本工具。它们让用户可以方便的在集群中测试consumer和producer。

3.1、生产者控制台
./kafka-console-producer.sh --broker-list cluster101:9092 --topic test
3.2、消费者控制台
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

--consumer-property可以指定消费者参数,如 group.id=test_group。多个参数可以用逗号隔开。

./kafka-console-consumer.sh --bootstrap-server cluster101:9092 --topic test --consumer-property group.id=test_group

4、分区管理
4.1、增加分区

增加分区可以扩展主题容量、降低单个分区的负载。

./kafka-topics.sh --zookeeper cluster101:2181 --alter --topic incr_part --partition 10
4.2、首选leader的选举

首选leader是指创建topic时选定的leader就是分区的首选leader,创建topic时会在broker之间均衡leader。

在kafka集群中,broker服务器难免会发生宕机或崩溃的情况。这种情况发生后,该broker上的leader副本变为不可用,kafka会将这些分区的leader转移到其它broker上。即使broker重启回来, 其上的副本也只能作为跟随者副本,不能对外提供服务。随着时间的增长,会导致leader的不均衡,集中在一小部分broker上。

可以通过kafka-preferred-replica-election.sh工具来手动触发首选的副本选举。

./kafka-preferred-replica-election.sh --zookeeper cluster101:2181
4.3、分区重分配

有些时候,你可能需要调整分区的分布:

  • 主题的分区在集群中分布不均,导致不均衡的负载
  • broker离线造成分区不同步
  • 新加入的broker需要从集群里获得负载

可以使用kafka-reassign-partitions.sh工具来调整分区的分布情况:

  • 根据broker列表和主题列表生成迁移计划
  • 执行迁移计划
  • 验证分区重分配的进度和完成情况(可选)

生成迁移计划需要创建一个包含主题清单的JSON文件:

{
	"topics": [
		{
			"topic": "reassign"
		}
	],
	"version": 1
}

生成迁移计划:

./kafka-reassign-partitions.sh --zookeeper cluster101:2181 --topics-to-move-json-file topics.json --broker-list 0,1,2 --generate

Current partition replica assignment
{"version":1,"partitions":[{"topic":"reassign","partition":1,"replicas":[1,0]},{"topic":"reassign","partition":3,"replicas":[1,0]},{"topic":"reassign","partition":6,"replicas":[0,1]},{"topic":"reassign","partition":4,"replicas":[0,1]},{"topic":"reassign","partition":0,"replicas":[0,1]},{"topic":"reassign","partition":7,"replicas":[1,0]},{"topic":"reassign","partition":2,"replicas":[0,1]},{"topic":"reassign","partition":5,"replicas":[1,0]}]}

Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"reassign","partition":1,"replicas":[0,2]},{"topic":"reassign","partition":4,"replicas":[0,1]},{"topic":"reassign","partition":6,"replicas":[2,1]},{"topic":"reassign","partition":3,"replicas":[2,0]},{"topic":"reassign","partition":0,"replicas":[2,1]},{"topic":"reassign","partition":7,"replicas":[0,2]},{"topic":"reassign","partition":2,"replicas":[1,0]},{"topic":"reassign","partition":5,"replicas":[1,2]}]}

终端中会输出两个json对象,分别为当前的分区分配情况和建议的分区分配方案。第一个json对象保存起来可以用于回滚,第二个json对象保存起来作为分区分配方案,这里保存为reassign.json。

执行方案:

./kafka-reassign-partitions.sh --zookeeper cluster101:2181 --execute --reassignment-json-file reassign.json

Current partition replica assignment

{"version":1,"partitions":[{"topic":"reassign","partition":1,"replicas":[1,0]},{"topic":"reassign","partition":3,"replicas":[1,0]},{"topic":"reassign","partition":6,"replicas":[0,1]},{"topic":"reassign","partition":4,"replicas":[0,1]},{"topic":"reassign","partition":0,"replicas":[0,1]},{"topic":"reassign","partition":7,"replicas":[1,0]},{"topic":"reassign","partition":2,"replicas":[0,1]},{"topic":"reassign","partition":5,"replicas":[1,0]}]}

Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.

验证结果:

./kafka-reassign-partitions.sh --zookeeper cluster101:2181 --verify --reassignment-json-file reassign.json

Status of partition reassignment:
Reassignment of partition [reassign,0] completed successfully
Reassignment of partition [reassign,1] completed successfully
Reassignment of partition [reassign,3] completed successfully
Reassignment of partition [reassign,7] completed successfully
Reassignment of partition [reassign,5] completed successfully
Reassignment of partition [reassign,6] completed successfully
Reassignment of partition [reassign,2] completed successfully
Reassignment of partition [reassign,4] completed successfully
5、消费者组
5.1、查看消费者组
./kafka-consumer-groups.sh --bootstrap-server 172.23.163.127:9092,172.23.163.128:9092,172.23.163.129:9092 --list

要获取指定的消费者组详细信息,使用–describe来代替–list,并通过–group来指定特定的消费者组。

./kafka-consumer-groups.sh --bootstrap-server cluster101:9092 --describe --group test
5.2、删除消费者组

新版本消费者组不需要删除,因为它在最后一个成员离开时会自动删除。

./kafka-consumer-groups.sh --zookeeper cluster101:2181 --delete --group t_group
6、测试脚本
6.1、生产者吞吐量测试
./kafka-producer-perf-test.sh --topic demo --num-records 100000 --record-size 200 --throughput 20000 --producer-props bootstrap.servers=192.168.180.64:9092 acks=-1

99962 records sent, 19992.4 records/sec (3.81 MB/sec), 2.8 ms avg latency, 387.0 ms max latency.
100000 records sent, 19968.051118 records/sec (3.81 MB/sec), 2.78 ms avg latency, 387.00 ms max latency, 1 ms 50th, 25 ms 95th, 37 ms 99th, 39 ms 99.9th.
  • --topic topic名称;
  • --num-records 总共需要发送的消息数,本例为1000000;
  • --record-size 每个记录的字节数,本例为200
  • --throughput 每秒钟发送的记录数,本例为20000
  • --producer-props bootstrap.servers=cluster101:9092 发送端的配置信息
  • acks 消息确认设置
6.2、消费者吞吐量测试
./kafka-consumer-perf-test.sh --topic demo --broker-list 192.168.180.64:9092 --messages 50000

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2022-09-13 11:06:40:149, 2022-09-13 11:06:40:739, 9.6285, 16.3195, 50481, 85561.0169, 1663038400528, -1663038399938, -0.0000, -0.0000
7、其它脚本工具
7.1、查看topic当前消息数
./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list  192.168.180.64:9092 --topic demo --time -1
demo:0:100000

–time -1 表示最大位移

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.180.64:9092 --topic demo --time -2
demo:0:0

–time -2 表示最早位移

8、对症下药
8.1、查看是否有消息堆积的情况
./kafka-consumer-groups.sh --bootstrap-server 172.23.163.127:9092,172.23.163.128:9092,172.23.163.129:9092 --describe --group verMongo

image-20220913094607635

  • PARTITION 分区
  • CURRENT-OFFSET 当前消费消息的位移值。
  • LOG-END-OFFSET 生产的消息的位移值。
  • LAG 值CURRENT-OFFSETLOG-END-OFFSET的差值),值越大说明消息堆积越是严重。

参考博客 https://zhuanlan.zhihu.com/p/91811634

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka是一个分布式流式数据平台,用于高效地存储、处理和传输实时的流式数据。Kafka2.2是Kafka的一个特定版本,提供了一系列的命令,用于管理和操作Kafka集群。下面是对Kafka2.2命令文档的回答。 Kafka2.2命令文档包含了一些重要的命令,用于配置、启动和监控Kafka集群。其中包括以下几个主要的命令: 1. bin/kafka-topics.sh:该命令用于创建、修改和管理Kafka的topic。可以使用该命令来创建新的主题、查看已存在的主题以及删除主题。通过该命令可以设置主题的分区数和副本因子等属性。 2. bin/kafka-console-producer.sh:这个命令用于从终端输入数据并将其作为消息发送到指定的topic中。通过该命令可以模拟消息的生产者,并向Kafka集群发送消息。 3. bin/kafka-console-consumer.sh:该命令用于从指定的topic中消费消息,并将其打印到终端。可以使用该命令来模拟消息的消费者,并从Kafka集群中接收消息。 4. bin/kafka-consumer-groups.sh:该命令用于管理和监控消费者组。可以使用该命令查看消费者组的偏移量(offset)和消费的速度,以便进行调优和监控。 5. bin/kafka-configs.sh:该命令用于管理Kafka集群的配置文件。可以使用该命令来修改Kafka集群的配置,例如增加或删除broker、修改主题的配置等。 Kafka2.2命令文档还包含了其他一些命令,用于执行一些高级管理操作,例如复制和迁移分区、生成和消费压缩的消息等。 总之,Kafka2.2命令文档提供了一系列命令,用于管理和操作Kafka集群。通过这些命令,用户可以方便地创建、修改和管理Kafka的topic,发送和接收消息,以及进行集群的监控和调优。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值