转载自:https://my.oschina.net/zhangxufeng/blog/3007634
非常感谢原文作者,这里担心原文丢失,所以拷贝过来了,格式就没细调了。
创建主题
sh kafka-topics.sh --zookeeper
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic my-topic --replication-factor 2 --partitions 2
增加主题数量
sh kafka-topics.sh --zookeeper
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic my-topic --partitions 3
删除主题
sh kafka-topics.sh --zookeeper
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic my-topic
展示所有的主题
sh kafka-topics.sh --zookeeper
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --list
展示所有主题的详细信息
sh kafka-topics.sh --zookeeper
参数
--topics-with-overrides 列出所有覆盖了默认配置的主题
--under-replicated-partitions 列出所有处于不同步状态的主题
--unavailable-partitions 列出所有没有leader的分区,也就是处于不可用状态的分区
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --describe
生产者吞吐量测试
sh kafka-producer-perf-test.sh --topic
示例:
sh kafka-producer-perf-test.sh --topic test-topic --num-records 500000 --record-size 200 --throughput -1 --producer-props bootstrap.servers=localhost:9092,localhost:9093,localhost:9094 acks=-1
消费者吞吐量测试
sh kafka-consumer-perf-test.sh --broker-list
示例:
sh kafka-consumer-perf-test.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --messages 500000 --topic test-topic
展示所有的group
旧版将group信息保存在zookeeper上
sh kafka-consumer-groups.sh --zookeeper
新版将group信息保存在broker上
sh kafka-consumer-groups.sh --bootstrap-server
示例:
sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
获取群组的详细信息
sh kafka-consumer-groups.sh --bootstrap-server
示例:
sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
删除群组
sh kafka-consumer-groups.sh --bootstrap-server
示例:
sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group my-group
导出偏移量
sh kafka-run-class.sh kafka.tools.ExportZkOffsets --zkconnect localhost:2181/kafka --group connect-dump-kafka-config --output-file offsets.log
导入偏移量
sh kafka-run-class.sh kafka.tools.ImportZkOffsets --zkconnect localhost:2181/kafka --input-file offsets.log
动态添加可用配置
sh kafka-configs.sh --zookeeper
示例:
sh kafka-configs.sh --zookeeper localhost:2181/kafka --alter --entity-type topics --entity-name customerContacts --add-config retention.ms=3600000
覆盖客户端默认配置
sh kafka-configs.sh --zookeeper
说明:
这里的客户端配置现阶段只允许修改如下两个:
producer_bytes_rate 表示单个生产者每秒钟可以往单个broker上生成的消息字节数
consumer_bytes_rate 表示单个消费者每秒钟可以从单个broker上读取的消息字节数
列出被覆盖的配置
sh kafka-configs.sh --zookeeper
移除被覆盖的配置
sh kafka-configs.sh --zookeeper
首选首领选举
sh kafka-preferred-replica-election.sh --zookeeper
指定文件的方式进行首领选举
sh kafka-preferred-replica-election.sh --zookeeper
{
"partitions": [
{
"partition": 1,
"topic": "foo"
},
{
"partition": 2,
"topic": "foobar"
}
]
}
分区重新分配
指定需要进行分区重新分配的topics,并且获取重分配方案
执行该命令之后,kafka会返回指定topics的当前分区情况,和将要进行重分配的方案,这里在进行重分配之前
尽量将现有的方案放在指定文件中进行保存,以方便重分配失败时可以回滚到现有方案
sh kafka-reassign-partitions.sh --zookeeper localhost:2181/kafka --generate --topics-to-move-json-file topics.json --broker-list 0,1,2
topics.json 指定需要进行重新分配的topics
{
"topics": [
{
"topic": "customerContacts"
},
{
"topic": "customerCountries"
}
],
"version": 1
}
进行分区重分配
这里reassignment.json中保存了kafka返回的建议进行的重分配的方案
sh kafka-reassign-partitions.sh --zookeeper localhost:2181/kafka --execute --reassignment-json-file reassign.json
查看分区重分配进度
sh kafka-reassign-partitions.sh --zookeeper localhost:2181/kafka --verify --reassignment-json-file reassign.json
解码日志片段,并且显示消息的数据内容
示例中没有目录相关的信息,在实际使用时需要注意目录问题
sh kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.log --print-data-log
验证分区副本的一致性
sh kafka-replica-verification.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic-white-list 'my-*'
控制台消费者
使用控制台的方式消费消息
sh kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic my-topic
可选参数:
这里topic,whitelist和blacklist三个参数默认只能选择一个
--whitelist 指定白名单
--blacklist 指定黑名单
指定消费者的其他参数信息
--consumer.config CONFIGFILE 通过配置文件的方式指定其他参数信息
--consumer-property KEY=VALUE 通过键值对的形式传递参数,多个则以逗号隔开
消息格式化器除了默认的还有三种
kafka.tools.LoggingMessageFormatter 将日志输出到日志中,日志级别为INFO
kafka.tools.ChecksumMessageFormatter 只打印消息的校验和
kafka.tools.NoOpMessageFromatter 读取消息但不进行任何打印
对于标准格式化器,其有一些非常有用的配置项,可以通过--property命令行参数传递给它
print.timestamp 打印每个消息的时间戳
print.key 如果被设为true,除了打印消息的值外,还会打印消息的键
key.separator 打印消息的键和值所使用的分隔符
line.separator 指定消息之间的分隔符
key.deserializer 指定打印消息的键所使用的反序列化类名
value.deserializer 指定打印消息的值所使用的反序列化类名
--formatter CLASSNAME 指定消息格式化器的类名,用于解码消息,默认为kafka.tools.DefaultFormatter
--from-beginning 指定从最旧的消息开始读取数据
--max-messages NUM 指定在退出之前最多读取NUM个消息
--partition NUM 指定只读取ID为NUM的分区
读取偏移量主题
sh kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic __consumer_offsets --formatter 'kafka.coordinator.GroupMetadataManager$OffsetsMessageFormatter' --max-messages 1
控制台生产者
在控制台发送消息
sh kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic my-topic
可选参数:
--key-serializer CLASSNAME 指定消息键的编码器类名
--value-serializer CLASSNAME 指定消息值的编码器类名
--compression-codec STRING 指定生成消息所使用的压缩类型,可以是none,gzip,snappy或lz4,默认为gzip
--sync 指定以同步的方式生成消息