zookeeper是什麼
Zookeeper,一種分布式應用的協作服務,是Google的Chubby一個開源的實現,是Hadoop的分布式協調服務,它包含一個簡單的原語集,應用於分布式應用的協作服務,使得分布式應用可以基於這些接口實現諸如同步、配置維護和分集群或者命名的服務。
zookeeper是一個由多個service組成的集群,一個leader,多個follower,每個server保存一份數據部分,全局數據一致,分布式讀寫,更新請求轉發由leader實施.
更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行,數據更新原子性,一次數據更新要麼成功,要麼失敗,全局唯一數據試圖,client無論連接到哪個server,數據試圖是一致的.
為什麼要用zookeeper
大部分分布式應用需要一個主控、協調器或控制器來管理物理分布的子進程(如資源、任務分配等),目前,大部分應用需要開發私有的協調程序,缺乏一個 通用的機制.協調程序的反復編寫浪費,且難以形成通用、伸縮性好的協調器,ZooKeeper:提供通用的分布式鎖服務,用以協調分布式應用
集群容災性:
3台機器只要有2台可用就可以選出leader並且對外提供服務(2n+1台機器,可以容n台機器掛掉)。
Zookeeper分布式環境搭建:
1、 去Zookeeper官網下載Zookeeper. 以zookeeper-3.4.6.tar.gz為例
2、 [root@hadoopslave1 ~]# cd /bin
3、 [[root@hadoopslave1 bin]# tar -zxvf zookeeper-3.4.6.tar.gz
4、 [root@hadoopslave1 bin]# cd zookeeper-3.4.6/conf
5、 [root@hadoopslave1 conf]# vi zoo.cfg (如果zoo.cfg不存在,可以用zoo_sample.cfg拷貝一個並重命名 cp zoo_sample.cfg zoo.cfg)
6、 [root@hadoopslave1 conf]# vi zoo.cfg
tickTime=2000 initLimit=10syncLimit=5server.1=192.168.0.100:2888:3888 (hadoopslave1)server.2=192.168.0.200:2888:3888 (hadoopslave2) server.3=192.168.0.300:2888:3888 (hadoopslave3)注意:server.後面的數字是固定的,每個機上的zoo.cfg必須一樣,這個編號不能換,如果有新的從機,編號往下增加clientPort=2181dataDir=/bin/zookeeper-3.4.6/data (如果data這個文件夾不存在,手工創建)
7、 Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.100(hadoopslave1)中放1 安裝一台,並用scp –r /bin/zookkeper-3.4.6 root@hadoopslave2:/bin/就是集群設置(不要忘記修改環境變量) Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.200(hadoopslave2)中放2 scp –r /bin/zookkeper-3.4.6 root@hadoopslave3:/bin/ Vi /bin/zookeeper-3.4.6/data/myid 在192.168.0.300(hadoopslave3)中放3 這樣ZOOKEEPER集群已經安裝配置完成 7. 在ZOOKEEPER的部署目錄下,在各個節點上通過如下命令來啟動: [root@hadoopslave1 zookeeper-3.4.8]# bin/zkServer.sh start 在各個節點上通過如下命令來查看zookeeper狀態,是否正常啟動: [root@hadoopslave1 zookeeper-3.4.8]# bin/zkServer.sh status 8. 用JPS命令查看,服務進程QuorumPeerMain
http://xxxxxx/Linuxjc/1156056.html TechArticle