本文匯總了使用Zookeeper時的常見問題。
ZooKeeper服務不穩定,發生異常重啟等情況,怎么辦?
造成服務不穩定的情況可能有很多,最常見的情況是znode數量過大或者snapshot過大,由于ZooKeeper將所有的znode維護在內存中,并且需要在節點間進行數據同步,因此過大的znode數量或者容量會對服務穩定性造成影響。ZooKeeper的定位是一個分布式協調服務,不能把ZooKeeper當作一個文件系統來使用,通常,znode數量應盡量保持在10萬以下,snapshot大小應在800
MB以下。
- 您可以在E-MapReduce控制臺的集群監控頁簽,查看Zookeeper的znode數量監控。
- 查看snapshot大小。
- 您可以先在ZooKeeper服務的配置頁簽,搜索并查看dataDir的參數值,獲取Zookeeper的數據目錄。
- 執行以下命令,在ZooKeeper數據目錄下查看snapshot的大小。
ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*
如果出現znode數量或snapshot過大的情況,需要排查znode分布情況,避免相關上層應用對ZooKeeper的過度使用。
如何平滑遷移ZooKeeper的數據目錄?
如果因為磁盤空間或者磁盤性能等問題,希望更改ZooKeeper的數據目錄,您可以按照以下步驟逐個節點修改并遷移數據目錄,實現不停止ZooKeeper服務的平滑遷移。
說明 例如,將數據目錄從/mnt/disk1/zookeeper/data更改為/mnt/disk2/zookeeper/data。集群的master-1-2 節點為leader,master-1-1和master-1-3節點為follower,遷移時建議先操作follower再操作leader。
- 修改數據目錄并保存配置。
- 在ZooKeeper服務的配置頁簽,搜索dataDir參數,修改參數值為新目錄/mnt/disk2/zookeeper/data。
- 單擊保存。
- 在彈出對話框中,輸入執行原因,單擊保存。
- 部署配置。
- 在ZooKeeper服務的配置頁簽,單擊部署客戶配置。
- 在彈出的對話框中,輸入執行原因,單擊確定。
- 在確認對話框中,單擊確定。
- 可選:驗證數據目錄。
- 使用SSH方式登錄集群,詳情請參見登錄集群。
- 執行以下命令,查看zoo.cfg配置文件的dataDir參數值。
cat /etc/emr/zookeeper-conf/zoo.cfg
顯示數據目錄已更新為新目錄。
- 停止master-1-1節點。
- 在ZooKeeper服務的部署拓撲頁簽,單擊master-1-1節點操作列的停止。
- 在執行集群操作對話框中,輸入執行原因,單擊確定。
- 在確認對話框中,單擊確定。
- 目錄遷移。
- 使用SSH方式登錄集群,詳情請參見登錄集群。
- 執行以下命令,在master-1-1節點進行目錄遷移及相關權限設置。
sudo rm -rf /mnt/disk2/zookeeper && sudo cp -rf /mnt/disk1/zookeeper /mnt/disk2/zookeeper && sudo chown hadoop:hadoop -R /mnt/disk2/zookeeper
- 啟動master-1-1節點。
- 在ZooKeeper服務的狀態頁簽,單擊ZookeeperServer操作列的啟動。
- 在彈出的對話框中,輸入執行原因,單擊確定。
- 在確認對話框中,單擊確定。
刷新頁面,直至master-1-1節點的健康狀態顯示為良好。
- 登錄master-1-3節點,重復執行步驟4~步驟6。
- 登錄master-1-2 節點,重復執行步驟4~步驟6。
待所有節點恢復正常時,節點遷移完成。說明 master-1-2 節點原本為leader,執行停止操作后會變為follower,leader會切換到另兩個節點的任一節點上。