如何通過CM遷移Zookeeper服務?
使用多個ZooKeeper服務
Cloudera Manager要求CDH中的依賴服務使用相同的ZooKeeper服務。如果配置從屬CDH服務以使用不同的ZooKeeper服務,Cloudera Manager將報告以下錯誤:
com.cloudera.cmf.command.CmdExecException:java.lang.RuntimeException:java.lang.IllegalStateException:違反假設:getAllDependencies返回了多個相同類型的不同服務在SeqFlowCmd.java第120行在com.cloudera.cmf.command.flow.SeqFlowCmd中運行()不依賴的CDH服務可以使用不同的ZooKeeper服務。例如,Kafka不依賴于ZooKeeper以外的任何服務。您可能為Kafka提供一個ZooKeeper服務,為其余CDH服務提供一個ZooKeeper服務。
使用Cloudera Manager添加ZooKeeper服務最低要求角色: 完全管理員
添加ZooKeeper服務時,“ 添加服務”向導會自動初始化數據目錄。
將Zookeeper服務器添加到現有集合時,需要滾動重新啟動所有zookeeper才能允許所有zookeeper服務器具有相同的配置
如果退出“ 添加服務”向導或未成功完成,則可以按照以下步驟初始化向導之外的目錄:轉到ZooKeeper服務。選擇Actions > Initialize。再次單擊“ 初始化”以確認。注意:如果未初始化數據目錄,則無法啟動ZooKeeper服務器。在生產環境中,您應該將ZooKeeper部署為具有奇數個服務器的集合。只要集合中的大多數服務器可用,ZooKeeper服務就可用。建議的最小集合大小是三個ZooKeeper服務器,Cloudera建議每個服務器在單獨的計算機上運行。此外,如果可能,ZooKeeper服務器進程應該有自己的專用磁盤存儲。
使用Cloudera Manager替換Zookeeper磁盤最低要求角色: 完全管理員
在Cloudera Manager中,更新數據目錄和事務日志目錄設置。停止一個ZooKeeper角色。將內容移動到新磁盤位置(根據需要修改安裝)。確保權限和所有權正確無誤。啟動ZooKeeper角色。對任何剩余的ZooKeeper角色重復步驟2-4。使用Cloudera Manager替換ZooKeeper角色最低要求角色: 完全管理員
轉到ZooKeeper實例。停止舊主機上的ZooKeeper角色。確認ZooKeeper服務已選擇其中一個剩余主機作為ZooKeeper狀態頁面上的領導者。請參閱確認ZooKeeper服務的選舉狀態。在ZooKeeper Instances頁面上,從舊主機中刪除ZooKeeper角色。在新主機上添加新的ZooKeeper角色。啟動新的ZooKeeper角色。在ZooKeeper狀態頁面上確認有一個領導者,所有其他主機都是粉絲。重啟其他ZooKeeper角色。重新啟動任何相關服務,例如HBase,具有HDFS高可用性的HDFS故障轉移控制器,具有高可用性的YARN或Mapreduce v1或其他服務。執行故障轉移以使一個HDFS NameNode處于活動狀態。請參閱使用Cloudera Manager手動故障轉移到備用NameNode。在非托管群集上添加或刪除ZooKeeper角色最低要求角色: 完全管理員
有關從命令行管理ZooKeeper的信息,請參閱ZooKeeper入門指南。
替換非托管群集上的ZooKeeper角色
最低要求角色: 完全管理員
這些說明假設您從命令行使用ZooKeeper。有關更多信息,請參閱ZooKeeper入門指南。
停止舊主機上的ZooKeeper角色。確認ZooKeeper Quorum已選出領導者。請參閱確認ZooKeeper服務的選舉狀態。在新服務器上添加新的ZooKeeper角色。確定 DATADIR 來自的位置 zoo.cfg文件。默認為在/ var / lib中/飼養員。從中識別ZooKeeper服務器的ID號 我的身份 配置中的文件: cat / var / lib / zookeeper / myid在所有ZooKeeper主機上,編輯 zoo.cfg文件,因此服務器ID引用新服務器主機名。例如:server.1 = zk1.example.org:3181:4181 server.2 = zk2.example.org:3181:4181 server.4 = zk4.example.org:3181:4181重啟ZooKeeper主機。確認ZooKeeper Quorum已選出領導者,其他主持人是粉絲。請參閱確認ZooKeeper服務的選舉狀態。重新啟動任何相關服務,例如HBase,具有HDFS高可用性的HDFS故障轉移控制器,或具有高可用性的YARN或Mapreduce v1。執行故障轉移以使一個HDFS NameNode處于活動狀態。請參閱使用命令行手動故障轉移到備用NameNode。確認ZooKeeper服務的選舉狀態
確定ZooKeeper主機的選舉狀態要求您已安裝telnet或nc(netcat),從具有對ZooKeeper主機的網絡訪問權限的主機運行。默認的ZooKeeper客戶端端口為2181.對每個ZooKeeper主機運行以下命令:echo“stat”| nc server.example.org 2181 | grep模式例如,關注者主機將返回消息:
模式:追隨者如果您愿意,可以使用telnet。$ telnet server.example.org 2181樣本輸出類似于以下內容。嘗試10.1.2.154 ......已連接到server.example.org。逃脫角色是'^]'。統計Zookeeper版本:3.4.5-cdh5.4.4--1,建于07/06/2015 23:54 GMT...延遲最小值/平均值/最大值:0/1/40收到:631發送:677連接:7杰出:0Zxid:0x30000011a模式:追隨者<----節點數:40外部主機關閉連接。