Apache ZooKeeper在Kafka中的角色 - 监控和配置

1.目标 

今天,我们将看到Zookeeper在Kafka中的角色。本文包含Kafka中需要ZooKeeper的原因。我们可以说,ZooKeeper是Apache Kafka不可分割的一部分在了解ZooKeeper在Apache Kafka中的作用之前,我们还将看到什么是Apache ZooKeeper。

此外,我们将详细介绍ZooKeeper Production Deployment的介绍。此外,我们将讨论Apache Kafka如何与ZooKeeper对话。此外,这个Kafka ZooKeeper教程向我们介绍了ZooKeeper的硬件和配置。除此之外,我们将在ZooKeeper中研究ZooKeeper稳定版本和Monitoring。
那么,让我们讨论一下ZooKeeper在Kafka中的作用。

ZooKeeper在卡夫卡

为什么Kafka需要ZooKeeper?

2.什么是ZooKeeper?

Apache ZooKeeper在系统架构中扮演着非常重要的角色,因为它在更多公开的大数据工具(如Apache Spark或Apache Kafka)的阴影下工作换句话说,Apache Zookeeper是一个分布式的开源配置,同步服务以及分布式应用程序的命名注册表。 

什么是ZooKeeper

什么是ZooKeeper

最初,ZooKeeper框架是在“Yahoo!”上构建的。因为它有助于以简单的方式访问其应用程序。此外,对于HadoopHBase使用的有组织的服务,它成为标准和其他分布式框架。
学习Apache Kafka Streams | 流处理拓扑
现在,让我们详细讨论ZooKeeper在Kafka中的作用:

3.卡夫卡的ZooKeeper 

基本上,Kafka - ZooKeeper存储了很多关于Kafka消费者 和Kafka Brokers的共享信息,让我们详细讨论它们:

Kafka中ZooKeeper的要求

在Kafka中ZooKeeper的要求

一个。卡夫卡经纪人

下面给出了ZooKeeper在Kafka Broker中的角色  
i。
动物园管理员确定州。这意味着,它注意到,如果卡夫卡经纪人还活着,总是会经常发送心跳请求。此外,虽然Broker是处理复制的约束,但它必须能够满足复制需求。
II。配额
为了获得不同的生产和消费配额,Kafka Broker允许一些客户。此值在/ config / clients路径下的ZK中设置。另外,我们可以在bin / kafka-configs.sh脚本中更改它。
III。副本
但是,对于每个主题,Kafka中的Zookeeper都保留一组同步副本(ISR)。此外,如果先前选择的领导节点失败,那么在当前活动节点的基础上,Apache ZooKeeper将选择新的领导者。
看看Apache Kafka职业范围与薪资趋势
iv。节点和主题注册表
基本上,Kafka中的Zookeeper存储节点和主题注册表。可以在Kafka中找到所有可用的代理,更准确地说,每个代理持有哪些Kafka主题,在/ broker / ids和/ brokers / topics zNodes下,它们被存储。此外,当它启动时,Kafka经纪人会自动创建寄存器。

湾 卡夫卡消费者

一世。偏移
ZooKeeper是Kafka 0.9.1版本中消费者偏移的默认存储引擎。但是,有关每个消费者消费Kafka消费者消息的所有信息都存储在ZooKeeper中。
II。Kafka的注册管理机构
消费者 也有自己的注册表,就像Kafka Brokers一样。但是,同样的规则适用于它,即。作为短暂的zNode,一旦消费者关闭就会销毁它,并且消费者会自动进行注册过程。

4. Kafka如何与ZooKeeper交谈?

在这里,我们将看到Kafka类如何负责使用ZooKeeper。代表Kafka的Scala类是KafkaServer。它的startup()方法initZk()包含对初始化ZooKeeper连接的方法的调用。我们在这个Zookeeper方法中使用了这种算法中的几种方法。因此,在这种情况下,该方法创建与ZooKeeper的临时连接。此会话负责创建与chroot相对应的zNode,如果它是miAfterwarderwards,此连接将关闭并创建服务器持有的最终连接。
之后,仍然在initZk()内部,Kafka初始化所有持久性zNode,尤其是服务器使用的zNode。我们可以在那里检索:/ consumer,/ broker / ids,/ broker / topic,/ config,/ admin / delete_topics,/ broker / seqid,/ isr_change_notification,/ config / topics,/ config / clients。
学习Apache Kafka + Spark Streaming Integration
现在,使用同步来初始化其他成员,我们可以使用这个创建的ZooKeeper实例:

  • 副本经理
  • 配置管理员
  • 协调员和控制器

5. ZooKeeper生产部署

为了存储持久性集群元数据,Kafka使用ZooKeeper。假设,我们丢失了| zk |中的Kafka数据,副本到Kafka Brokers的映射以及主题配置也将丢失,这使得我们的Kafka群集不再起作用并可能导致总数据丢失。

你对卡夫卡了解多少 

6. ZooKeeper的稳定版本 

但是,当前的稳定分支是3.4,该分支的最新版本是3.4.9。
另外,我们可以使用“四字母单词”ENVI来查找正在运行的服务器的当前版本。
例如:
echo envi | nc localhost 2181 
它显示ZooKeeper服务器的所有环境信息,包括版本。
注意:只有使用此版本的ZooKeeper,ZooKeeper才能启动脚本并测试ZooKeeper的功能。

测试并比较您的ZooKeeper知识

7. ZooKeeper Server的硬件

以下是为ZooKeeper服务器群集选择适当硬件的一些指导原则。 

ZooKeeper在卡夫卡

ZooKeeper中的硬件

一个。记忆

