2013-07-29 47 views
12

我在Ubuntu機器上安裝了Hadoop單節點集羣,並且能夠運行NameNode,Datanode等。現在我需要安裝HBase和Zookeeper。但我真的不知道他們是什麼。夥計們可以給我簡要的描述這些工具。Hadoop中的HBase和ZooKeeper角色?

謝謝

回答

19

首先,我強烈建議您通過這些項目的官方網頁。用於HBase的here和用於Zookeeper的here

HBase是在現有Hadoop集羣(HDFS)之上運行的NoSQL數據存儲。它提供了像這樣的功能,隨機,實時讀取/寫入,這是FS缺乏的HDFS。由於它是NoSQL數據存儲,因此它不遵循SQL約定和術語。 HBase提供了一套很好的API(包括JAVA和Thrift)。除此之外,HBase還提供了與MapReduce框架的無縫集成。但是,除了HBase的所有這些優點,您應該牢記這一點:隨機讀取速度很快,但總是會產生額外開銷。所以在你作出任何決定之前,先好好想想

ZooKeeper是針對分佈式應用(如HBase)的高性能協同服務。它在一個簡單的界面中公開了諸如命名,配置管理,同步和組服務等常用服務,因此您不必從頭開始編寫它們。您可以現成使用它來實現共識,小組管理,領導者選舉和存在協議。您可以根據自己的具體需求進行構建。

HBase完全依靠Zookeeper。 HBase爲您提供了使用其內置Zookeeper的選項,您可以在啓動HBAse時啓動它。但是,如果您正在開發一個生產集羣,這並不好。在這種情況下,擁有一個專門的Zookeeper集羣並將其與HBase集羣集成在一起總是很好。

注意:您的ZK Quorum中應始終有奇數個節點。

HTH

+0

覆蓋大點..個人認爲一個單獨的進程是在設計上(足夠小的)錯誤的hbase tho – 2015-08-13 19:05:43

6

概述

動物園管理員:總之,動物園管理員是一個分佈式應用程序(簇)的配置和管理工具,其離開獨立HBase的的。從文檔:

ZooKeeper是維持配置 信息,命名,提供分佈式同步,並提供 服務組集中式服務。所有這些類型的服務都以分佈式應用程序的形式在 中以某種形式使用。每次他們執行 時,都會進行大量工作來解決錯誤和不可避免的競爭條件。由於 實施這些服務的困難,最初通常應用程序 skimp在他們身上,這使得他們在存在變化時變得脆弱並且難以管理。即使正確完成,當部署應用程序時,這些服務的不同實施導致管理的複雜性。

HBase的:在HDFS頂部的NoSQL的數據存儲(可以使用簡單的文件系統,但它保證沒有數據耐久性)。 HBase的包含兩個主要的服務:

  • 主服務器 - 主服務器(HMASTER)座標的 集羣和執行管理操作,如指定 地區和平衡負載。
  • 區域服務器 - 該區域 服務器完成真正的工作。每個表的數據的子集由每個區域服務器處理。客戶與區域服務器交談以訪問HBase中的數據。

HBase的動物園管理員之間的連接:

分佈式HBase的完全依賴於動物園管理員(對羣集配置和管理)。在Apache HBase中,ZooKeeper在主服務器和RegionServers之間協調,通信和共享狀態。 HBase的設計策略是僅將ZooKeeper用於臨時數據(即用於協調和狀態通信)。因此,如果HBase的ZooKeeper數據被刪除,只有瞬態操作會受到影響 - 數據可以繼續寫入HBase或從HBase讀取。

一旦你擁有了HBase的開始 - 你可以驗證它使用jps命令啓動的進程:

$ jps 

命令會列出機器上的所有Java進程(HBase的本身是一個Java應用程序) - 可能的輸出(在簡單的獨立HBase的設置的情況下)必須是:

62019 Jps 
61098 HMaster   
61233 HRegionServer  
61003 HQuorumPeer 

技術上講: 默認情況下,HBase管理zookeeper本身,即當我們啓動和停止HBase時啓動和停止動物園管理員仲裁(zookeeper節點集羣) - 驗證設置看文件conf/hbase-evn.sh(在您的hbase目錄中)必須有一條線:

export HBASE_MANAGES_ZK=true 

一旦設置我們需要做的是設置在conf/hbase-site.xml以下指令 - from docs

<configuration> 
    ... 
    <property> 
     <name>hbase.zookeeper.property.clientPort</name> 
     <value>2181</value> 
     <description> The port at which the clients will connect. 
     </description> 
    </property> 
    <property> 
     <name>hbase.zookeeper.quorum</name> 
     <value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value> 
     <description>Comma separated list of servers in the ZooKeeper Quorum. 
     For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". 
     By default this is set to localhost for local and pseudo-distributed modes 
     of operation. For a fully-distributed setup, this should be set to a full 
     list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh 
     this is the list of servers which we will start/stop ZooKeeper on. 
     </description> 
    </property> 
    <property> 
     <name>hbase.zookeeper.property.dataDir</name> 
     <value>/usr/local/zookeeper</value> 
     <description>Property from ZooKeeper's config zoo.cfg. 
     The directory where the snapshot is stored. 
     </description> 
    </property> 
    ... 
    </configuration>