下载、安装 官网 下载
然后解压
1 2 > tar -xzf kafka_2.11 -0.10 .2 .0 .tgz > cd kafka_2.11 -0.10 .2 .0
linux用户使用bin/
目录下的命令,Windows用户可以使用bin/windows/
下的命令
使用 启动服务 kafka依赖于ZooKeeper,如果没有安装zookeeper,可以用kafka包里面现成的:
1 2 3 > bin/zookeeper-server-start.sh config/zookeeper.properties [2017-06-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache .zookeeper .server .quorum .QuorumPeerConfig) ...
然后启动kafka
1 2 3 4 > bin/kafka-server-start.sh config/server.properties [2017-06-22 15:01:47,028] INFO Verifying properties (kafka.utils .VerifiableProperties)[2017-06-22 15:01:47,051] INFO Property socket.send .buffer .bytes is overridden to 1048576 (kafka.utils .VerifiableProperties) ...
创建主题 创建一个test
主题,1个分区,1个副本
1 > bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
看一眼刚才创建的主题
1 2 > bin/kafka-topics.sh --list --zookeeper localhost:2181 test
注:如果不想手动创建主题,你可以自动创建
发消息 运行kafka自带的客户端发一些消息试试。默认情况下,每一行作为一条消息发出去。
1 2 3 > bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test This is a message This is another message
消费 然后用kafka自带的消费者输出
1 2 3 > bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning This is a message This is another message
提示: 如果上面的每个命令都在不同的终端中运行,你就可以在生产者终端中输入消息后,在消费者终端中看到。
启动一个多broker的集群 目前我们已经运行了一个单broker的kafka,只是有一个节点的集群。再让我们扩展到三个节点玩一下。
为其他两个节点复制一下配置文件:
1 2 > cp config/server.properties config/server-1.properties> cp config/server.properties config/server-2.properties
修改一下配置:
1 2 3 4 5 6 7 8 9 config/server-1.properties: broker.id =1 listeners =PLAINTEXT://:9093 log.dir =/tmp/kafka-logs-1 config/server-2.properties: broker.id =2 listeners =PLAINTEXT://:9094 log.dir =/tmp/kafka-logs-2
abroker.id
是集群中每个节点的唯一识别。我们也要改一下节点的端口和日志路径,主要因为是在本地环境,如果在多台机器上,就可以不改端口和日志路径了。
前面已经启动了zk,和一个几点,现在我们只需启动另外两个节点:
1 2 3 4 > bin/kafka-server-start.sh config/server-1. properties & ... > bin/kafka-server-start.sh config/server-2. properties & ...
现在我们创建一个1个分区3个副本的新主题:
1 > bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
现在我们有一个kafka集群了,那么我们怎么知道哪个broker在做什么呢? 运行describe topics
命令看看:
1 2 3 > bin/kafka-topics.sh --describe --zookeeper localhost: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”是负责给定分区的所有读取和写入的节点。 每个节点将成为随机选择的分区部分的引导者。
“replicas”是复制此分区日志的节点的列表,无论它们是不是leader。
“isr”是一组“同步”副本。 这是副本列表的子集,该副本目前正在生效并被leader所追踪。
我们可以再看一下最开始创建的test主题
1 2 3 > bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test Topic:test PartitionCount:1 ReplicationFactor:1 Configs: Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
往新的主题发一些消息:
1 2 3 4 > bin/kafka-console -producer.sh --broker-list localhost :9092 --topic my-replicated-topic ... my test message 1 my test message 2
消费一下这些消息:
1 2 3 4 > bin/kafka-console -consumer.sh --bootstrap-server localhost :9092 --from -beginning --topic my-replicated-topic ... my test message 1 my test message 2
容错 现在我们来测试容错。 broker 1作为 leader,我们kill一下试试:
1 2 3 > ps aux | grep server-1 .properties7564 ttys002 0 :15.91 /System/ Library/Frameworks/ JavaVM.framework/Versions/ 1.8 /Home/ bin/java... > kill -9 7564
win用户可以用这个命令:
1 2 3 > wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties" java.exe java -Xmx1G -Xms1G -server -XX:+UseG1GC .. . build\libs\kafka_2.10-0.10.2.0.jar" kafka.Kafka config\server-1.properties 644 > taskkill /pid 644 /f
leader已切换到其中一个slaves节点,节点1不再处于同步副本集中:
1 2 3 > bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs: Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 1 ,2,0 Isr: 2 ,0
不过消息仍然可以消费,即便刚才的leader已经挂掉了:
1 2 3 4 > bin/kafka-console -consumer.sh --bootstrap-server localhost :9092 --from -beginning --topic my-replicated-topic ... my test message 1 my test message 2
参考 官方文档