基本上,当仅处理Kafka存储的数据时,ZooKeeper不是内存密集型应用程序。确保在典型的生产用例中,ZooKeeper应该至少使用8 GB的RAM。

湾 中央处理器

作为Kafka元数据,ZooKeeper存储不会大量消耗CPU资源。ZooKeeper还提供延迟敏感功能。这意味着我们必须考虑提供一个专用的CPU内核,以确保上下文切换不是一个问题,如果它必须与其他进程竞争CPU。
让我们修改Apache Kafka Security | Kafka的需求和组成部分

C。磁盘

为了保持健康的ZooKeeper集群,磁盘性能非常重要。为了获得最佳性能,我们建议使用固态硬盘(SSD),因为ZooKeeper必须具有低延迟磁盘写入。 

8. JVM(Java虚拟机)

通常,ZooKeeper作为JVM运行在为Kafka用例运行时,它不是特别堆。对于大多数用例和监视堆使用情况,我们建议使用1 GB的堆大小来阻止由于垃圾回收而导致的延迟

9. ZooKeeper的重要配置选项

大多数部署都不需要配置调整。要考虑的一些重要参数是:

一个。CLIENTPORT

在这个端口ZooKeeper中,客户端将会收听。在这里,我们将Brokers连接到ZooKeeper。通常,此值设置为2181. 
类型:int 
重要性:必需

湾 DATADIR

它是我们存储ZooKeeper数据的目录。但是,它应该是一个理想的SSD专用磁盘。
类型:字符串
重要性:必需
浏览Apache Kafka用例| 卡夫卡应用程序

C。滚动时间

对于ZooKeeper,时间单位转换为毫秒。它管理所有ZooKeeper时间相关的操作。我们特别用它来做心跳和超时。
注意:最小会话超时将是两个滴答。
类型:int 
默认值:2000 
重要性:高

d。maxClientCnxns

它是ZooKeeper服务器的最大客户端连接数。将此值设置为0(无限制),以避免耗尽允许的连接。
类型:int 
默认值:60 
重要性:高

即 autopurge.snapRetainCount

它只是分别在dataDir和dataLogDir中保留autopurge.snapRetainCount最新快照和相应的事务日志,并在启用它时删除剩余的快照。
类型:int 
默认值:3 
重要性:高

F。autopurge.purgeInterval

以小时为单位的时间间隔触发清除任务非常重要。要启用自动清除,请将其设置为正整数(1和更高)。
类型:int 
默认值:0 
重要性:高

准备卡夫卡专访

10.在ZooKeeper中监控 - Kafka

为了确保服务器正常运行并主动识别问题,我们需要监控ZooKeeper服务器。监测的最佳做法是:

ZooKeeper在卡夫卡

在ZooKeeper中监控

一个。操作系统

当ZooKeeper服务开始变得困难时,底层操作系统指标可以帮助预测。我们应该监控:

一世。打开文件句柄的数量

这应该在系统范围内完成,并且对于运行ZooKeeper进程的用户。应根据允许的最大打开文件句柄数来考虑值。它还经常打开和关闭连接,而且,它需要一个可用的文件句柄池来供选择。

我们来讨论Kafka Client

II。网络带宽使用情况

ZooKeeper对网络延迟引起的超时很敏感,因为它跟踪状态。如果网络带宽以某种方式饱和,那么只有我们可能难以解释客户端会话的超时,尽管这会导致Kafka群集不太可靠。

湾 “四字母词”

基本上,ZooKeeper只响应一组命令,每一个命令都是四个字母。要运行命令,我们必须将消息(通过netcat或telnet)发送到ZooKeeper客户端端口。例如echo stat | nc localhost 2181会将STAT命令的输出返回给stdout。

C。JMX监控

对监视很重要的JMX度量标准:
NumAliveConnections  
OutstandingRequests  
AvgRequestLatency  
MaxRequestLatency  
HeapMemoryUsage(Java内置)  
此外,通过SessionExpireListener,Kafka跟踪相关ZooKeeper事件的数量。基本上,它受到监控以确保ZooKeeper-Kafka交互的健康:
阅读Apache Kafka架构及其基本概念
ZooKeeperAuthFailuresPerSec(仅限安全环境)
ZooKeeperDisconnectsPerSec 
ZooKeeperExpiresPerSec 
ZooKeeperReadOnlyConnectsPerSec 
ZooKeeperSaslAuthenticationsPerSec(仅限安全环境)
ZooKeeperSyncConnectsPerSec

11. ZooKeeper多节点设置

ZooKeeper服务器在真实的生产环境中部署在多个节点上。这就是我们所说的合奏。基本上,一个集合是一组2n + 1个ZooKeeper服务器,其中n表示任何大于0的数字。此外,为了执行多数领导选举,奇数个服务器允许ZooKeeper。在整体中最多可以有n个失败的服务器,并且ZooKeeper集群将保持仲裁。 

12.部署后

一旦我们部署了ZooKeeper集群,ZooKeeper在很大程度上运行时没有太多维护。
所以,这完全是关于卡夫卡的ZooKeeper角色,希望你喜欢我们的解释。
体验最好的Apache Kafka测验部分

13.结论

因此,在Kafka教程中ZooKeeper的这个角色,我们已经看到Kafka确实需要ZooKeeper在Kafka集群中高效工作。总之,我们了解到ZooKeeper zNodes中的所有Kafka代理配置存储。即使是Kafka消费者也需要Zookeeper知道最后消费的消息。此外,我们还研究了ZooKeeper服务器监控,ZooKeeper服务器中的硬件。最后,我们讨论了ZooKeeper的重要配置选项。

posted @ 2019-05-12 17:28  DaisyLinux  阅读(1208)  评论(0编辑  收藏  举报