我在Ubuntu機器上安裝了Hadoop單節點集羣,並且能夠運行NameNode,Datanode等。現在我需要安裝HBase和Zookeeper。但我真的不知道他們是什麼。夥計們可以給我簡要的描述這些工具。Hadoop中的HBase和ZooKeeper角色?
謝謝
我在Ubuntu機器上安裝了Hadoop單節點集羣,並且能夠運行NameNode,Datanode等。現在我需要安裝HBase和Zookeeper。但我真的不知道他們是什麼。夥計們可以給我簡要的描述這些工具。Hadoop中的HBase和ZooKeeper角色?
謝謝
首先,我強烈建議您通過這些項目的官方網頁。用於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
概述:
動物園管理員:總之,動物園管理員是一個分佈式應用程序(簇)的配置和管理工具,其離開獨立HBase的的。從文檔:
ZooKeeper是維持配置 信息,命名,提供分佈式同步,並提供 服務組集中式服務。所有這些類型的服務都以分佈式應用程序的形式在 中以某種形式使用。每次他們執行 時,都會進行大量工作來解決錯誤和不可避免的競爭條件。由於 實施這些服務的困難,最初通常應用程序 skimp在他們身上,這使得他們在存在變化時變得脆弱並且難以管理。即使正確完成,當部署應用程序時,這些服務的不同實施導致管理的複雜性。
HBase的:在HDFS頂部的NoSQL的數據存儲(可以使用簡單的文件系統,但它保證沒有數據耐久性)。 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>
覆蓋大點..個人認爲一個單獨的進程是在設計上(足夠小的)錯誤的hbase tho – 2015-08-13 19:05:43