1. 程式人生 > >大數據開發之zookeeper簡介

大數據開發之zookeeper簡介

zookeeper

首先安裝hadooper必須安裝zookeeper。

zookeeper在hadoop生態圈中起的非常重要的作用,一句話就是ZooKeeper是分布式系統中的協調系統。
淺談zookeeper:zookeeper是什麽?
ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,
是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:
配置維護、域名服務、分布式同步、組服務等。
zookeeper的特點
簡單
ZooKeeper的核心是一個精簡的文件系統,它支持一些簡單的操作和一些抽象操作,例如,排序和通知。

豐富
ZooKeeper的操作是很豐富的,可實現一些協調數據結構和協議。例如,分布式隊列、分布式鎖和一組同級別節點中的“領導者選舉”。
高可靠
ZooKeeper支持集群模式,可以很容易的解決單點故障問題。
松耦合交互
不同進程間的交互不需要了解彼此,甚至可以不必同時存在,某進程在ZooKeeper中留下消息後,該進程結束後其它進程還可以讀這條消息。
資源庫
ZooKeeper實現了一個關於通用協調模式的開源共享存儲庫,能使開發者免於編寫這類通用協議。
zookeeper扮演的角色
領導者(leader):負責進行投票的發起和決議,更新系統狀態。
學習者(learner):包括跟隨者(follower)和觀察者(observer)
follower:用於接受客戶端請求並向客戶端返回結果,在選舉過程中參與投票。
Observer:可以接受客戶端連接,將寫請求轉發給leader,但observer不參與投票過程,只同步leader的狀態,observer的
目的是為了擴展系統,提高讀取速度。
客戶端(client):請求發起方。
zookeeper的數據模型
層次化的目錄結構,命名符合常規文件系統規範
每個節點在zookeeper中叫做znode,並且其有一個唯一的路徑標識
節點znode可以包含數據和子節點,但是EPHEMERAL類型的節點不能有子節點
znode中的數據可以有多個版本,比如某一個路徑下存有多個數據版本,那麽查詢這個路徑下的數據就需要帶上版本
客戶端應用可以在節點上設置監視器
節點不支持部分讀寫,而是一次性完整讀寫
zookeeper的節點類型
ZooKeeper節點znode有兩種類型,臨時節點(ephemeral)和持久節(persistent)。znode的類型在創建時確定並且之後不能再修改。
ephemeral節點在客戶端會話結束時,將會被zookeeper刪除,並且ephemeral節點不可以有子節點。
persistent節點不依賴與客戶端會話,只有當客戶端明確要刪除該persistent節點時才會被刪除。
目前znode有四種形式的目錄節點,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
znode可以是臨時節點,一旦創建這個znode的客戶端與服務器失去聯系,這個znode也將自動刪除,
ZooKeeper的客戶端和服務器通信采用長連接方式,每個客戶端和服務器通過心跳來保持連接,
這個連接狀態稱之為session,如果znode是臨時節點,這個seesion失效,znode也就刪除了;持久化目錄節點,這個目錄節點存儲的數據不會丟失;順序自動編號的目錄節點,這種目錄節點會更具當前已經存放在的節點數自動加1,然後返回給客戶端已經成功創建的目錄節點名;臨時目錄節點,一旦創建這個節點的客戶端和服務器端口也就是session超時,這種節點會被自動刪除。

大數據開發之zookeeper簡介