为什么我们需要提到zookeeper的细节,即使ApacheKafka配置文件已经有了它?

new9mtju  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(337)

在过去的几个月里,我一直在hadoop集群中使用apachekafka,出于好奇,我问这个问题。只是为了获得更多的知识。
kafka server.properties文件已具有以下参数:
zookeeper.connect连接=localhost:2181
我用以下命令启动kafka服务器/代理:
bin/kafka-server-start.sh配置/server.properties
所以我假设在我们启动kafka服务器时,kafka会自动推断zookeeper的详细信息。如果是这样的话,那么为什么我们在创建kafka主题时需要显式地提到zookeeper属性呢?kafka主题的语法如下所示,供您参考:
bin/kafka-topics.sh--创建--缩放器localhost:2181 --replication-factor 1--分区1--主题测试
根据kafka文档,我们需要在启动kafka服务器之前启动zookeeper。所以我不认为kafka可以通过注解掉kafka的server.properties文件中的zookeeper细节来启动
但是我们至少可以使用kafka来创建主题和启动kafka生产者/消费者,而不在各自的命令中明确提到zookeeper吗?

d4so4syb

d4so4syb1#

这个 zookeeper.connect 要使集群中的每个kafka代理连接到zookeeper集合,需要kafka属性文件中的参数。zookeeper将保留有关连接的代理和处理控制器选择的信息。除此之外,它还保存有关主题、配额和acl的信息。
当您使用kafka-topics.sh工具时,主题创建首先在zookeeper级别进行,然后由于它,信息被传播到kafka代理,主题分区被创建并分配给它们(由于选择的控制器)。由于新的管理客户端api提供了一些直接针对kafka代理执行的管理操作,因此将来不需要与zookeeper的连接。例如,有一个打开的jira(https://issues.apache.org/jira/browse/kafka-5561)我正在努力让这个工具使用这样的api进行主题管理操作。
关于生产者和消费者。。。生产者不需要连接到zookeeper,而只有“旧”消费者(0.9.0版本之前)需要zookeeper连接,因为它将主题偏移保存在那里;从0.9.0版本开始,“新”使用者将主题偏移量保存在实际主题中(“新”使用者偏移量)。使用它你必须使用 bootstrap-server 命令行上的选项,而不是 zookeeper 一个。

相关问题