kafka-topics.sh
:可以执行大部分与主题相关的操作 (增删改查)
--topic
:主题名称
.
改为_
,例如topic.1
->topic_1
这会导致主题名称冲突--replication-factor
:副本数--partitions
:分区数--if-not-exists
:主题不存在执行创建,如果存在不执行kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my_topic --replication-factor 2 --partitions 2 --if-not-exists
kafka-topics.sh --list --zookeeper localhost:2181
kafka-topics.sh --bootstrap-server localhost:9092 --list
#查看主题详情
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my_topic
#列出ISR数低于配置的分区
kafka-topics.sh --bootstrap-server localhost:9092 --describe --at-min-isr-partitions
--topics-with-overrides
:列出配置参数与集群默认值不同的主题--exclude-internal
:过滤调名称以双下划线开头的主题--under-replicated-partitions
:找出一个或多个副本与首领不同步的分区--at-min-isr-partitions
:列出副本数量与配置最少同步副本一致的分区--under-min-isr-partitions
:列出ISR数小于配置的分区--unavailable-partitions
:查找没有首领的分区增加分区是为了通过降低单个分区的吞吐量来扩展主题容量
kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic my_topic --partitions 16
不支持分区的减少,因为如果减少分区,意味着要删除分区中的数据,所以如果觉得分区不合理
delete.topic.enable=true
,否则即使发送了删除请求也会被忽略。kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic my_topic
消费者组用于协调消费者从多个主题或单个主题的分区中读取消息。
使用kafka-consumer-groups.sh
来进行操作。
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ${消费者组名}
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group ${消费者组名}
删除消费者组会将已保存的偏移量也一起删除。
删除之前需要确保所有的消费者已经关闭,如果删除非空的消费组会抛出异常。
当消费者因为某些原因需要重新读取消息或因为无法正常处理某些消息需要跳过这些时,可以进行偏移量重置
将消费者组的偏移量导出到CSV文件。在需要的时候导入或回滚偏移量
# 导出将topic 偏移量导出到一个offsets.csv文件中
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --export --group my_consumer --topic my_topic --reset-offsets --to-current --dry-run > offsets.csv
将导出的文件中偏移量修改为想要的值,然后再导入进去
导入偏移量之前,需要关闭所有消费者。
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --group my_consumer --from-file offsets.csv --execute
使用
kafka-config.sh
可以在主题、客户端、broker等运行时动态更新配置参数。
#格式
kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-types topics --entity-name my_topic --add-config =,=
#将主题数据保留设置为1小时
kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-types topics --entity-name my_topic --add-config retention.ms=3600000
min.insync.replicas
:用于确认消息最少被几个副本写入(ISR数)unclean.leader.election.enable
:允许一个不同步副本被选举为首领,这样可能会导致数据丢失,但是可以快速恢复Kafka集群max.connections
:broker的最大连接数kafka-configs.sh --bootstrap-server localhost:9092 --describe --entity-type topics --entity-name my_topic
kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-type topics --entity-name my_topic --delete-config retention.ms
kafka-console-producer.sh --topic ${topic} --broker-list localhost:9092
kafka-console-producer.sh --topic ${topic} --bootstrap-server localhost:9092
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ${topic}
#回放所有数据
kafka-console-consumer.sh --bootstrap-server localhost:9091 --topic ${topic} --from-beginning
# 匹配主题
kafka-console-consumer.sh --bootstrap-server localhost:9092 --whitelist 'my.*'
通过使用
--consumer.config
执行消费者配置文件
通过使用--consumer-property
,key是参数名 value是参数值=
--formatter
:执行消息解码的类名
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ${topic} --formatter kafka.tools.ChecksumMessageFormatter
--from-beginning
:指定从旧偏移量开始读取,如果不指定,从最开始读取--max-messages
:指定退出前最多读取多少条消息--parrention
:读取指定分区的数据--offset
:
--skip-message-on-error
:出现错误就跳过消息想要了解某个消费者群组是否在提交偏移量,或者提交的频率,可以通过控制台消费者读取
__consumer_offsets
这个topic来查看
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic __consumer_offsets --from-beginning --max-messages 1 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormater" --consumer-property exclude.internal.topics = false
#给所有主题启动一个首选首领选举
kafka-leader-election.sh --bootstrap-server localhost:9092 --election-type PREFERRED --all-topic-partitions
--topic
:指定具体topic名称--partition
:指定具体的分区broker
的负载分布不均衡,自动首领选举无法解决broker
离线,造成分区分布不均匀假设现在有一个包含4个broker的集群,新添加了2个broker,希望将两个topic迁移到 broker5和broker6中
topics.json
{
"topics":[
{
"topic":"foo1"
},
{
"topic":"foo2"
}
],
"version":1
}
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --topics-to0move-json-file topics.json --broker-list 5,6 --generate
Cruise Control
提供的broker的降级功能来处理,可以安全的将broker的领导全转移出去查看日志片段中的数据
kafka-dump-log.sh --files /tmp/kafka-logs/my_topic-0/00000000000000000000.log
kafka-dump-log.sh --files /tmp/kafka-logs/my_topic-0/00000000000000000000.log --print-data-log