Zookeeper的安装配置

一句话概括:

Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统。

我们单纯从字面意思也能看出:Zookeeper即动物园管理者,可见其在分式系统中的作用和地位。

那么有哪些动物了?Hadoop 大象,Hive 蜜蜂。哈哈,老外门还是很有意思的。


Zookeeper存在的意义?

就是封装,封装,把复杂的东西封装起来,把需要用户配置的地方以简单的接口API提供给大家使用。引用官档上的一句话如下:

Coordination services are notoriously hard to get right. They are especially prone to errors such as race conditions and deadlock.The motivation behind ZooKeeper is to relieve distributed applications the responsibility of implementing coordination services from scratch.

协调服务是很麻烦的,当出现竞争条件和死锁时特别容易出错。ZooKeeper的目标就是为了解决从头实现分布式应用程序协调服务麻烦的。

废话少说,开始安装。


1、下载软件包zookeeper-3.4.9.tar.gz

wget http://apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

2、开三台Linux虚拟机,我虚拟机系统为CentOS6.5。

主机名IP地址
RAC1192.168.2.101
RAC2192.168.2.102
RAC3192.168.2.103

注意:Zookeeper认为当连接到Zookeeper Service的服务器数量为一半以上时,也即有一小半的服务器宕机或者网络问题导致失去联系时,Zookeeper 依然可以继续运行。如果超过一半以上的服务器宕机或者失去联系,那么整个Zookeeper 就会挂掉。所以Zookeeper集群强烈推荐使用奇数个服务器。

解决安装包到指定位置

tar zxf zookeeper-3.4.9.tar.gz -C /opt

3、修改配置文件,修改内容如下:

[root@RAC1 conf]# pwd
/opt/zookeeper-3.4.9/conf
[root@RAC1 conf]# cat zoo.cfg | grep -v "^#"
tickTime=2000            #基本时间2000毫秒
initLimit=10             #启动时,follower连接到leader的时长,即10*tickTime
syncLimit=5              #运行时,发送消息和接收到请求的时长,即5*tickTime
dataDir=/opt/zookeeper-3.4.9/data   #数据目录的位置
clientPort=2181          #该服务监听客户端连接的端口

server.1=RAC1:2888:3888  #1为服务器编号,RAC1服务器主机名或者域名,leader和follower的通信端口,选举端口
server.2=RAC2:2888:3888  #这里的三个服务器也可以写同一主机名,不同的端口号,这样就是一个伪集群的搭建
server.3=RAC3:2888:3888

4、把以上程序目录及配置文件一起复制到其它节点

scp -r zookeeper-3.4.9/ root@92.168.2.102:/opt
scp -r zookeeper-3.4.9/ root@92.168.2.103:/opt

5、在三台服务器上修改一下HOST文件,以便配置文件中的主机名解析到对应的IP

[root@RAC1 opt]# cat /etc/hosts
192.168.2.101 RAC1
192.168.2.102 RAC2
192.168.2.103 RAC3

4、在三台服务器上分别创建数据目录,并在该目录下创建一个myid文件

mkdir -p /opt/zookeeper-3.4.9/data/
echo $id > /opt/zookeeper-3.4.9/data/myid 

#$id为server的id,和配置文件中的最后三行的配置是一一对应的。比如在RAC2服务器上:

echo 2 > /opt/zookeeper-3.4.9/data/myid 

5、在三台服务器上分别添加环境变量,在~/.bash_profile 文件结尾追加以下内容

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin

然后让变量生效

source ~/.bash_profile

6、启动服务,在三台服务器分别执行

[root@RAC1 conf]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/conf/zoo.cfg
Starting zookeeper ... STARTED

7、验证

[root@RAC1 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/conf/zoo.cfg
Mode: follower
[root@RAC2 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
[root@RAC3 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower

结果:Zookeeper部署成功。RAC2为Leader,RAC1和RAC3为Follower。


8、使用Zookeeper客户端工具

[root@RAC3 ~]# zkCli.sh -server 127.0.0.1:2181
.......
.......
Welcome to ZooKeeper!
.......
.......
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: 127.0.0.1:2181(CONNECTED) 0] 
[zk: 127.0.0.1:2181(CONNECTED) 0] 

这样就进入了命令行界面,接着我们help一下

[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        rmr path
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path

查看一下znode信息

[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 20] ls /zookeeper
[quota]
[zk: 127.0.0.1:2181(CONNECTED) 21] ls /zookeeper/quota
[]

篇幅问题,其它命令这里就一再赘述,大家自己玩。后面我会整理一些JAVA的API使用代码,请大家多多关注哦!!


补:如果大家在连接Zookeeper时,窗口一直输出信息如下:

 Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

很有可能是Zookeeper集群中有server挂掉导致。

0

热门评论