2019独角兽企业重金招聘Python工程师标准>>>
- 创建主题
sh kafka-topics.sh --zookeeper --create --topic --replication-factor --partitions --if-not-exists
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic my-topic --replication-factor 2 --partitions 2
- 增加主题数量
sh kafka-topics.sh --zookeeper --alter --topic --partitions
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic my-topic --partitions 3
- 删除主题
sh kafka-topics.sh --zookeeper --delete --topic
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic my-topic
- 展示所有的主题
sh kafka-topics.sh --zookeeper --list
示例:
sh kafka-topics.sh --zookeeper localhost:2181/kafka --list
- 展示所有主题的详细信息
sh kafka-topics.sh --zookeeper --describe
# 参数
--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 --num-records --record-size --throughput -1 --producer-props bootstrap.servers= acks=-1
示例:
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 --messages --topic
示例:
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 --list
# 新版将group信息保存在broker上
sh kafka-consumer-groups.sh --bootstrap-server --list
示例:
sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
- 获取群组的详细信息
sh kafka-consumer-groups.sh --bootstrap-server --describe --group
示例:
sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
- 删除群组
sh kafka-consumer-groups.sh --bootstrap-server --delete --group
示例:
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 --alter --entity-type topics --entity-name --add-config =[,=...]
示例:
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 --alter --entity-type clients --entity-name --add-config =[,=...]
说明:
# 这里的客户端配置现阶段只允许修改如下两个:
producer_bytes_rate 表示单个生产者每秒钟可以往单个broker上生成的消息字节数
consumer_bytes_rate 表示单个消费者每秒钟可以从单个broker上读取的消息字节数
- 列出被覆盖的配置
sh kafka-configs.sh --zookeeper --describe --entity-type topics --entity-name
- 移除被覆盖的配置
sh kafka-configs.sh --zookeeper --alter --entity-type topics --entity-name --delete-config =[,=...]
- 首选首领选举
sh kafka-preferred-replica-election.sh --zookeeper
- 指定文件的方式进行首领选举
sh kafka-preferred-replica-election.sh --zookeeper --path-to-json-file
{
"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 指定以同步的方式生成消息
# 默认的命令行消息读取器是kafka.tools.LineMessageReader,其有一些非常有用的参数,
# 可以通过--property将这些消息传给控制台生产者:
# ignore.error 如果被设置为false,那么在parse.key被设为true或者标准输入里没有包含键的分隔符时
# 就会抛出异常,默认为true
# parse.key 如果被设为false,那么生成消息的键总是null,默认为true
# key.separator 指定消息键和消息值之间的分隔符,默认是Tab字符