ZooKeeper的分布模式安裝
ZooKeeper(以下簡稱ZK)是一個分布式協調服務架構,可以做到各節點之間的資料強一緻性。簡單的了解就是在一個節點修改某個變量的值後,在其他節點可以最新的變化,這種變化是事務性的。通過在ZK節點上注冊監聽器,就可以獲得資料的變化。
1.确定叢集結構
我們打算在三個節點安裝ZK,分别是192.168.1.221(hadoop1)、192.168.1.222(hadoop2)、192.168.1.223(hadoop3)。首先在hadoop1中部署。
注意:一定要保證各節點的系統時間相同。
2.解壓縮、設定環境變量
在hadoop1,我們把zookeeper-3.4.5.tar.gz複制到/usr/local目錄下,解壓縮,重命名為zk,然後在/etc/profile中設定環境變量。具體指令可以參照前面的文章。
3.修改叢集的配置
進入到${ZOOKEEPER_HOME}/conf目錄下,有一個檔案是zoo_sample.cfg,重命名為zoo.cfg。打開這個檔案進行編輯
變量dataDir表示資料存放的目錄,把該值修改為/usr/local/zk/data。
在檔案的最後增加三行内容,如下
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
每一行表示一個配置資訊,現在解釋一下每行的内容,以第一行為例。其中的server是固定名稱;1隻是一個标記,隻要保證與下面的所有标記不重複即可;後面的hadoop1表示主機名,即ZK部署的主機;2888表示ZK之間通信用的端口;3888表示ZK之間選舉用的端口。
然後建立/usr/local/zk/data目錄。
進入data目錄,建立檔案myid。myid的内容是該主機名對應的标記數字。如果是hadoop1,那麼數字就是1;如果是hadoop2,那麼數字就是2;如果是hadoop3,那麼數字就是3。
4.配置其他節點
執行指令,把安裝檔案從hadoop1複制到其他節點,如下
scp -rq /usr/local/zk hadoop2:/usr/local
scp -rq /usr/local/zk hadoop3:/usr/local
scp /etc/profile hadoop2:/etc/
scp /etc/profile hadoop3:/etc/
進入hadoop2中,把檔案myid的内容修改為2;進入hadoop3,把檔案myid的内容修改為3。
5.啟動叢集
在三個節點的終端中,分别執行指令
zkServer.sh start
這樣,就啟動了ZK叢集。
6.驗證
我們如何判斷啟動是否成功哪?
可以在終端執行jps檢視,會看到一個新的java程序QuorumPeerMain。這就是ZK的java程序。
也可以在三個終端分别執行指令
zkServer.sh status
會看到一個輸出資訊含有Mode: Leader,兩個輸出資訊含有Mode: Follower。