Kafka的主题常用命令

本文档详细介绍了Apache Kafka的命令行操作,包括启动Zookeeper和Kafka服务器,创建和查看主题,发送和消费消息,管理消费者组,以及查看和调整offset。此外,还涵盖了消费者API的关键参数设置,以及如何重置和查询消费进度。

Kafka常用命令


#启动ZK 
./bin/zookeeper-server-start.sh ./config/zookeeper.properties  


#启动Kafka 
./bin/kafka-server-start.sh ./config/server.properties 


#创建主题 
kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 1 --replication-factor 1 


#查看主题 
kafka-topics.sh --zookeeper localhost:2181 --list 


#发送消息 
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 


#有key类型消息
./bin/kafka-console-producer.sh --broker-list localhsot:9092 --topic topicName --property parse.key=true
默认消息键与消息值间使用“Tab键”进行分隔,切勿使用转义字符(\t),

#消费消息 
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning 


#有key类型消息
kafka-console-consumer.sh --bootstrap-server hadoop00:9092 --topic test2 --from-beginning --property print.key=true

#删除Kafka主题 kafka_2.11_2.30 
#只需要在当前broker上设置server.properties 
delete.topic.enable=true 
./kafka-topics.sh --zookeeper hadoop00:2181 --delete --topic test1 

#查看主题offset,消息数量 
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list hadoop02:9092 -topic news --time -1 

#查询__consumer_offsets topic所有内容 
kafka-console-consumer.sh --topic __consumer_offsets --bootstrap-server hadoop00:9092 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config ../config/consumer.properties --from-beginning 

#查询消费者组列表 
kafka-consumer-groups.sh --bootstrap-server hadoop00:9092 --list 

#查询消费组消费进度
 kafka-consumer-groups.sh --bootstrap-server hadoop00:9092 --describe --group group01 

#Kafka会使用下面公式计算该group位移保存在__consumer_offsets的哪个分区上 
scala: 
Math.abs("perf-consumer-74133".hashCode)%50 

#Producer Consumer API关键参数 
properties.put("bootstrap.servers", "localhost:9092"); // kafka 集群broker地址情况 
 properties.put("key.serializer",StringDeserializer.class.getName()); // key 反序列化 
 properties.put("value.serializer",StringDeserializer.class.getName()); // value 反序列化 
 props.put("group.id", "my.group.201");// 消费者组,默认值为"",如果为"",会抛错 

#使用config/consumer.properties,需要参数指定 ,可在该配置文件中的配置常用属性,如group.id。也可以不使用该配置文件
kafka-console-consumer.sh --bootstrap-server hadoop00:9092 --topic test --consumer.config ../config/consumer.properties 
相应的--producer.config ... 

comsumer重置offset的策略  
earliest:重置offset为最小的未被消费的offset  
latest:重置offset为最新的offset  
none:没有offset时直接抛出异常 

consumer.poll(timeout)中timeout是控制客户端如果有数据则返回数据,否则客户端阻塞timeout时长持续消费数据 
max.poll.records : consumer一次拿到的最大记录  

max.poll.interval.ms:consumer两次poll的最大间隔( 如果处理线程死掉,则需要max.poll.interval.ms来检测它, kafka默认是300s)。设置过高会使故障检测周期过长。  


7.重置kafka offset 
./kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --to-offset 1000 --topic topicName --execute 
kafka-streams-application-reset.sh --zookeeper hadoop01:2181 --bootstrap-server hadoop01:9092 --application-id xxx --input-topics  xxx 

8.查看组对所有主主题的offset 
/opt/kafka_2.11-2.3.0/bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --group grpUsers  --offsets --describe 


9.打印主题key 

kafka-console-consumer.sh --bootstrap-server sandbox-hdp.hortonworks.com:6667 --topic train --from-beginning --property print.key=true 

会把key打印出来。 

kafka-console-consumer.sh --bootstrap-server sandbox-hdp.hortonworks.com:6667 --topic train --from-beginning --property print.key=false 

