irpas技术客

kafka命令行操作大全_phial03_kafka命令行

大大的周 2768

最近利用flink使用一个流式SQL处理平台,利用kafka, mysql, hive等组件比较多,命令行突然间需要操作一次记不住命令很麻烦,索性直接整理成笔记。

在 0.9.0.0 之后的 Kafka,出现了几个新变动,一个是在 Server 端增加了 GroupCoordinator 这个角色,另一个较大的变动是将 topic 的 offset 信息由之前存储在 zookeeper 上改为存储到一个特殊的 topic(__consumer_offsets)中。

启动 Kafka

后台常驻方式,带上参数 -daemon,如:

bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

指定 JMX port 端口启动,指定 jmx,可以方便监控 Kafka 集群

JMX_PORT=9991 bin/kafka-server-start.sh -daemon ./config/server.properties 停止 Kafka bin/kafka-server-stop.sh Topic bin/kafka-topics.sh --zookeeper ZOOKEEPER_HOST1:PORT1,ZOOKEEPER_HOST2:PORT2 --create --replication-factor REPLICA_NUM --partitions PARTITION_NUM --topic TOPIC_NAME 创建 Topic

参数 --topic 指定 Topic 名,--partitions 指定分区数,--replication-factor 指定副本数:

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

注意,如果配置文件 server.properties 指定了 Kafka 在 zookeeper 上的目录,则参数也要指定,否则会报无可用的 brokers(下面部分命令也有同样的情况),如:

bin/kafka-topics.sh --create --zookeeper localhost:2181/kafka --replication-factor 1 --partitions 1 --topic test

partions: kafka通过分区策略,将不同的分区分配到一个集群中的broker上,然后消息会通过负载均衡发不到不同的分区上,consumer会监测偏移量来获取哪个分区有新数据,从而从该分区上拉取消费,分区数越多,在一定程度上会提升消息处理的吞吐量,但因为kafka是基于文件进行读写,因此也需要打开更多的文件句柄,也会增加一定的性能开销。分区可以根据消费者数量定义,通常为消费者个数*配置项中的线程数. replication-factor:用来设置主题的副本数。每个主题可以有多个副本,副本位于集群中不同的broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败。

列出所有 Topic bin/kafka-topics.sh --list --zookeeper localhost:2181 查看 Topic bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test 增加 Topic 的 partition 数 bin/kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic test --partitions 5 查看topic的状态和分区负载详情 bin/kafka-topics.sh --zookeeper ZOOKEEPER_HOST1:PORT1,ZOOKEEPER_HOST2:PORT2 --describe --topic TOPIC_NAME

如果发现以下现象说明kafka异常: 某个topic的每个分区,同步副本数量和设定的副本数量不一致; 某个topic的每个分区,leader的id数值是-1或者none;

查看 topic 指定分区 offset 的最大值或最小值

time 为 -1 时表示最大值,为 -2 时表示最小值:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list 127.0.0.1:9092 --partitions 0 查询topic的offset的范围

查询offset最小值

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list slave6:9092 -topic videoplay --time -2

查询offset最大值

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list slave6:9092 -topic videoplay --time -1 重置消费者offset bin/kafka-consumer-groups.sh --bootstrap-server BORKER_HOST1:PORT1,BORKER_HSOT2:PORT2 --group GROUP_NAME --reset-offsets --execute --to-offset NEW_OFFSET --topic TOPIC_NAME bin/kafka-consumer-groups.sh --bootstrap-server BORKER_HOST1:PORT1,BORKER_HSOT2:PORT2 --group GROUP_NAME --reset-offsets --execute --to-earliest/--to-latest --topic TOPIC_NAME 删除 Topic bin/kafka-topics.sh --zookeeper localhost:2181 --topic test --delete 删除topic下的数据 bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test_topic --config cleanup.policy=delete 给指定TOPIC设置消息存储时间 – 针对数据量大,磁盘小的情况 查看某一个topic设置过期时间

259200000 – 72 小时 86400000 – 24 小时 43200000 – 12 小时 28800000 – 8 小时 10800000 – 3 小时

bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-name test_topic --entity-type topics 单独对某一个topic设置过期时间(下列两条命令都可用) bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-name test_topic --entity-type topics --add-config retention.ms=86400000 bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name test_topic --alter --add-config retention.ms=259200000 生产消息 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 消费消息 从头开始 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning 从尾部开始

从尾部开始取数据,必需要指定分区:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0 指定分区 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0 取指定个数 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0 --max-messages 1 消费者 Group 消费指定 Group bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test -group test_group --from-beginning 消费者 Group 列表 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list 查看消费group状态和消费详情 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --describe

输出:

Consumer group 'test_group' has no active members. TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test 0 5 5 0 - - - # CURRENT-OFFSET: 当前消费者群组最近提交的 offset,也就是消费者分区里读取的当前位置 # LOG-END-OFFSET: 当前最高水位偏移量,也就是最近一个读取消息的偏移量,同时也是最近一个提交到集群的偏移量 # LAG:消费者的 CURRENT-OFFSET 与 broker 的 LOG-END-OFFSET 之间的差距 设置consumer group的offset //启动zookeeper client zookeeper/bin/zkCli.sh //通过下面命令设置consumer group:DynamicRangeGroup topic:DynamicRange partition:0的offset为1288: set /consumers/DynamicRangeGroup/offsets/DynamicRange/0 1288 // 或者: 注意如果你的kafka设置了zookeeper root,比如为/kafka,那么命令应该改为: set /kafka/consumers/DynamicRangeGroup/offsets/DynamicRange/0 1288 // 重启kafka zookeeper 删除 group 中的 Topic bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --topic test --delete 删除 Group bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --delete 平衡 leader bin/kafka-preferred-replica-election.sh --bootstrap-server localhost:9092 自带压测工具 bin/kafka-producer-perf-test.sh --topic test --num-records 100 --record-size 1 --throughput 100 --producer-props bootstrap.servers=localhost:9092

作者:yongxinz 链接:参考地址

Kafka常用命令合集 https://·/toutou/p/kafka_command.html

kafka 命令行 生产消费数据,查看偏移量,修改偏移量 https://blog.csdn.net/ispringmw/article/details/108834144 https://blog.csdn.net/qq_29116427/article/details/80206125


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #kafka命令行 #MySQL # #0900