應用場景1 、統一命名服務
» 分布式應用中,通常需要有一套完整的命名規則,既能夠產生唯一的名稱又便於人識別和記住,通常情況
下用樹形的名稱結構是一個理想的選擇,樹形的名稱結構是一個有層次的目錄結構,既對人友好又不會重復。
» Name Service 是 Zookeeper 內置的功能,只要調用 Zookeeper 的 API 就能實現
應用場景2 、配置管理
» 配置的管理在分布式應用環境中很常見,例如同一個應用系統需要多台 PC Server 運行,但是它們運行的應用系統的某些配置項是相同的,
如果要修改這些相同的配置項,那么就必須同時修改每台運行這個應用系統的 PC Server,這樣非常麻煩而且容易出錯。
» 將配置信息保存在 Zookeeper 的某個目錄節點中,然后將所有需要修改的應用機器監控配置信息的狀態,一旦配置信息發生變化,每台應用機器就會
收到Zookeeper的通知,然后從 Zookeeper 獲取新的配置信息應用到系統中。
應用場景 3、集群管理
» Zookeeper 能夠很容易的實現集群管理的功能,如有多台 Server 組成一個服務集群,那么必須要一個“總管”知道當前集群中每台機器的服務狀態,
一旦有機器不能提供服務,集群中其它集群必須知道,從而做出調整重新分配服務策略。同樣當增加集群的服務能力時,就會增加一台或多台 Server,
同樣也必須讓“總管”知道。
» Zookeeper 不僅能夠維護當前的集群中機器的服務狀態,而且能夠選出一個“總管”,讓這個總管來管理集群,這就是 Zookeeper 的另一個功能 LeaderElection
» 規定編號最小的為master,所以當我們對SERVERS節點做監控的時候,得到服務器列表,只要所有集群機器邏輯認為最小編號節點為master,
那么master就被選出,而這個master宕機的時候,相應的znode會消失,然后新的服務器列表就被推送到客戶端,然后每個節點邏輯認為最小編號節點為master,
這樣就做到動態master選舉
總結
» Zookeeper 作為 Hadoop 項目中的一個子項目,是Hadoop 集群管理的一個必不可少的模塊,它主要用來控制集群中的數據,如它管理 Hadoop
集群中的NameNode,還有 Hbase 中 Master Election、Server 之間狀態同步等。
» Zoopkeeper 提供了一套很好的分布式集群管理的機制,就是它這種基於層次型的目錄樹的數據結構,並對樹中的節點進行有效管理,從而可以設計出
多種多樣的分布式的數據管理模型