详细Zookeeper分布式集群的搭建

Zookeeper介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等,又分为单机模式伪分布式完全分布式三种集群模式。

单机模式
在zoo.cfg中只配置一个server.id就是单机模式了;
这种模式下,如果当前主机宕机,那么所有依赖于当前zookeeper服务工作的其他服务器都不能在进行正常工作,这种事件称为单节点故障。所以这种模式一般用在测试环境。

伪分布式
在zoo.cfg中配置多个server.id,其中ip都是当前主机,而端口各不相同而已,启动时就是伪分布式集群模式了。

完全分布式
多台机器各自配置zoo.cfg文件,将各自互相加入服务器列表,下面给大家搭建的集群就是这种完全分布式

完全分布式搭建
前面在安装hive的时候和大家说过伪分布式zookeeper的搭建,今天就讲下完全分布式zookeeper集群的搭建,以3台虚拟机为例,先建立三台虚拟机,保证他们可以互通,且都有java环境,主机名称还是命名为hadoop2、hadoop3、hadoop4,静态ip就不多说了前面有讲过如何配置。

1.先配置一台hadoop2,下载好安装包以后,以3.4.5版本为例,上传到linux系统下的opt目录下,准备解压
tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz

2.重命名后放到opt目录下新的子目录下
mkdir soft
mv zookeeper-3.4-5-cdh5.14.2 soft/zk345

3.进入zk345下的conf目录下,复制zoo-sample.cfg重命名为zoo.cfg,通过修改zoo.cfg来对zookeeper进行配置。这个名字固定写死,因为zookeeper启动会检查这个文件,根据这个配置文件里的信息来启动服务。
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

添加以下配置

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/soft/zk345/zkData
server.2=192.168.5.129:2888:3888
server.3=192.168.5.139:2888:3888
server.4=192.168.5.149:2888:3888

解析
dataDir:指定zookeeper将数据保存在哪个目录下,最好不要写在/tmp下这是默认的文件,所以一定要修改这个地址,我改的是安装的目录下的zkData
dataDir=/opt/soft/zk345/zkData

tickTime:服务器之间或客户端与服务器之间维持心跳的时间间隔, tickTime以毫秒为单位

initLimit:集群中的follower服务器(F)与leader服务器(L)之间的初始连接心跳数

syncLimit:集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数

server2:配置多个表示是完全分布式,多台机器各自配置。serverID必须是唯一,后面跟自己的主机ip,zookeeper服务默认的端口号为2888和3888,3888是用来选leader

4.创建数据存放文件夹
cd /opt/soft/zk345/
mkdir zkData

这样一台机大至就配好了,然后把配置好的文件拷贝给另外2台机

scp -r zookeeper345/ root@hadoop3:$PWD 
scp -r zookeeper345/ root@hadoop4:$PWD 

特别注意:
接下来的步骤很重要,很多人就入坑了

接下来在每台机的每个zkData文件夹下创建一个文件,名字必须叫myid,内容填你创建server写的id,必须一致,比如hadoop2配置的server2,那么内容就填2,依次类推
vi myid

hadoop2机的话配置的是server2内容就写2
hadoop3机的话配置的是server3内容就写3
hadoop4机的话配置的是server4内容就写4

5.启动zookeeper
zookeeper操作命令有几个给大家说下,可以使用绝对路径操作这些命令,也可使用相对路径操作这些命令,相对路径需要进到zookeeper服务的bin目录进行操作

#启动ZK服务: 
bin/zkServer.sh start
或  zkServer.sh start
#停止ZK服务: 
bin/zkServer.sh stop
或  zkServer.sh stop
#重启ZK服务: 
bin/zkServer.sh restart
或  zkServer.sh restart
#查看ZK服务状态: 
bin/zkServer.sh status
或   zkServer.sh status

6.Zookeeper集群必须每台一个个单独启动,
jps命令查看线程

如图所示,说明已启动成功,然后用jps看进程是否启动

当出现如图标记的地方时,才正式启动zookeeper,另外2台也是同样去操作,这样一个集群就搭建好了!

启动集群的时候,集群数量启动没有超过一半,状态会有错误提示,当集群启动数量超过一半就会自动转为正常状态,并且此台使集群进入正常工作状态的服务器会成为leader角色,集群中其他服务器的角色为flower,配置的集群个数最好是奇数个

leader选举机制:
最开始集群启动时,会选择最先达到过半条件的机器作为leader。
当leader挂掉后,会通过过半投票选出具有最高任务编号的机器成为新的leader。如果有相同的任务编号,那么在配置文件中,谁的serverid大谁为leader。

当Hadoop集群和zookeeper集群都正常搭建成功之后,怎么能让它高可用呢,敬请期待!,关注我,一一给大家讲述!

Hadoop高可用集群,基于Zookeeper集群详细搭建流程!

猜你喜欢

转载自blog.csdn.net/zp17834994071/article/details/107165469