0
点赞
收藏
分享

微信扫一扫

Zookeeper系列2:如何在集群上安装zookeeper与参数详解

一:zookeeper安装介绍

1.因为是zookeeper也是用java实现的,所有要依赖jdk才能运行。所以单独安装时(如果集群上尚未安装jdk的话),要先安装JDK。需要JDK-linux版本

2.需要对应的zookeeper-linux版本安装包

3.zookeeper因为一般是非集群


尖叫提示:

zookeeper 是一个 java 应用框架,主要是起到分布式协调作用。在 hadoop中主要的运用是HA机制,即:HDFS HA机制和yarn HA机制的实现。HDFS HA 功能通过配置 Active/Standby 两个 nameNodes 实现在集群中对 NameNode 的热备来份解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将 NameNode 很快的切换到另外一台机器。其次 resourcemanager HA 机制。 HA 机制最重要的一点是:状态同步。所以某种程度来说,如果你不需要高可用,也可以不装zookeeper。当然kafaka集群是需要的。



二:单机安装zookeeper流程


 一:准备工作


 1.安装jdk (具体流程参考hdfs章节),配置环境变量

 2.通过filezilla工具拷贝zookeeper到到linux系统下:/opt/softwares

 3.修改tar包权限

      chmod u+x zookeeper-3.4.10.tar.gz

 4.解压到指定目

 [admin@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

二:配置修改


 1. 将/opt/module/zookeeper-3.4.10/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;

 (mv 进入zoo.cfg文件:vim zoo.cf) 修改dataDir路径为

 dataDir=/opt/module/zookeeper-3.4.10/data/zkData “data/zkData”这个路径可以自定义,但是myid要放在这个路径下。

 在/opt/module/zookeeper-3.4.10/这个目录上创建data/zkData文件夹

 mkdir -p data/zkData


2.操作zookeeper

(1)启动zookeeper

[admin@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start

(2)查看进程是否启动

 [admin@hadoop102 zookeeper-3.4.10]$ jps

4020 Jps

4001 QuorumPeerMain

(3)查看状态:

[admin@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: standalone

(4)启动客户端:

[admin@hadoop102 zookeeper-3.4.10]$ bin/zkCli.sh

(5)退出客户端:

[zk: localhost:2181(CONNECTED) 0] quit

(6)停止zookeeper

[admin@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh stop


二:分布式zookeeper集群的搭建

0)集群规划

 因为zk的半数机制,至少要有三台节点。

在hadoop2、hadoop3和hadoop4三个节点上部署Zookeeper。通常的做法是先配置一台结点,配置完成后分发到其他结点上。因为分布式安装的结点的配置文件基本都是相同的。针对部分特殊文件在逐一修改。


1)解压安装

(1)解压zookeeper安装包到/opt/module/目录下

[admin@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/


(2)在/opt/module/zookeeper-3.4.10/这个目录下 创建data/zkData

 mkdir -p data/zkData


(3)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg

 mv zoo_sample.cfg zoo.cfg


2)配置zoo.cfg文件

 (1)具体配置

 增加如下配置

 #######################cluster##########################

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

(2)配置参数解读

Server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;

B是这个服务器的ip地址;

C是这个服务器与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。


3)集群操作

(1)在/opt/module/zookeeper-3.4.10/data/zkData目录下创建一个myid的文件

 touch myid

       添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码,notepad++编译没有

        后缀名文件时候容易出现乱码。


(2)编辑myid文件

 vi myid

 在myid文件中,填写上面Server.A=B:C:D中的A代表的数字即可,即当前结点服务器的编号。每个结点的这个配置都不相同。

 每台机器的myid就是自己的id.可以在一台主机配置完后分完到别的主机。

然后其余的再用自己的服务器对应的编号echo A > myid 覆盖之前的即可.


(3) 拷贝配置好的zookeeper到其他机器上

 scp -r zookeeper-3.4.10/ root@hadoop3:/opt/module/

 scp -r zookeeper-3.4.10/ root@hadoop4opt/module/

 并分别修改myid文件中内容为3、4

(4) 分别启动zookeeper

 [root@hadoop2 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop3 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop4 zookeeper-3.4.10]# bin/zkServer.sh start

(5)查看状态:启动成功后,如果状态不对,也是没有搭建成功的

[root@hadoop2 zookeeper-3.4.10]# cd

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

[root@hadoop3 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: leader

[root@hadoop4 zookeeper-3.4.5]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower


补充:zookeeper配置文件conf/zoo.cfg中参数的解释


解读zoo.cfg 文件中参数含义

1)tickTime:通信心跳数,Zookeeper服务器心跳时间,单位毫秒

Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。


它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

2)initLimit:LF初始通信时限


集群中的follower跟随者服务器(F)与leader领导者服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。


投票选举新leader的初始化时间

Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。

Leader允许F在initLimit时间内完成这个工作。

3)syncLimit:LF同步通信时限


集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,

Leader认为Follwer死掉,从服务器列表中删除Follwer。


在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。


如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。

4)dataDir:数据文件目录+数据持久化路径

保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。

5)clientPort:客户端连接端口2181


举报

相关推荐

0 条评论