hadoop之 Zookeeper 分散式應用程式協調服務

張衝andy發表於2017-08-13

(1) Zookeeper 在 Hadoop 叢集中的作用
Zookeeper 是分散式管理協作框架,Zookeeper 叢集用來保證 Hadoop 叢集的高可用,(高可用的含義是:叢集中就算有一部分伺服器當機,也能保證正常地對外提供服務。)

(2) Zookeeper 保證高可用的原理
Zookeeper 叢集能夠保證 NameNode 服務高可用的原理是:Hadoop 叢集中有兩個 NameNode 服務,兩個NameNode 都定時地給 Zookeeper 傳送心跳,告訴 Zookeeper 我還活著,可以提供服務,單某一個時間只有一個是 Action 狀態,另外一個是 Standby 狀態,一旦 Zookeeper 檢測不到 Action NameNode 傳送來的心跳後,就切換到 Standby 狀態的 NameNode 上,將它設定為 Action 狀態,所以叢集中總有一個可
用的 NameNode,達到了 NameNode 的高可用目的。

(3) Zookeeper 的選舉機制
Zookeeper 叢集也能保證自身的高可用,保證自身高可用的原理是,Zookeeper 叢集中的各個機器分為Leader 和 Follower 兩個角色,寫入資料時,要先寫入 Leader,Leader 同意寫入後,再通知 Follower寫入。客戶端讀取數時,因為資料都是一樣的,可以從任意一臺機器上讀取資料。這裡 Leader 角色就存在單點故障的隱患,高可用就是解決單點故障隱患的。Zookeeper 從機制上解決了Leader 的單點故障問題,Leader 是哪一臺機器是不固定的,Leader 是選舉出來的。選舉流程是,叢集中任何一臺機器發現叢集中沒有 Leader 時,
就推薦自己為 Leader,其他機器來同意,當超過一半數的機器同意它為 Leader 時,選舉結束,所以 Zookeeper 叢集中的機器資料必須是奇數。這樣就算當Leader 機器當機後,會很快選舉出新的 Leader,保證了 Zookeeper 叢集本身的高可用。

(4) 寫入高可用
叢集中的寫入操作都是先通知 Leader,Leader 再通知 Follower 寫入,實際上當超過一半的機器寫入成功後,就認為寫入成功了,所以就算有些機器當機,寫入也是成功的。

(5) 讀取高可用
zookeeperk 客戶端讀取資料時,可以讀取叢集中的任何一個機器。所以部分機器的當機並不影響讀取。zookeeper 伺服器必須是奇數臺,因為 zookeeper 有選舉制度,角色有:領導者、跟隨者、觀察者,選舉的目的是保證叢集中資料的一致性。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2143460/,如需轉載,請註明出處,否則將追究法律責任。

相關文章