一:主题管理
1:创建主题,分区8个,副本为2(副本数不能超过集群中broker数)
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --create --topic mytopic --replication-factor 2 --partitions 8
2:修改主题分区(主题分区只能添加,不能删除)
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --alter --topic mytopic --partitions 10
3:删除主题
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --delete --topic mytopic
4:列出全部主题
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --list
5:查看主题详细
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --describe
6:列出不同步的主题
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --describe --under-replicated-partition
7:列出没有lender的主题
bin/kafka-topics.sh --bootstrap-server 192.168.1.131:9092 --describe --under-replicated-partition
二:动态默认配置
1:修改主题参数(消息保留时间设为1小时,entitiy-type topics 指明覆盖主题配置)
bin/kafka-configs.sh --zookeeper 192.168.1.131:2181 --alter --entity-type topics --entity-name mytopic --add-config retention.ms=3600000
2:修改brokers默认配置
bin/kafka-configs.sh --bootstrap-server 192.168.1.131:9092 --alter --entity-type brokers --entity-name 0 --add-config num.io.threads=10
3:修改客户端默认配置
bin/kafka-configs.sh --zookeeper 192.168.1.131:2181 --alter --entity-type clients --entity-name admin --add-config producer_bytes-rate=10
4:移除动态配置
bin/kafka-configs.sh --zookeeper 192.168.1.131:2181 —alter —entity-type topics —entity-name mytopic —delete-config retention.ms
5:查看动态配置
bin/kafka-configs.sh --zookeeper 192.168.1.131:2181 —describe —entity-type topics —entity-name mytopic
三:分区管理(Kafka提供两个脚本管理分区,一个用于重新选举首领,一个用于将分区分配给broker,结合这两个工具,就可以实现集群流量的负载均衡。使用多个分区副本可以提升可靠性,不过只有其中一个副本可以成为分区首领,只有首领所在broker可以进行生产和消费活动。Kafka将副本清单第一个同步副本选为首领,但在关闭并重启broker之后,并不会自动恢复原先的首领身份。broker有一个配置可以用于启动自动首领再均衡,不过不建议在生产环境使用该功能。)
1:启动分区选举(kafka默认选举)
bin/kafka-preferred-replica-election.sh --zookeeper 192.168.1.131:2181
2:启动分区选举并指明选举首领(写入在配置文件)
bin/kafka-preferred-replica-election.sh --zookeeper 192.168.126.128:2181 —path-to-json-file partitons.json
3:修改分区副本
- 有时需要修改分区副本,以下时需要修改分区副本的场景
- 1.主题分区在整个集群的不均衡分布造成集群负载不均衡
- 2.broker离线造成分区不同步
- 3.新加入的broker需要从集群获得负载。
- 可以使用Kafka-reassign-partitions.sh 工具来修改分区。
- 第一步:根据broker清单和主题清单生成一组迁移步骤;
- 第二步,执行迁移步骤;
- 第三步:可以使用生成的迁移步骤验证分区重分配的进度和完成情况。
- 示例:为topics.json文件里的主题生成迁移步骤,将这些主题迁移到broker0和broker1上。
- bin/kafka-reassign-partitions.sh --zookeeper 192.168.1.131:2181 —generate —topics-to-move-json-file topics.json —broker-list 0,1
- 这个工具会在控制台输出两个json,分别描述里当前分区和建议分区分配方案,可以把第一个json保存起来,以备回滚。
- 第二个json应该被保存到另一个文件,作为kafka-reassign-partitons.sh工具的输入来执行第二个步骤。
- 示例:使用reassign.json来执行建议的分区分配方案
- bin/kafka-reassign-partitions.sh --zookeeper 192.168.1.131:2181 —execute —reassignment-json-file reassign.json
- 该命令会将指定分区的副本重新分配到新的broker上。
- 在重分配进行过程中或完成之后,可以使用kafka-reassign-partitions.sh工具验证重分配的状态。
- 示例:验证reassign.json文件里指定的分区重分配情况。
- bin/kafka-reassign-partitions.sh --zookeeper 192.168.1.131:2181 —verify —reassignment-json-file reassign.json