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