使用多個ZooKeeper服務
Cloudera Manager要求CDH中的依賴服務使用相同的ZooKeeper服務。如果配置從屬CDH服務以使用不同的ZooKeeper服務,Cloudera Manager將報告以下錯誤:
不依賴的CDH服務可以使用不同的ZooKeeper服務。例如,Kafka不依賴於ZooKeeper以外的任何服務。您可能為Kafka提供一個ZooKeeper服務,為其餘CDH服務提供一個ZooKeeper服務。
最低要求角色: 完全管理員
新增ZooKeeper服務時,“ 新增服務”嚮導會自動初始化資料目錄。
將Zookeeper伺服器新增到現有集合時,需要滾動重新啟動所有zookeeper才能允許所有zookeeper伺服器具有相同的配置
在生產環境中,您應該將ZooKeeper部署為具有奇數個伺服器的集合。只要集合中的大多數伺服器可用,ZooKeeper服務就可用。建議的最小集合大小是三個ZooKeeper伺服器,Cloudera建議每個伺服器在單獨的計算機上執行。此外,如果可能,ZooKeeper伺服器程序應該有自己的專用磁碟儲存。
有關從命令列管理ZooKeeper的資訊,請參閱ZooKeeper入門指南。
替換非託管群集上的ZooKeeper角色
這些說明假設您從命令列使用ZooKeeper。有關更多資訊,請參閱ZooKeeper入門指南。
確認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外部主機關閉連線。