在CentOS6.9搭建Zookeeper3.4.13集群

ZooKeeper是一个开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper集群必须是奇数台,故要保证可靠性至少要三台。理论上至少要保证一半以上的机器运行即可。分Leader和Follower。Leader只有一个,Follower可以有多个,当Leader宕掉后,会在在其余Follower中选举一个作为Leader。

数据同步是指:每台Cilent 机器都连接一个Follower或Leader。当Cilent上数据被修改后,其连接的Follower或Leader上的Server会首先接收到,而Leader会随时检测所有Follower上的Server,如果有数据变化就将数据同步到其他Follower上。

Hadoop2.0中使用Zookeeper确保整个NameService中只有一个Active的NameNode(会有多个Standby的NameNode但处于备用状态),当一个NameNode 宕掉后,会将其他一个Standby的NameNode切换为Active状态。此外在Hbase集群中也会使用Zookeeper来保证Hbase集群中只有一个HMaster,同时通过Zookeeper将Hbase客户端、RegionServer、Master三者联系在一起。

一、环境

操作系统:CentOS6.9
软件版本:Zookeeper3.4.13
集群架构:
Node1:10.200.4.117(oracle02)
Node2:10.200.4.116(oracle03)
Node3:10.100.125.156(db01)

二、搭建Zookeeper集群

1、安装JDK(在所有Node操作)

因为Hadoop是由Scala和Java开发的,所以必须先安装JDK。

安装方法见:https://blog.csdn.net/andyguan01_2/article/details/86701213

2、创建Zookeeper用户(在所有Node操作)

我这边服务器上面已经安装了Hadoop,安装Zookeeper直接用的hadoop用户。如果要新建用户,可用以下命令:

groupadd hadoop 
useradd -g hadoop hadoop 
passwd hadoop

3、下载Zookeeper(在Node1操作)

只需下载到Node1,在Node1上安装完成后,再复制安装文件到其他Node。

我用的是最新版Zookeeper3.4.13。打开以下网址:

http://mirror.bit.edu.cn/apache/zookeeper/

点击zookeeper-3.4.13/ :
在这里插入图片描述
找到zookeeper-3.4.13.tar.gz的下载链接:

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
在这里插入图片描述
在root用户下载安装文件:

cd /install_pack/
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

在这里插入图片描述
4、安装Zookeeper

4.1 创建目录

在root用户分别创建Zookeeper的安装目录、数据目录、日志目录:(在所有Node操作)

#创建安装目录
mkdir -p /u01/app/zookeeper-3.4.13
#创建数据目录
mkdir -p /data/zookeeper_data
#创建日志目录
mkdir -p /data/zookeeper_log

更改安装目录、数据目录、日志目录的所有者为hadoop:(在所有Node操作)

chown -R hadoop:hadoop /u01/app/zookeeper-3.4.13
chown -R hadoop:hadoop /data/zookeeper_data
chown -R hadoop:hadoop /data/zookeeper_log

4.2 解压安装文件(在Node1操作)

在root用户解压安装文件到Zookeeper安装目录:

tar -zxvf /install_pack/zookeeper-3.4.13.tar.gz -C /u01/app

4.3 添加环境变量(在所有Node操作)

在root用户下执行:

vi /etc/profile

在最后增加以下内容:

export ZK_HOME=/u01/app/zookeeper-3.4.13
export PATH=$PATH:$ZK_HOME/bin

使配置文件生效:

source /etc/profile

4.4 修改配置文件(在Node1操作)

在hadoop用户进入conf目录:

cd /u01/app/zookeeper-3.4.13/conf/

在这里插入图片描述
zoo_sample.cfg是官方给的zookeeper样例文件,复制一份命名为zoo.cfg。(zoo.cfg是官方指定的文件命名规则)

cp /u01/app/zookeeper-3.4.13/conf/zoo_sample.cfg /u01/app/zookeeper-3.4.13/conf/zoo.cfg

修改zoo.cfg配置文件:

vi zoo.cfg

增加以下内容:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper_data
dataLogDir=/data/zookeeper_log
clientPort=2181
server.1=10.200.4.117:2888:3888
server.2=10.200.4.116:2888:3888
server.3=10.100.125.156:2888:3888

参数说明:

tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime时间就会发送一个心跳。

initLimit:
这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过5个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5乘以2000=10 秒。

syncLimit:
这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5乘以2000=10秒。

dataDir:
快照日志的存储路径。

dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多。

clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

创建myid文件:(在Node1输入"1";Node2输入"2";Node3输入"3")

echo "1" > /data/zookeeper_data/myid

4.5 在Node2和Node3安装Zookeeper

复制Node1的Zookeeper安装目录到Node2和Node3。在Node1的hadoop用户下执行:

scp -r /u01/app/zookeeper-3.4.13 root@10.200.4.116:/u01/app
scp -r /u01/app/zookeeper-3.4.13 root@10.100.125.156:/u01/app

修改安装文件的所有者。在Node2和Node3的root用户下分别执行:

chown -R hadoop:hadoop /u01/app/zookeeper-3.4.13

修改Node2的myid文件:(在hadoop用户)

echo "2" > /data/zookeeper_data/myid

修改Node3的myid文件:(在hadoop用户)

echo "3" > /data/zookeeper_data/myid

至此,Zookeeper在所有Node安装完成。

5、启动和停止服务

在hadoop用户进到Zookeeper的bin目录下:

cd /u01/app/zookeeper-3.4.13/bin

在这里插入图片描述
5.1 启动服务(在所有Node操作)

zkServer.sh start

在这里插入图片描述
5.2 检查服务状态

zkServer.sh status

通过status就能看到状态:

zk集群一般只有一个leader(领导者),多个follower(跟随者)。Leader不接受client的请求,负责进行投票的发起和决议,最终更新状态。Follower用于接收客户请求并返回客户结果,参与Leader发起的投票。

Node2是leader:
在这里插入图片描述
Node1和Node3是follower:
在这里插入图片描述
在这里插入图片描述
(注意:我操作的情况是,3个Node都启动后,执行zkServer.sh status才会显示Mode为leader或者follower。如果有任一Node还未启动,会显示Error contacting service. It is probably not running.

可以用jps命令查看zk的进程,这是zk整个工程的main。

jps

在这里插入图片描述
5.3 停止服务

zkServer.sh stop

在这里插入图片描述
完毕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值