前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop基础教程-第8章 Zookeeper(8.4 Zookeeper集群模式)

Hadoop基础教程-第8章 Zookeeper(8.4 Zookeeper集群模式)

作者头像
程裕强
发布2022-05-06 18:51:25
2160
发布2022-05-06 18:51:25
举报
文章被收录于专栏:大数据学习笔记

第8章 Zookeeper

8.4 Zookeeper集群模式

8.4.1 集群模式介绍

Running ZooKeeper in standalone mode is convenient for evaluation, some development, and testing. But in production, you should run ZooKeeper in replicated mode. 单机模式的ZooKeeper便于评估,开发和测试。但在生产中,我们应该以集群模式运行ZooKeeper。

一个 ZooKeeper 集群通常由一组机器组成,一般 3 台以上就可以组成一个可用的 ZooKeeper 集群了。每台集群的具有相同的Zookeeper配置文件。组成 ZooKeeper 集群的每台机器都会在内存中维护当前的服务器状态,并且每台机器之间都会互相保持通信。

重要的一点是,只要集群中存在超过一半的机器能够正常工作,那么整个集群就能够正常对外服务。

For replicated mode, a minimum of three servers are required, and it is strongly recommended that you have an odd number of servers. If you only have two servers, then you are in a situation where if one of them fails, there are not enough machines to form a majority quorum. Two servers is inherently less stable than a single server, because there are two single points of failure. 对于集群模式,至少需要三台服务器,强烈建议您拥有奇数个服务器。 如果您只有两台服务器,那么您处于这样的情况,如果其中一台服务器出现故障,则没有足够的机器来形成大多数法定人数。 两台服务器固然比单一服务器稳定性差,因为有两个单点故障。

8.4.2 集群模式配置

集群模式的Zookeeper配置同样参考官方文档: http://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html

集群模式所需的conf/zoo.cfg配置文件类似于单机模式下使用的配置文件,但有一些区别。

下面先在node1节点上进行配置:

代码语言:javascript
复制
[root@node1 zookeeper-3.4.10]# cd conf
[root@node1 conf]# vi zoo.cfg 
[root@node1 conf]# cat zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
dataLogDir=/var/log
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

The entries of the form server.X list the servers that make up the ZooKeeper service. When the server starts up, it knows which server it is by looking for the file myid in the data directory. That file has the contains the server number, in ASCII. server.X的条目列出构成ZooKeeper服务的服务器。 当服务器启动时,它会通过查找数据目录中的文件myid来知道哪个服务器。 该文件包含服务器编号,以ASCII格式显示。

代码语言:javascript
复制
[root@node1 ~]# mkdir /var/lib/zookeeper
[root@node1 ~]# echo 1 > /var/lib/zookeeper/myid
[root@node1 ~]# cat /var/lib/zookeeper/myid 
1
[root@node1 ~]# 

然后,将配置好的Zookeeper分发到其他两个节点

代码语言:javascript
复制
[root@node1 ~]# scp -r /opt/zookeeper-3.4.10/ node2:/opt
[root@node1 ~]# scp -r /opt/zookeeper-3.4.10/ node3:/opt

在node2和node3节点上分别创建myid文件

代码语言:javascript
复制
[root@node2 ~]# mkdir /var/lib/zookeeper
[root@node2 ~]# echo 2 > /var/lib/zookeeper/myid
代码语言:javascript
复制
[root@node3 ~]# mkdir /var/lib/zookeeper
[root@node3 ~]# echo 3 > /var/lib/zookeeper/myid

在node2和node3节点上配置环境变量

代码语言:javascript
复制
[root@node2 ~]# vi /etc/profile.d/custom.sh
[root@node2 ~]# cat /etc/profile.d/custom.sh
#!/bin/bash

#Java path
export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib

#Hadoop path
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

#zookeeper path
export ZOO_HOME=/opt/zookeeper-3.4.10
export PATH=$PATH:$ZOO_HOME/bin
[root@node2 ~]# source /etc/profile.d/custom.sh

vi /etc/profile.d/custom.sh cat /etc/profile.d/custom.sh

代码语言:javascript
复制
[root@node3 ~]# vi /etc/profile.d/custom.sh
[root@node3 ~]# cat /etc/profile.d/custom.sh 
#!/bin/bash

#Java path
export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib

#Hadoop path
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

#zookeeper path
export ZOO_HOME=/opt/zookeeper-3.4.10
export PATH=$PATH:$ZOO_HOME/bin
[root@node3 ~]# source /etc/profile.d/custom.sh

8.4.3 集群模式启动

(1)启动 在每个节点执行命令zkServer.sh start

代码语言:javascript
复制
[root@node1 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
代码语言:javascript
复制
[root@node2 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
代码语言:javascript
复制
[root@node3 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

(2)查看状态 在每个节点上执行命令zkServer.sh status

代码语言:javascript
复制
[root@node1 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
代码语言:javascript
复制
[root@node2 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
代码语言:javascript
复制
[root@node3 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

(3)通过jps命令查看进程

代码语言:javascript
复制
[root@node1 ~]# jps
2346 Jps
2255 QuorumPeerMain
代码语言:javascript
复制
[root@node2 ~]# jps
2216 QuorumPeerMain
2298 Jps
代码语言:javascript
复制
[root@node3 ~]# jps
2320 Jps
2265 QuorumPeerMain
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第8章 Zookeeper
  • 8.4 Zookeeper集群模式
    • 8.4.1 集群模式介绍
      • 8.4.2 集群模式配置
        • 8.4.3 集群模式启动
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档