目录
启动kafka:
bin/kafka-server-start.sh config/server.properties &
创建kafka topic
(一个叫“test”的topic,它只有一个分区,一个副本)
bin/kafka-topics.sh --create --zookeeper Master:2181 --replication-factor 1 --partitions 1 --topic test
ps:(除了手动创建topic,还可以配置broker让它自动创建topic)
partitions设置的是topic的分区数,replication-factor设置的是topic每个分区的副本数
- 分区数,控制topic分成多少个log。可以在创建topic的时候指定,如果没有指定则会使用配置文件中的默认数量 - 增加分区数是可以提高kafka集群的吞吐量、但是如果分区过多则会造成服务器高延迟。 因为分区过多会在需要的时候打开比较多的文件句柄,增加客户端的内存消耗。 - 分区数也限制了consumer的并行度,并行consumer消息的线程数不能大于分区数。 - 分区数也限制了producer发送消息是指定的分区。eg:创建topic时分区设置为1, producer发送消息时通过自定义的分区方法指定分区为2或者以上的数都会出错,这种情况下可以通过alter-partitions来增加分区数。
replication-factor:
- replication factor控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。 - 如果没有在创建时指定,则会使用broker(server.properties)中的default.replication.factor配置。
查看所有创建的topic:
bin/kafka-topics.sh --list --zookeeper Master:2181
查看指定topic信息:
bin/kafka-topics.sh --zookeeper Master:2181 --describe --topic test
把控制台当成producer生产数据:
bin/kafka-console-producer.sh --broker-list Master:9092 --topic test
把控制台当成consumer消费数据:
bin/kafka-console-consumer.sh --zookeeper Master:2181 --topic test --from-beginning
查看topic某分区偏移量的最大或最小值:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list Master:9092 --partitions 0
增加topic分区数:
bin/kafka-topics.sh --zookeeper Master:2181 --alter --topic test --partitions 10
ps: 为test增加10个分区
删除topic(!!!慎用),只会删除zookeeper中的元数据,消息文件需要手动删除:
bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper Master:2181 --topic test
获取节点的kafka信息:
bin/kafka-topics.sh --describe --zookeeper Master:2181 --topic my-replicated-topic
下面是输出结果:
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
其中:第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行
leader:负责处理消息的读和写,leader是从所有节点中随机选择的。
replicas:列出了所有的副本节点,不管节点是否在服务中。
isr:正在服务中的节点。