標籤:同步 hadoop 叢集
本文簡單介紹了ZooKeeper的基本知識。
(1)概述
①什麼是ZooKeeper?
Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分布式協調服務
它包含一個簡單的原語集,分布式應用程式可以基於它實現同步服務,配置維護和命名服務等
②Zookeeper的角色
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/5A/wKioL1OzxZahBuIGAAECR45s2BU483.jpg" title="圖片1.jpg" alt="wKioL1OzxZahBuIGAAECR45s2BU483.jpg" />
③為什麼使用Zookeeper?
大部分分布式應用需要一個主控、協調器或控制器來管理物理分布的子進程(如資源、任務分配等)
目前,大部分應用需要開發私人的協調程式,缺乏一個通用的機制
協調程式的反覆編寫浪費,且難以形成通用、伸縮性好的協調器
ZooKeeper:提供通用的分布式鎖服務,用以協調分布式應用
④Zookeeper的特性
Zookeeper是簡單的
Zookeeper是富有表現力的
Zookeeper具有高可用性
Zookeeper採用松耦合互動方式
Zookeeper是一個資產庫
(2)安裝
①解壓
命令:tar -zvxf zookeeper-3.4.5.tar.gz
②為了以後操作方便重新命名解壓後檔案夾
命令:mv zookeeper-3.4.5 zk
③設定環境變數
命令:vim /etc/profile
增加ZOOKEEPER_HOME並修改PATH
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/65/wKioL1OzzC6wNBPxAACFSjhm1qo198.jpg" title="zk2.png" alt="wKioL1OzzC6wNBPxAACFSjhm1qo198.jpg" />
修改完成之後重新載入配置:
source /etc/profile
④修改zookeeper設定檔
修改在zk/conf下zoo_sample.cfg為zoo.cfg,並編輯該檔案
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/69/wKiom1OzzxfivrA0AAJY5yFzeks033.jpg" title="zk3.png" alt="wKiom1OzzxfivrA0AAJY5yFzeks033.jpg" />
其中dataDir表示叢集的資料,server.後面的編號表示zookeeper叢集主機的編號,hadoop0是我的主機名稱,2888與3888是連接埠,2888是zookeeper角色的連接埠,3888是zookeeper傳輸資料的連接埠。
⑤建立檔案夾/usr/local/zk/data,並在檔案夾中建立myid檔案,內容為當前主機對應的zookeeper叢集編號,例如當前主機是hadoop0,myid檔案內容如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/38/6E/wKiom1Oz0NDjyIzLAAAt-eX0C1c516.jpg" title="zk4.png" alt="wKiom1Oz0NDjyIzLAAAt-eX0C1c516.jpg" />
⑥同理修改其他主機上的檔案,也可以用scp進行複製。
⑦啟動zookeeper
進入bin目錄下執行啟動命令,命令如下:
zkServer.sh start
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/38/71/wKiom1Oz0zSTy_XeAADfRppAXQA298.jpg" title="zk5.png" alt="wKiom1Oz0zSTy_XeAADfRppAXQA298.jpg" />
此時,hadoop0節點的zookeeper叢集啟動,而後可以看一下zookeeper.out檔案,內容如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/38/71/wKioL1Oz042BC6RtAAfA06RNE3U816.jpg" title="zk6.png" alt="wKioL1Oz042BC6RtAAfA06RNE3U816.jpg" />
可以看到叢集已經識別myid檔案,而由於其他節點的叢集沒有啟動所以會報錯,此時只需要把其他節點中的叢集啟動即可。
(3)Zookeeper的角色
領導者(leader),負責進行投票的發起和決議,更新系統狀態
學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用於接受用戶端請求並想用戶端返回結果,在選主過程中參與投票
Observer可以接受用戶端串連,將寫請求轉寄給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴充系統,提高讀取速度
用戶端(client),請求發起方
啟動叢集後,可以使用zkServer.sh status來查看角色
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/38/75/wKioL1Oz1PaT_tYmAABzdFW_R2E531.jpg" style="float:none;" title="zk7.png" alt="wKioL1Oz1PaT_tYmAABzdFW_R2E531.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/76/wKiom1Oz1SXwFhvNAABj3NM7qQs943.jpg" style="float:none;" title="zk8.png" alt="wKiom1Oz1SXwFhvNAABj3NM7qQs943.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/38/75/wKioL1Oz1PaSjX5-AABllK-qZxQ633.jpg" style="float:none;" title="zk9.png" alt="wKioL1Oz1PaSjX5-AABllK-qZxQ633.jpg" />
(3)zookeeper的shell基本操作
使用zkCli.sh可以進入zookeeper的shell操作端
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/78/wKiom1Oz1_PBoYhzAAScq-8k2kw185.jpg" title="zk10.png" alt="wKiom1Oz1_PBoYhzAAScq-8k2kw185.jpg" />
鍵入help(任意不支援的命令即可)可以查看支援的命令:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/38/78/wKiom1Oz2EvQiobNAAETsSXIovY857.jpg" title="zk11.png" alt="wKiom1Oz2EvQiobNAAETsSXIovY857.jpg" />
使用ls /查看目錄,同時也可以看到zookeeper會自動累加操作命令數:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/77/wKioL1Oz2FXwTgvoAABWL050rJQ404.jpg" title="zk12.png" alt="wKioL1Oz2FXwTgvoAABWL050rJQ404.jpg" />
建立節點並查看:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/78/wKiom1Oz2NiiezFxAAE0AK8rc_4225.jpg" title="zk13.png" alt="wKiom1Oz2NiiezFxAAE0AK8rc_4225.jpg" />
此時,如果用其他節點登入,可以看到資料已經同步到叢集中了。
本文出自 “Xlows” 部落格,請務必保留此出處http://xlows.blog.51cto.com/5380484/1433662