Zookeeper集群服務部署


  Zookeeper是一個分布式、開源的分布式應用程序協調服務,是Google的Chubby的開源實現,也是和Hadoop、Hbase相互配合的重要組件,作用就是為分布式應用程序提供一致性服務,包括配置維護、名字服務、分布式同步等

  接下來在之前配置好hadoop集群環境的3台虛擬機上配置zookeeper集群,配置zookeeper集群之前和hadoop一樣,都要配置各主機之間可以正常通信,包括:主機名修改、hosts映射、開放端口或者關閉防火牆這些,配置和hadoop之前的准備工作完全一樣,這里就不細說了

  首先去apache官網下載zookeeper,首頁網址是:http://zookeeper.apache.org/

  然后點擊下方的download超鏈接,再次點擊下面另一個download超鏈接就進入鏡像選取頁面,進行下載即可

  地址是:http://www.apache.org/dyn/closer.cgi/zookeeper/

  

  這里下載的版本是:zookeeper-3.4.6,下載成功之后,上傳到其中一台主機的指定目錄下,這里三台主機是:hadoopha、hadoop1、hadoop2,這里上傳到hadoopha下

  在/usr/下新建目錄zookeeper:mkdir /usr/zookeeper

  然后zookeeper安裝包並放到新建好的目錄下:

$ tar -xvzf zookeeper-3.4.6.tar.gz
$ mv zookeeper-3.4.6/ /usr/zookeeper/

  然后在指定位置創建數據目錄和日志目錄,這個自己定義:

$ mkdir /usr/zookeeper/zookeeper
$ mkdir /usr/zookeeper/zookeeper/log

  然后在數據目錄下創建myid文件,並寫入ID:

echo 1 > /usr/zookeeper/zookeeper/myid

  這個myid文件內容是集群中各個節點的標識,必須是數字,到后續應該對每台機器依次修改

  然后進入zookeeper的安裝目錄下的conf目錄執行如下操作編輯配置文件:

cd /usr/zookeeper/zookeeper-3.4.6/conf && mv zoo_sample.cfg zoo.cfg && vim zoo.cfg

  數據目錄去掉注釋修改配置如下:

  dataDir=/usr/zookeeper/zookeeper

  追加一行事務日志目錄配置:

  dataLogDir=/usr/zookeeper/zookeeper/log

  保留文件數目配置,默認為3:

  autopurge.snapRetainCount=3

  添加一行清理頻率的配置,單位是小時,默認為0,表示不會自動清理,應該根據需要配置一個>=1的整數,這里配置為1:

  autopurge.purgeInterval=1

  在最后添加如下配置:

  server.1=hadoopha:2888:3888
  server.2=hadoop1:2888:3888
  server.3=hadoop2:2888:3888

  這個定義了每個主機對應的節點,server.x,x數值應和myid保持一致,當zookeeper啟動時會讀取myid文件和zoo.cfg配置信息,然后確定唯一的節點

  后面的端口號是集群中Leader和Follower之間進行通信的端口,一般不用修改,保存即可

  然后把配置好的整個目錄發送到另外兩台主機,實現文件同步:

$ scp -r /usr/zookeeper/ hadoop1:/usr/
$ scp -r /usr/zookeeper/ hadoop2:/usr/

  復制完成之后,修改另外兩台機器的myid文件分別是:hadoop1->2,hadoop2->3

  現在都配置完畢了,接下來在3台主機上依次運行bin/zkServer.sh start啟動Zookeeper服務,一定是每台主機都要啟動

  啟動流程是:系統首先會選取Leader,充當Leader的這台機器相當於領導者,負責進行投票的發起和決議,更新系統狀態;然后會進行同步數據,通過配置好的端口進行;最后進入工作流程。

  啟動成功之后,可以通過命令jps查看執行進程

  

  如果有QuorumPeerMain這個進程則代表啟動成功

  可以通過:bin/zkServer.sh status查看各節點角色

  

  此時,hadoop1為leader節點,其他的節點均為follower,這個結果是選舉出來的

  可以通過命令:bin/zkServer.sh stop來停止zookeeper服務

  接下來可以測試一下服務的故障轉移是否好用:

  在hadoop1節點中殺死leader服務進程:

  

  可以看出進程確實不存在了,然后在剩余兩個節點分別執行:bin/zkServer.sh status,可以發現hadoop3由follower節點變為leader節點,說明故障進行了轉移,zookeeper集群是可用的

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM