我们有3台kafka机器和3台zookeper服务器
虽然kafka机器未与zookeper服务器共同托管(kafka在不同的机器上,操作系统是redhat版本7.x)
为了获取经纪人id,我们在zookeper服务器上执行以下操作
cd /usr/hdp/current/zookeeper-server/bin
./zkCli.sh
ls /brokers/ids
结果应为三个经纪人ID的
1011 1012 1013
我的问题是-Zookeper以哪种方式知道经纪人已经建立?
或更具体地说
执行哪个cli zookeper来确定kafka经纪人已启动?
答案 0 :(得分:3)
Zookeeper基本上是一个分布式键值存储。启动时,Kafka代理将连接到Zookeeper(使用zookeeper.connect
设置),并在broker.id
下创建一个具有自己的/brokers/ids
的znode(键值对)。然后,Kafka代理在运行时保持与Zookeeper的连接。
znode被创建为“ Ephemeral”(这是Zookeeper的功能)。这意味着如果代理断开连接,Zookeeper将删除它。
通过这种方式,Zookeeper可以随时知道哪些经纪人还活着(这不一定意味着经纪人健康!)。代理使用它来发现集群中的其他代理。