kafka是一个分布式流处理平台(distributed streaming platform)
备注:一个topic有多个partition
一个partition有N个副本
主题信息属于kafka的元数据存储在zookeeper中,
数据是存放在分区中
创建主题,必须指定分区和副本数
每个broker最多存储一份副本,所以在创建主题时,副本数不能超过当前的broker的数量!
其中可以创建确定的分区,以及每个分区的副本选择哪个broker
kafka-topic.sh --zookeeper data:2181 --create --topic test1 --replica-assignment 1:0,1:2 #【,】用逗号表示分区数,这个是两个分区,【;】分号表示指定broker,其中在zookeeper客户端查看都有哪些broker 我自己创建的是0,1,2
1.创建topic
app/kafka/bin/kafka-topics.sh --create -zookeeper data001:2181,data001:2182,data001:2183 --replication-factor 3 --partitions 1 --topic test
app/kafka/bin/kafka-topics.sh --create -zookeeper data001:2181,data001:2182,data001:2183 --topic test1 --replica-assignment 1:0,1:2 #创建topic且指定分区
2.删除topic
主题信息属于kafka的元数据存储在zookeeper中,
数据是存放在分区中
app/kafka/bin/kafka-topics.sh -zookeeper data001:2181 --delete --topic test #相当于删除了元数据(zookeeper中的客户端: ls /brokers/topics )数据是存放在分区里,我的是在logs中存放的test-0这类的就会被删除
3.修改topic
只能修改分区数和副本的放置策略
app/kafka/bin/kafka-topics.sh -zookeeper data001:2181 --alter --topic test --partitions 2 #将topic test分区数增加成2 【修改的时候分区数只能增,不能减】
app/kafka/bin/kafka-topics.sh -zookeeper data001:2181 --alter --topic test --replica-assignment 1:2,1:0 #修改broker放置策略 这个放置策略还是有些问题,相当于追加,不能将原来放置的broker修改
修改完以后,使用查看topic就可以看到修改的效果
5.查看topic
查看topic
app/kafka/bin/kafka-topics.sh --list --zookeeper data001:2181
app/kafka/bin/kafka-topics.sh --describe --zookeeper data001:2181 --topic test1
6.生产|消费
app/kafka/bin/kafka-console-producer.sh --broker-list data001:9092, data001:9093,data001:9093--topic test #生产者
app/kafka/bin/kafka-console-consumer.sh --bootstrap-server data001:9092 --topic test --from-beginning #消费者
app/kafka/bin/kafka-console-consumer.sh --bootstrap-server data001:9092 --topic test
生产是针对broker的,所以生产者是--broker-list
消费是针对zookeeper,这里启动的消费者和最新版本的指令不相同。