天天看点

Zookeep分布式集群搭建

Zookeeper不仅可以单机提供服务,同时也支持多机组成集群来提供服务,实际上Zookeeper还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个Zookeeper实例。

Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。

集群容灾性:3台机器只要有2台可用就可以选出leader并且对外提供服务(2n+1台机器,可以容n台机器挂掉)。

这里我使用hadoop1,hadoop2,hadoop3为例,搭建步骤。

安装之前请先关闭防火墙!!!

1、官网下载zookeeper安装包

zookeeper-3.4.5.tar.gz

2、解压缩、重命名、设置环境变量

[[email protected] install]# tar -zxvf zookeeper-3.4.5.tar.gz

[[email protected] install]# mv zookeeper-3.4.5 zookeeper

vim /etc/profile

export ZOOKEEPER_HOME=/install/zookeeper
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
           

source /etc/profile

3、在conf目录下,修改文件

mv zoo_sample.cfg zoo.cfg

4、编辑该文件,执行

vi zoo.cfg

修改

#zk的的快照日志存放目录
dataDir=/install/zookeeper/data

#zk的事务日志的存放目录,如果不配置dataLogDir,
#那么zk的事务日志和快照日志都将存储在dataDir中,这样将严重影响zk的性能
dataLogDir=/install/zookeeper/dataLog
           

新增

server.0=hadoop1::
server.1=hadoop2::
server.2=hadoop3::
           

2888表示zookeeper程序监听端口,3888表示zookeeper选举通信端口。

5、创建文件夹

mkdir /install/zookeeper/data

/install/zookeeper/dataLog

6、在data目录下,创建文件myid,值为0

[[email protected] data]# vim myid [[email protected] data]# more myid

7、把zookeeper目录复制到hadoop2和hadoop3中

cd /install

scp -r zookeeper/ hadoop2:/install/

scp -r zookeeper/ hadoop3:/install/

复制环境变量

scp /etc/profile hadoop2:/etc/

scp /etc/profile hadoop3:/etc/

使环境变量生效

ssh hadoop2

source /etc/profile

ssh hadoop3

source /etc/profile

把hadoop2,hadoop3中相应的myid的值分别改为1,2

[[email protected] data]# vi myid [[email protected] data]# more myid

1
           

hadoop3同上

8、启动,在三个节点上分别执行命令

[[email protected] install]# zkServer.sh start

JMX enabled by default
Using config: /install/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
           

9、检验,在三个节点上分别执行命令

[[email protected] install]# zkServer.sh status

JMX enabled by default
Using config: /install/zookeeper/bin/../conf/zoo.cfg
Mode: follower
           

能够看到是leader,还是follower。

停止

[[email protected] install]# zkServer.sh stop

10、命令行操作

进入命名行:执行

zkCli.sh

如果配置文件中更改了端口号2181,则需要指定端口

zkCli.sh -server IP:port

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
           

查看目录

[zk: localhost:2181(CONNECTED) 6] ls /zookeeper

创建目录

[zk: localhost:2181(CONNECTED) 10] create /liguodong hadoop

Created /liguodong

查看内容

[zk: localhost:2181(CONNECTED) 13] get /liguodong

hadoop
cZxid = 0x100000002
ctime = Tue Mar 31 01:37:29 PDT 2015
mZxid = 0x100000002
mtime = Tue Mar 31 01:37:29 PDT 2015
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
           

修改内容

[zk: localhost:2181(CONNECTED) 2] set /liguodong chinese

cZxid = x100000002
ctime = Tue Mar  :: PDT 
mZxid = x100000004
mtime = Tue Mar  :: PDT 
pZxid = x100000002
cversion = 
dataVersion = 
aclVersion = 
ephemeralOwner = x0
dataLength = 
numChildren = 
           

继续阅读