只打印值。 

10、查看consumer组内消费的offset  (0.9后不再支持kafka.tools.ConsumerOffsetChecker)
./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group test --topic testKJ1

11.查看主题offset 
/opt/kafka_2.11-2.3.0/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list hadoop01:9092 --topic test-0903 
test:0:1522
test:1:1020
test:2:1258
其中:test:0:1522   #表示分区0 共1522记录 


12.查看index log文件
kafka-run-class.sh kafka.tools.DumpLogSegments --files /tmp/kafka-logs/test-0/00000000000000000000.index
kafka-run-class.sh kafka.tools.DumpLogSegments --files /tmp/kafka-logs/test-0/00000000000001051625.log --print-data-log

--print-data-log可以打印消息内容
 

13.监控各个 topic-partition 在 disk 上的占用空间情况
 kafka-log-dirs.sh  --bootstrap-server hadoop00:9092 --describe --broker-list 0
Querying brokers for log directories information
Received log directory information from brokers 0
{"version":1,"brokers":[{"broker":0,"logDirs":[{"logDir":"/tmp/kafka-logs","error":null,"partitions":[{"partition":"test1112-0","size":0,"offsetLag":0,"isFuture":false},{"partition":"__consumer_offsets-13","size":549,"offsetLag":0,"isFuture":false},{"partition":"__consumer_offsets-46","size":0,"offsetLag":0,"isFuture":false},{"partition":"__consumer_offsets-9","size":0,"offsetLag":0,"isFuture":false},{"partition":"__consumer_offsets-42","size":552,"offsetLag":0,"isFuture":false},{"partition":"test_p2r1-1","size":138,"offsetLag":0,"isFuture":false},....

### Kafka 常用命令列表及使用说明 以下是 Kafka常用命令及其具体用法: #### 1. 创建 Topic 用于创建一个新的 Kafka 主题 (Topic),可以通过 `--partitions` 和 `--replication-factor` 参数设置分区数和副本因子。 ```bash /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181/kafka --replication-factor 1 --partitions 1 --topic test_topic_name ``` 此命令会在 ZooKeeper 中注册新的主题名称并分配分区[^1]。 #### 2. 查看 Topic 列表 列出当前 Kafka 集群中存在的所有主题。 ```bash /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181/kafka ``` 该命令返回集群中的所有活动主题名[^2]。 #### 3. 删除 Topic 删除指定的主题(需确保 Kafka 版本支持动态删除功能)。 ```bash /usr/local/kafka/bin/kafka-topics.sh --delete --zookeeper localhost:2181/kafka --topic test_topic_name ``` 执行成功后,主题会被标记为待删除状态,并最终由 Broker 清理数据[^1]。 #### 4. 描述 Topic 查看某个特定主题的详细信息,包括分区分布、领导者节点等元数据。 ```bash /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper localhost:2181/kafka --topic test_topic_name ``` 输出结果包含 Leader Partition ID, ISR List 等重要字段[^2]。 #### 5. 发送消息到 Topic 通过 Producer 工具向目标主题发送测试消息。 ```bash echo "This is a test message" | /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic_name ``` 每输入一条新行即代表发布了一条记录至对应主题中[^1]。 #### 6. 接收来自 Topic 的消息 利用 Consumer 工具订阅某主题的消息流。 ```bash /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test_topic_name ``` 选项 `--from-beginning` 表明消费者将读取自最早偏移量以来的所有历史事件[^1]。 #### 7. 启动 Kafka Server 以守护进程方式运行 Kafka 实例,同时可选配 JMX Port 进行性能指标采集。 ```bash JMX_PORT=9991 /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties ``` 这里设置了环境变量以便远程访问 JVM 性能统计接口[^3]。 #### 8. 关闭 Kafka Server 优雅地停止正在工作的 Kafka 节点服务。 ```bash /usr/local/kafka/bin/kafka-server-stop.sh ``` 调用脚本会尝试通知内部组件完成清理工作后再退出程序流程。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值