![55a9924e8970675905abe2a82eacebee.png](https://i-blog.csdnimg.cn/blog_migrate/29e4d4f646d250ad704b683920556ca5.jpeg)
尽管事实上Apache Zookeeper的功能在终端客户中并没有引起人们的注意,但是它仍然是诸如Hadoop之类的热门组件的骨干,以监督自动故障转移,Kafka的代理协调,Solr,HBase,Apache S4等。
此外,Zookeeper还被广泛用于许多免费软件项目,例如AdroitLogic UltraESB、Akka、GoldenOrb(大规模图形分析)、Neo4j(图形数据库)等。此外,许多知名公司如Yahoo、Rackspace、Box、Midokura等正在将其用于运营目的。
与操作系统无关,设置Zookeeper集群没有太多复杂性。一个Zookeeper集群也称为合奏。本文已分为三个部分。此外,我添加了几行内容来与Zookeeper和Kafka进行代理,以进行代理协调,并添加Hadoop以在NameNode上实现自动故障转移。
![2f56906d287f64a928a2a48819b66d15.png](https://i-blog.csdnimg.cn/blog_migrate/3683ea344b9da68b5446a2e782894cce.png)
点击添加图片描述(最多60个字)编辑
第一部分:我们将使用在Ubuntu 14.04 LTS之上运行的多节点集群作为操作系统。在不同操作系统上的安装不会有任何大胆的更改。Zookeeper在JAVA上运行,并假定JAVA在每个节点上的集群上已经可用。到目前为止,不支持Java 9 和10。
第二部分:本节将在集群的每个节点中累积Zookeeper的安装和配置。使用SCP将下载的tarball(apache-zookeeper-3.5.6-bin.tar.gz)复制到每个节点并提取为$ tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
![4a64271b859f9757b17a10daeec7ae6a.png](https://i-blog.csdnimg.cn/blog_migrate/67e63168e4b9f3f2a1df97036a77b32e.png)
点击添加图片描述(最多60个字)编辑
一旦成功提取,目录apache-zookeeper-3.5.6-bin中的内容将移至/ usr / local / zookeeper位置。确保已经在/ usr / local内部创建了具有所有访问权限(root 特权)的“ zookeeper”目录。
![c1cb141f51e53541fa79f272e8e9ade5.png](https://i-blog.csdnimg.cn/blog_migrate/35a58758fc93aefc812856cc3e3ff90e.png)
点击添加图片描述(最多60个字)编辑
现在,我们必须在“ zookeeper”内部创建两个目录作为“数据”和“日志”,然后在每个服务器/系统上分配一个单独的节点ID。
![c74b068b86aa0aa68261579a39abceb5.png](https://i-blog.csdnimg.cn/blog_migrate/1883bb2b430729e3c9022361f9c87aec.png)
点击添加图片描述(最多60个字)编辑
随后,在每个系统上创建一个“ myid”文件。myid文件由仅包含该机器ID文本的一行组成。每个myid文件将包含一个与配置文件中分配的服务器编号相关的编号。id / number在集群中必须唯一,并且其值必须在1到255之间。在这里,对于集群中的所有四节点/系统,我们分别表示为1,2,3和4。
![8813faae2e3ef2c749646174b2be34db.png](https://i-blog.csdnimg.cn/blog_migrate/b15fa2e9727e80a9702e9dc8f675de36.png)
点击添加图片描述(最多60个字)编辑
“ / usr / local / zookeeper / data ”所有者将成为根用户。Zookeeper将进程ID和数据快照存储在该目录中。
![e1ba4fec81866861f93c9de6c7c21ffc.png](https://i-blog.csdnimg.cn/blog_migrate/82a3bc1e47bafffa5805ed1a90fc9fdc.png)
点击添加图片描述(最多60个字)编辑
上面的屏幕快照显示了创建的具有唯一编号的“ myid”文件以及“ version”目录中的快照。Zookeeper服务器开始工作后,快照文件将自动生成。
要更新或插入配置参数,必须将位于“ / usr / local / zookeeper / conf ”内的默认文件zoo_sample.cfg重命名为zoo.cfg。
![171845e1b06ba0ab22a04ae47a99558c.png](https://i-blog.csdnimg.cn/blog_migrate/554be3db9ffd3cad8a57e8d2d52b2bbb.png)
点击添加图片描述(最多60个字)编辑
然后,使用新的键“ dataLogDir”更新“ dataDir”和“ clientPort”键的值。由于集群中有4个节点,因此应使用以下命令更新每个节点中的zoo.cfg文件。
![ed100009a1bba7da739f3c33c844d4bc.png](https://i-blog.csdnimg.cn/blog_migrate/6a4e42876be5c04840e824b9b3d8379e.png)
点击添加图片描述(最多60个字)编辑
独立的Zookeeper服务器仅有益于开发和测试目的,而不适用于生产环境。必须在生产中使用复制的多节点集群,才能以分布式方式完全利用协调服务。请牢记这一点,本文重点讨论了多节点设置。在同一应用程序中的一组服务器的复制组称为仲裁,并且在复制模式下,仲裁中的所有服务器都具有相同配置文件zoo.cfg的副本。
如上所述,应在每个服务器/节点的 zoo.cfg文件以及“ myid”中添加以下内容。
server.1=<IP Address of node 1>:2888:3888 [note:- 1 denotes the unique number available inside “myid” file of node/system 1 in the cluster similarly 2,3,4 for other systems]
server.2=<IP Address of node 2>:2888:3888
server.3=<IP Address of node 3>:2888:3888
server.4=<IP Address of node 4>:2888:3888
![adf47f10ae8d201774e8a68215777460.png](https://i-blog.csdnimg.cn/blog_migrate/056e67e0092a1a16d3a26cda7726218a.png)
点击添加图片描述(最多60个字)编辑
“ initLimit” 指示仲裁中的每个节点需要连接到领导者的时间。“ syncLimit”指定发送请求和接收确认的时间。ZooKeeper节点使用一对端口:2888和:3888分别用于跟随者节点连接到领导者节点和进行领导者选举。请参考此处以了解有关配置参数的更多信息。
第三部分:这部分用于运行和测试我们在以上部分完成的多节点Zookeeper服务器安装。我们可以使用CLI启动所有四个节点/系统中的每个Zookeeper服务器。导航到bin目录(/ usr / local / zookeeper / bin)并执行。/zkServer.sh启动。
![0d52f860c7563f2da581759cb2edc98a.png](https://i-blog.csdnimg.cn/blog_migrate/3f0bd8649c5108eaf28da1e1a7111549.jpeg)
点击添加图片描述(最多60个字)编辑
此外,我们可以检查每个服务器中的日志文件,以检查每次Zookeeper服务器启动期间是否发生任何致命错误或异常。
![fffc78e997ecd8e6ed47f0fe4a3ff55f.png](https://i-blog.csdnimg.cn/blog_migrate/d6eb5dc41705d4c17a6223eefc9e9670.png)
点击添加图片描述(最多60个字)编辑
另外,使用zkCli.sh,我们可以从其他节点/系统连接到另一个节点/服务器。
![6cdb88090e02bcf6af4360d9420b15f6.png](https://i-blog.csdnimg.cn/blog_migrate/13c15e98674461675386eac5c2980f0f.png)
点击添加图片描述(最多60个字)编辑
使用zkCli.sh连接其他Zookeeper服务器并在控制台上显示以下内容后,Zookeeper服务器在集群中成功运行。
![dce47c43cef3ca392d671464f4eed14c.png](https://i-blog.csdnimg.cn/blog_migrate/3310e46f35bcf25cd6c745bdbdd628ee.jpeg)
点击添加图片描述(最多60个字)编辑
本文未扩展其他信息,如创建子znode,znode的子级,znode元数据等,但如果有人要安装和运行Kafka集群,将很有帮助。不过,Kafka在管理其经纪人方面对Zookeeper十分尊敬,但在不久的将来,Kafka将与Zookeeper分离。
最终,我们将说明如何将Zookeeper服务器/集群与Kafka以及Hadoop多节点集群结合使用,以实现自动故障转移,并假设Hadoop集群中的所有节点均已安装并将Zookeeper配置为以上说明。
ZooKeeper节点可以与HDFS NameNode和Standby Node安装在相同的硬件上,因为ZooKeeper本身对光资源的要求很高。为了在HDFS集群中实现自动故障转移功能,必须提供Apache Zookeeper服务。
Zookeeper与多节点Hadoop集群中的NameNodes保持会话。当活动的Namenode发生故障时,由Zookeeper维护的会话将终止,并通知其他NameNodes启动故障转移过程。
ZookeerFailoverController(ZKFC)是Zookeeper客户端,用于监视和管理NameNode状态。每个NameNode也都运行ZKFC。ZKFC负责定期监视NameNode的运行状况。只需提及与Zookeeper相关的配置参数即可。文件应该使用以下内容更新core-site.xml的活动名称和备用名称节点。
<property>
<name>ha.zookeeper.quorum</name>
<value> <<IP Address/Alias name of Zookeeper Server 1>>:5181,<< IP Address/Alias name of Zookeeper Server 2>>:5181, <<IP Address/Alias name of Zookeeper Server 3>>:5181 </value>
</property>
注意:Zookeeper Sever1,Sever2,Sever3是我们上面安装和配置的Zookeeper集群中的服务器。
跳过其他配置文件,不需要Zookeeper的集群条目,但必须进行更新/更改,才能在Hadoop中启用自动故障转移。
要甚至甚至为独立设置Kafka多节点集群,必须使用Zookeeper服务器条目来管理其代理。简而言之,Kafka利用Zookeeper来管理Kafka Brokers的服务发现。
Zookeeper负责将有关拓扑更改的信息发送到Kafka集群,随后,集群中的每个节点都知道整个Kafka集群中何时加入了新代理,代理死亡,删除主题或添加主题等......
通过在上面的“ server.properties”中输入Zookeeper的服务器信息,就可以实现。“ server.properties” 文件位于安装在多节点集群上的每个Kafka实例的“ conf ”目录中。
![489b3a01430a6c150f2fe543704e0b83.png](https://i-blog.csdnimg.cn/blog_migrate/9f540370f0eee1915023ff7e5de6e858.png)
点击添加图片描述(最多60个字)编辑
![eae6769874ce19f7904d91d99ccd9b2d.png](https://i-blog.csdnimg.cn/blog_migrate/7f6f9a976607f49bba9162f501cf847a.png)
点击添加图片描述(最多60个字)编辑
总结
以上就是今天的内容了,如果对你有所帮助,希望你能够关注、点赞、转发一键三连支持一下。
需要完整学习线路和配套课堂笔记,请后台回复111。