zookeeper 入門指南


ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,它包含一個簡單的原語集,分佈式應用程序可以基於它實現同步服務,配置維護和命名服務等。Zookeeper是hadoop的一個子項目,其發展歷程無需贅述。在分佈式應用中,由於工程師不能很好地使用鎖機制,以及基於消息的協調機制不適合在某些應用中使用,因此需要有一種可靠的、可擴展的、分佈式的、可配置的協調機制來統一系統的狀態。

一、環境要求

二、下載

http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.6.tar.gz

三、獨立模式

   將 conf/zoo_sample.cfg 改爲 conf/zoo.cfg

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

tickTime:它是用來做什麼的心跳和最小會話超時將兩倍ticktime。

dataDir:存儲在內存數據庫快照中的位置,除非另有說明,將更新的事務日誌記錄到數據庫中。

clientPort:客戶端連接的端口


四、管理zookeeper存儲

五、連接zookeeper

Java: Use

bin/zkCli.sh -server 127.0.0.1:2181


Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]


[zkshell: 0] help
ZooKeeper host:port cmd args
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit
        printwatches on|off
        create path data acl
        stat path [watch]
        listquota path
        history
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        deleteall path
        setquota -n|-b val path


ls

[zkshell: 8] ls /
[zookeeper]


create

[zkshell: 9] create /zk_test my_data
Created /zk_test


[zkshell: 11] ls /
[zookeeper, zk_test]


get

[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0



set

[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
      


delete

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]



六、編程


七、集羣模式

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

最後,請注意每個服務器名稱後的端口號:“2888”和“3888”。同行使用前端口連接到其他同行。這樣的連接是必要的,以便同行可以溝通,例如,同意的順序更新。更具體地說,一個ZooKeeper服務器使用此端口連接的追隨者到領導者。當一個新的領導人出現,跟隨者打開一個TCP連接使用此端口的領袖。因爲默認的領導人選舉也使用TCP,我們目前需要一個端口的選舉。這是服務器進入的第二端口。



參考資料

http://www.sxt.cn/u/756/blog/5071





        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章