kafka命令行工具大全

  • 创建主题
sh kafka-topics.sh --zookeeper <zookeeper connect> --create --topic <string> --replication-factor <integer> --partitions <integer> --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 <zookeeper connect> --alter --topic <string> --partitions <integer>

示例:

sh kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic my-topic --partitions 3
  • 删除主题
sh kafka-topics.sh --zookeeper <zookeeper connect> --delete --topic <string>

示例:

sh kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic my-topic
  • 展示所有的主题
sh kafka-topics.sh --zookeeper <zookeeper connect> --list

示例:

sh kafka-topics.sh --zookeeper localhost:2181/kafka --list
  • 展示所有主题的详细信息
sh kafka-topics.sh --zookeeper <zookeeper connect> --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 <topic> --num-records <integer> --record-size <integer> --throughput -1 --producer-props bootstrap.servers=<kafka connect> 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 <kafka connect> --messages <integer> --topic <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 <zookeeper connect> --list
# 新版将group信息保存在broker上
sh kafka-consumer-groups.sh --bootstrap-server <kafka connect> --list

示例:

sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
  • 获取群组的详细信息
sh kafka-consumer-groups.sh --bootstrap-server <kafka connect> --describe --group <group>

示例:

sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
  • 删除群组
sh kafka-consumer-groups.sh --bootstrap-server <kafka connect> --delete --group <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 <zookeeper connect> --alter --entity-type topics --entity-name <topic name> --add-config <key>=<value>[,<key>=<value>...]

示例:

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 <zookeeper connect> --alter --entity-type clients --entity-name <client ID> --add-config <key>=<value>[,<key>=<value>...]

说明:

# 这里的客户端配置现阶段只允许修改如下两个:
producer_bytes_rate 表示单个生产者每秒钟可以往单个broker上生成的消息字节数
consumer_bytes_rate 表示单个消费者每秒钟可以从单个broker上读取的消息字节数
  • 列出被覆盖的配置
sh kafka-configs.sh --zookeeper <zookeeper connect> --describe --entity-type topics --entity-name <topic name>
  • 移除被覆盖的配置
sh kafka-configs.sh --zookeeper <zookeeper connect> --alter --entity-type topics --entity-name <topic name> --delete-config <key>=<value>[,<key>=<value>...]
  • 首选首领选举
sh kafka-preferred-replica-election.sh --zookeeper <zookeeper connect>
  • 指定文件的方式进行首领选举
sh kafka-preferred-replica-election.sh --zookeeper <zookeeper connect> --path-to-json-file <partitions.json>
{
    "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字符

转载于:https://my.oschina.net/zhangxufeng/blog/3007634

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值