topic相关
0)参数带多个主机
作用:通过主机找kafka,如果102挂了,可以找103…更保险,相当于给kafka配了多个备用端口
--bootstrap-server borker主机:9092,..多个
1)查看当前服务器中的所有topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 --list
bin/kafka-topics.sh --list --bootstrap-server borker主机:9092,..
2)查看topic详细信息:
旧
bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe--topic first
新
bin/kafka-topics.sh --describe --topic topic名称 --bootstrap-server borker主机:9092,..
3)创建topic
创建的副本数要求:
副本数不能大于节点数,否则报错。
原因:当一个节点有两个相同副本时,节点挂了两个都会每,所以没有意义
旧:
$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic first
新:
bin/kafka-topics.sh --create --topic topic名称 --partitions 分区数 --replication-factor 副本数 --bootstrap-server borker主机:9092,..
4)删除topic
旧:
bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic first
新:
bin/kafka-topics.sh --delete --topic topic名称 --bootstrap-server borker主机:9092,..
需要server.properties中设置delete.topic.enable=true否则只是标记删除(现在版本已经默认为true)。
5)修改topic信息[只能修改分区数,而且是只能增加分区数,不能减少分区数]
不能减少分区数的原因:
因为每个segment有时间索引,而kafka消息队列只支持追加数据,
如果要减少分区,那么分区中的数据会被追加到其他分区尾部,而时间索引有可能与分区中的数据造成混乱。
旧
bin/kafka-topics.sh --zookeeper hadoop102:2181 --alter --topic first --partitions 6
新
bin/kafka-topics.sh --alter --topic topic名称 --bootstrap-server borker主机:9092,.. --partitions 分区数
生产者相关
发送消息(broker的指定端口号是9092)
[atguigu@hadoop102 kafka]$bin/kafka-console-producer.sh --topic topic名称 --broker-list borker主机:9092,..
>hello world
>atguigu atguigu
消费者相关
生成消费者组(随机或指定)进行消费,
旧
bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 --topic first
新
bin/kafka-console-consumer.sh --topic topic名称 --bootstrap-server borker主机:9092,..
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
—from-beginning:会把主题中以往所有的数据都读取出来。
原理:
kafka消费的时候把消费的数据偏移量记录在_comsumer_offsets上,是需要先消费才能记录
所以第一次消费数据的时候是没有数据的,第二次才能消费上一次消费的offset+1
要想看到第一次消费的数据只能用—from-beginning指令,而且只有看第一次的有效,这时因为是从第二次的__comsumer_offsets拉取,这时是没数据的,所以看不到。(需要指定消费者组才有效,不指定只会自动创建一个新的消费组,重新拉取)
指定消费者组
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first --group g1
查看所有消费者组详情,消费到每个topic的分区的哪个offset
kafka-consumer-groups.sh --all-groups --all-topic --describe --bootstrap-server hadoop102:9092
数据相关
bin/kafka-dump-log.sh --files 待查看的文件路径/00...index --print-data-log
bin/kafka-dump-log.sh --files 待查看的文件路径/00...log--print-data-log