运行环境:mac osbootstrap
1. 启动zookeeper测试
./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
2. 启动kafka服务spa
./bin/kafka-server-start /usr/local/etc/kafka/server.properties
3. 查看topic列表代理
./bin/kafka-topics --list --zookeeper localhost:2181
4. 建立topic日志
./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic hezhixiong
--create:指定建立topic动做
--zookeeper:指定kafka链接zk的地址
--replication-factor:指定每一个分区的复制因子个数,默认1个
--partitions:指定当前建立的kafka分区数量,默认为1个
--topic:指定新建topic的名称
5. 查看topic的描述信息code
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic hezhixiong
6. 修改topic信息server
./bin/kafka-topics --zookeeper localhost:2181 --alter --topic hezhixiong --partitions 4 <!-- Kafka分区数量只容许增长,不容许减小 -->
7. 删除topicblog
./bin/kafka-topics --zookeeper localhost:2181 --delete --topic hezhixiong
Topic hezhixiong is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
默认状况下Kafka的Topic是无法直接删除的,而是标记删除而已。若是须要完全删除topic,有如下两种方式:
1. 经过delete命令删除后,手动将本地磁盘以及zk上的相关topic的信息删除
2. 配置server.properties文件,给定参数delete.topic.enable=true,重启kafka服务,此时执行delete命令表示容许进行Topic的删除
8. 生产者get
./bin/kafka-console-producer --broker-list localhost:9092 --topic hezhixiong
9. 消费者kafka
./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hezhixiong --from-beginning
10. broker集群
首先为每一个broker建立一个配置文件:
cd /usr/local/etc/kafka
cp server.properties server_1.properties
cp server.properties server_2.properties
vi server_1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dir=/tmp/kafka-logs/one
vi server_2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dir=/tmp/kafka-logs/two
broker.id
是集群中每一个节点的惟一且永久的名称,咱们修改端口和日志目录是由于咱们如今在同一台机器上运行,咱们要防止broker在同一端口上注册和覆盖对方的数据。
咱们已经运行了zookeeper和刚才的一个kafka节点,全部咱们只须要在启动2个新的kafka节点。
./bin/kafka-server-start /usr/local/etc/kafka/server_1.properties
./bin/kafka-server-start /usr/local/etc/kafka/server_2.properties
如今,咱们建立一个新topic,把备份设置为3
./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic hzx-new
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic hzx-new 查看topic获得输出以下:
Topic:hzx-new PartitionCount:1 ReplicationFactor:3 Configs:
Topic: hzx-new Partition: 0 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
从上面的输出,咱们能够得出结论,第一行给出全部分区的摘要,显示主题名称,分区数量和咱们已经选择的复制因子。在第二行中,每一个节点将是分区的随机选择部分的领导者。
在个人例子中,我看到的第一个broker(with broker.id 2)是领导者。 而后Replicas:2,1,0 意味着全部代理复制主题。最后 Isr 是 in-sync 副本的集合。 那么,这是副本的子集,当前活着并被领导者遇上。
"leader":该节点负责该分区的全部的读和写,每一个节点的leader都是随机选择的。
"replicas":备份的节点列表,不管该节点是不是leader或者目前是否还活着,只是显示。
"isr":“同步备份”的节点列表,也就是活着的节点而且正在同步leader。
启动生产者和消费者,在生产者端发送消息,在消费者端能看到消息的消息
./bin/kafka-console-producer --broker-list localhost:9092 --topic hzx-new (生产者)
./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hzx-new --from-beginning (消费者)
体验并测试kafka集群的容错,目前Leader是broker2,因此结束调broker2,并查看topic:hzx-new 的信息,输出以下
Topic:hzx-new PartitionCount:1 ReplicationFactor:3 Configs:
Topic: hzx-new Partition: 0 Leader: 1 Replicas: 2,1,0 Isr: 1,0
能够看出 broker2已经再也不同步备份集合里了,备份节点之一的broker1成为了新的leader了。
参考资料: