[英]Why do we need ZooKeeper in the Hadoop stack?
我是Hadoop / ZooKeeper的新手。 我無法理解將ZooKeeper與Hadoop一起使用的目的,是ZooKeeper在Hadoop中編寫數據嗎? 如果沒有,那么我們為什么要使用ZooKeeper和Hadoop?
Hadoop 1.x不使用Zookeeper。 即使在Hadoop 1.x安裝中,HBase確實使用zookeeper。
Hadoop從2.0版本開始采用Zookeeper。
Zookeeper的目的是集群管理。 這符合使用較小的專用組件的* nix的一般理念 - 因此,希望集群功能的Hadoop組件依賴於Zookeeper而不是開發自己的組件。
Zookeeper是一個分布式存儲,提供以下保證(從Zookeeper概述頁面復制):
您可以使用它們來實現集群管理所需的不同“ 配方 ”,例如鎖,領導者選舉等。
如果你打算自己使用ZooKeeper,我建議你看一下Netflix的Curator,這樣可以更容易使用(例如他們實現了一些開箱即用的食譜)
Zookeeper解決了可靠的分布式協調問題,而hadoop是一個分布式系統,對吧?
有一個優秀的紙質Paxos算法 ,你可以閱讀這個主題。
從zookeeper文檔頁面:
ZooKeeper是一種集中式服務,用於維護配置信息,命名,提供分布式同步和提供組服務。 所有這些類型的服務都以分布式應用程序的某種形式使用。
每次實施它們都需要做很多工作來修復不可避免的錯誤和競爭條件。 由於難以實現這些類型的服務,應用程序最初通常會吝嗇它們,這使得它們在變化的情況下變得脆弱並且難以管理。 即使正確完成,這些服務的不同實現也會在部署應用程序時導致管理復雜性。
從hadoop文檔頁面:
Apache™Hadoop®項目開發了用於可靠,可擴展的分布式計算的開源軟件。
Apache Hadoop軟件庫是一個框架,允許使用簡單的編程模型跨計算機集群分布式處理大型數據集
關於你的查詢:
為什么我們需要Hadoop Stack中的ZooKeeper?
綁定因子是分布式處理和高可用性。
例如,Hadoop Namenode進行故障轉移過程。
Hadoop高可用性是圍繞Active Namenode和Standby Namenode設計的,用於故障轉移過程。 在任何時候,您不應該同時擁有兩個主服務器(活動名稱節點)。
從HDFSHighAvailabilityWithQJM上的Apache文檔鏈接:
對於HA群集的正確操作而言,一次只有一個NameNode處於活動狀態至關重要。 否則,命名空間狀態將在兩者之間快速分歧,冒着數據丟失或其他不正確結果的風險。 為了確保這個屬性並防止所謂的“裂腦情景”,JournalNodes只允許一個NameNode一次成為一個作家。
在故障轉移期間,要激活的NameNode將簡單地接管寫入JournalNodes的角色,這將有效地阻止其他NameNode繼續處於Active狀態,從而允許新的Active安全地進行故障轉移。
Zookeeper已被用於避免分裂 - 大腦情景。 你可以在下面的問題中找到Zookeeper的角色:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.