簡體   English   中英

為什么我們在Hadoop堆棧中需要ZooKeeper?

[英]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的角色:

Hadoop Namenode故障轉移過程如何工作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM