必威电竞|足球世界杯竞猜平台

ZooKeeper
來源:互聯網

ZooKeeper,是一個集群管理工具,提供配置維護、域名服務、分布式同步和組服務等。ZooKeeper有單機模式和集群模式兩種安裝模式。

ZooKeeper的各個服務節點組成一個集群(如果有2n+1個節點,則允許n個節點失效)。ZooKeeper集群中有兩個角色:一個是Leader,主要負責寫服務和數據同步;另一個是Follower,提供讀服務。當Leader失效后,Follower將在所有Follower中重新選舉出新的Leader。

ZooKeeper主要用于實現分布式系統中Master選舉、分布式協調、集群管理、負載均衡、分布式鎖等功能。在HBase集群中,ZooKeeper服務器為其提供穩定可靠的協作服務管理。

軟件簡介

ZooKeeper是以Fast Paxos算法為基礎的,Paxos 算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fast Paxos作了一些優化,通過選舉產生一個leader (領導者),只有leader才能提交proposer,具體算法可見Fast Paxos。因此要想弄懂ZooKeeper首先得對Fast Paxos有所了解。

ZooKeeper的基本運轉流程:選舉Leader、同步數據、選舉Leader過程中算法有很多,但要達到的選舉標準是一致的、Leader要具有最高的執行ID,類似root權限、集群中大多數的機器得到響應并接受選出的Leader。

HBase內置有ZooKeeper,也可以使用外部ZooKeeper。讓HBase使用一個已有的不被HBase托管的Zookeep集群,需要設置 conf/hbase env sh文件中的HBASE_MANAGES_ZK 屬性為 false。

接下來指明Zookeeper的host和端口。可以在 hbase-site.XML中設置, 也可以在HBase的CLASSPATH下面加一個zoo.cfg配置文件HBase 會優先加載 zoo.cfg 里面的配置,把hbase-site.xml里面的覆蓋掉。

當HBase托管ZooKeeper的時候,Zookeeper集群的啟動是HBase啟動腳本的一部分,但客戶需要自己去運行。

客戶可以用這條命令啟動ZooKeeper而不啟動HBase. HBASE_MANAGES_ZK 的值是 false,如果客戶想在HBase重啟的時候不重啟ZooKeeper,客戶可以這樣做。對于獨立Zoopkeeper的問題,客戶可以在 Zookeeper啟動得到幫助。

軟件特點

在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或獲取數據。如果在創建znode時Flag設置為EPHEMERAL,那么當創建這個znode的節點和Zookeeper失去連接后,這個znode將不再存在在Zookeeper里,Zookeeper使用Watcher察覺事件信息。當客戶端接收到事件信息,比如連接超時、節點數據改變、子節點改變,可以調用相應的行為來處理數據。

Zookeeper的Wiki頁面展示了如何使用Zookeeper來處理事件通知,隊列,優先隊列,鎖,共享鎖,可撤銷的共享鎖,兩階段提交。那么Zookeeper能做什么事情呢,簡單的例子:假設ZooKeeper有20個搜索引擎的服務器(每個負責總索引中的一部分的搜索任務)和一個總服務器(負責向這20個搜索引擎的服務器發出搜索請求并合并結果集),一個備用的總服務器(負責當總服務器宕機時替換總服務器),一個web的cgi(向總服務器發出搜索請求)。

索引擎的服務器中的15個服務器提供搜索服務,5個服務器正在生成索引。這20個搜索引擎的服務器經常要讓正在提供搜索服務的服務器停止提供服務開始生成索引,或生成索引的服務器已經把索引生成完成可以提供搜索服務了。使用Zookeeper可以保證總服務器自動感知有多少提供搜索引擎的服務器并向這些服務器發出搜索請求,當總服務器宕機時自動啟用備用的總服務器。

參考資料 >

HBase 官方文檔中文版.瀚海星空.2024-04-01

生活家百科家居網