作者:多米音乐_34249295 | 来源:互联网 | 2023-01-22 17:48
我在(Plain Vanilla)Hadoop集群中使用Apache Kafka过去几个月,出于好奇,我问这个问题.只是为了获得有关它的额外知识.
Kafka server.properties文件已经具有以下参数:
zookeeper.cOnnect=本地主机:2181
我使用以下命令启动Kafka Server/Broker:
bin/kafka-server-start.sh config/server.properties
因此,我假设Kafka在我们启动Kafka服务器本身时会自动推断Zookeeper的详细信息.如果是这种情况,那么为什么我们需要在创建Kafka主题时明确提及zookeeper属性,其语法如下所示,供您参考:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --rerelication-factor 1 --partitions 1 --topic test
根据Kafka文档,我们需要在启动Kafka服务器之前启动zookeeper.所以我不认为Kafka可以通过在Kafka的server.properties文件中注释zookeeper的详细信息来启动
但至少我们可以使用Kafka创建主题并启动Kafka Producer/Consumer,而无需在各自的命令中明确提及zookeeper吗?
1> ppatierno..:
zookeeper.connect
要使群集中的每个Kafka代理连接到Zookeeper集合,都需要Kafka属性文件中的参数.Zookeeper将保留有关连接代理的信息并处理控制器选举.除此之外,它还保留有关主题,配额和ACL的信息.
当您使用kafka-topics.sh工具时,主题创建首先在Zookeeper级别进行,然后由于它,信息被传播到Kafka代理并创建主题分区并分配给它们(由于选择的控制器).由于新的Admin Client API提供了一些直接针对Kafka代理执行的管理操作,因此将来不再需要与Zookeeper的连接.例如,有一个打开的JIRA(https://issues.apache.org/jira/browse/KAFKA-5561),我正在努力让该工具使用这种API进行主题管理操作.
关于生产者和消费者......生产者不需要连接到Zookeeper,而只有"旧"消费者(0.9.0版本之前)需要Zookeeper连接,因为它保存了主题偏移; 从0.9.0版本开始,"新"消费者在真实主题中保存主题偏移(__consumer_offsets).要使用它,您必须bootstrap-server
在命令行的内部使用该选项zookeeper
.