天天看點

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 = 
           

繼續閱讀