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中的作用。
为什么Kafka需要ZooKeeper?
2.什么是ZooKeeper?
Apache ZooKeeper在系统架构中扮演着非常重要的角色,因为它在更多公开的大数据工具(如Apache Spark或Apache Kafka)的阴影下工作。换句话说,Apache Zookeeper是一个分布式的开源配置,同步服务以及分布式应用程序的命名注册表。
什么是ZooKeeper
最初,ZooKeeper框架是在“Yahoo!”上构建的。因为它有助于以简单的方式访问其应用程序。此外,对于Hadoop,HBase使用的有组织的服务,它成为标准和其他分布式框架。
学习Apache Kafka Streams | 流处理拓扑
现在,让我们详细讨论ZooKeeper在Kafka中的作用:
3.卡夫卡的ZooKeeper
基本上,Kafka - ZooKeeper存储了很多关于Kafka消费者和Kafka Brokers的共享信息,让我们详细讨论它们:
在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的功能。
7. ZooKeeper Server的硬件
以下是为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进程的用户。应根据允许的最大打开文件句柄数来考虑值。它还经常打开和关闭连接,而且,它需要一个可用的文件句柄池来供选择。
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的重要配置选项。
Apache ZooKeeper在Kafka中的角色 - 监控和配置的更多相关文章
- Zookeeper 在 Kafka 中的作用
https://www.jianshu.com/p/a036405f989c 待整理...
- Spring Boot 中 Druid 的监控页面配置
Druid的性能相比HikariCp等其他数据库连接池有一定的差距,但是数据库的相关属性的监控,别的连接池可能还追不上,如图: 今天写一下 Spring Boot 中监控页面的配置,我是直接将seat ...
- kafka 中 zookeeper 具体是做什么的?
zookeeper 是 kafka 不可分割的一部分,可见其重要程度,所以我们有必要了解一下 zookeeper 在 kafka 中的具体工作内容. 而且,这也是面试时经常问的. zookeeper ...
- kafka中的 zookeeper 起到什么作用,可以不用zookeeper么?
zookeeper 是一个分布式的协调组件,早期版本的kafka用zk做meta信息存储,consumer的消费状态,group的管理以及 offset的值.考虑到zk本身的一些因素以及整个架构较大概 ...
- zookeeper和kafka的使用
zookeeper使用和原理探究(一) http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html zookeeper的作用和原理讲 ...
- zookeeper学习(2)----zookeeper和kafka的关系
转载: Zookeeper 在 Kafka 中的作用 leader 选举 和 follower 信息同步 如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeep ...
- 删除Kafka中的topic
删除Kafka中的topic 一.配置delete.topic.enable=true 二.其他方法 一.配置delete.topic.enable=true 修改kafaka配置文件server.p ...
- Kafka中bootstrap-server、broker-list和zookeeper的区别
参考 Kafka bootstrap-servers vs zookeeper in kafka-console-consumer 中说建议使用新版(新版本指的是kafka 0.8.0之后的版本)的 ...
- Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
一.Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
随机推荐
- 集成omnibus-ctl+ chef 制作一个可配置的软件包
前边有写过使用omnibus-ctl 制作软件包的,但是当时没有集成chef,只有一个空壳子,实际上omnibus-ctl 已经内置 了对于chef 的操作(但是我们还需要在添加一个依赖),以下简单说 ...
- Java实现RS485串口通信,发送和接收数据进行解析
最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的 ...
- LAMP架构介绍
介绍一下LAMP架构 LMAP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的首字母缩写.这是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的 ...
- 怎么样使element ui 的table某列变色
第一步.在el-table里面加上:row-style="rowClass" <el-table :data="targetCarList" border ...
- CFD-Post批处理(在一系列算例同一位置截取速度云图)
批量在一系列算例的同一位置截取面,并显示截面的速度分布云图 现在我们有一系列的算例 我们打开CFD-Post 我们编写如下的Python代码来实现在一系列算例的同一位置截面,并显示界面的速度分布云图 ...
- Java中在时间戳计算的过程中遇到的数据溢出问题
背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下. package com.lingyejun.authe ...
- 刷题记录:Shrine
目录 刷题记录:Shrine 刷题记录:Shrine 题目复现链接:https://buuoj.cn/challenges 参考链接:Shrine 解此题总结一下flask的SSTI:CTF SSTI ...
- hadoop大作业
1.数据准备 2.把CSV添加到/bigdatacase/dataset中 3.检查前5行并删除第一行 4.将csv文件导入hadoop并检查前10行数据情况 5.数据文件导入hive 6.在Hive ...
- CSS背景和精灵图
如何设置背景图片? 1.在CSS中有个叫做background-image:url():的属性,就是专门用于设置背景图片的. 2.注意点: 1)图片的地址必须放在url()中,图片的地址可以是本地的地 ...
- Android A/B System OTA分析(一)概览【转】
本文转载自:https://blog.csdn.net/guyongqiangx/article/details/71334889 Android从7.0开始引入新的OTA升级方式,A/B Syste ...