Kafka 管理数据
参考文档
http://kafka.apache.org/quickstart
常见命令
kafka-topics.sh #消息的管理命令
kafka-console-producer.sh #生产者的模拟命令
kafka-console-consumer.sh #消费者的模拟命令
创建Topic(主题)
创建名为wang, partitions(分区)为3,replication(每个分区的副本数/每个分区的分区因子)为2的topic(主题)
[root@node0 ~]#kafka-topics.sh --create --topic wang -- bootstrap-server 10.0.0.101:9092 --partitions 3 --replication-factor 2
在各节点上观察生成的相关数据
[root@node0 ~]#ls /usr/local/kafka/data/
[root@node1 ~]#ls /usr/local/kafka/data/
[root@node2 ~]#ls /usr/local/kafka/data/
在zookeeper上查看写入的Topic
获取所有Topic
[root@node0 ~]#kafka-topics.sh --list --bootstrap-server 10.0.0.101:9092
wang
查看Topic详情(帮助判断有几个分区,有几个)
状态说明:wang 有三个分区分别为0,1,2,分区0的leader是3 (broker.id),分区 0 有2 个副本, 并且状态都为 lsr(ln-sync,表示可以参加选举成为 leader).
[root@node0 ~]#kafka-topics.sh --describe --bootstrapserver 10.0.0.101:9092 --topic wang Topic:wang TopicId: beg6bPXwToW1yp7cuv7F8w PartitionCount:3 ReplicationFactor: 2 Configs: Topic: wang Partition: 0 Leader: 3 Replicas: 3,1 Isr: 3,1
Topic: wang Partition: 1 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: wang Partition: 2 Leader: 2 Replicas: 2,3 Isr: 2,3
生产Topic(在zookeeper里面看不到消息,zookeeper只放元数据,不存放数据本身)
kafka-console-producer.sh格式
[root@node0 ~]#kafka-console-producer.sh --topic wang -- bootstrap-server 10.0.0.101:9092
>message1
>message2
消费Topic
kafka-console-consumer.sh格式
注意:
1、消息者先生产消息,消费都后续才启动,也能收到之前生产的消息
2、同一个消息在同一个group内的消费者只有被一个消费者消费,比如:共100条消息,在一个group内有A,B两个消费者,其中A消费50条,B消费另外的50条消息.从而实现负载均衡,不同group内的消费者则可以同时消费同一个消息
范例:
[root@node1 ~]#kafka-console-consumer.sh --topic wang --bootstrap-server 10.0.0.102:9092 --from-beginning
>message1
>message2
在101再生产Topic,会立马显示在102上被消费
101上:
>message1
>message2
>message3
102上:
>message1
>message2
>message3
也可在102上生产Topic,会立马显示在101上被消费
102上:
>message1
>message2
>message3
>message4
104上:
>message1
>message2
>message3
>message4
支持多个生产者和消费者
删除Topic
[root@node0 ~]#kafka-topics.sh --delete --bootstrap-server 10.0.0.101:2181 --topic wang