iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
2
Data Technology

Hadoop ecosystem 工具簡介, 安裝教學與各種情境使用系列 第 10

Day 10 - Hadoop Ecosystem 之 HBase 安裝教學

HBase安裝模式與Hadoop相同,有StandalonePseudo-DistributedFully-Distributed,而這些名稱也是根據Hadoop的安裝模式所命名。比較特別的是StandalonePseudo-Distributed模式不一定要將資料儲存在HDFS上,但無法擁有Hadoop的容錯機制與分散式等優點,而Fully-Distributed 只能 運行在Hadoop上面。

事前準備

與Hadoop相同,HBase原始碼也是由Java撰寫,所以也是需要安裝JDK並且設定JAVA_HOME。
另外,HBase是架設在Hadoop上面的DataBase,如果想擁有Hadoop分散式儲存的功能,一個Hadoop叢集也是必要的。
所以需要作下列的準備:

  • 安裝JDK,並設並JAVA_HOME
  • 一個Hadoop叢集(optional)
  • 下載HBase tar file後解壓縮,並設定HBASE_HOME。這邊使用2.0.0-appha4版本當作安裝教學範例。
    備註:HBase2.0.x只支援Hadoop 2.6.1+與2.7.1+版本,其他版本目前尚未支援。
#下載已經Build好的Hadoop檔案儲存至/opt,並且解壓縮至/opt/hbase目錄
cd /opt
sudo wget http://apache.stu.edu.tw/hbase/2.0.0-alpha4/hbase-2.0.0-alpha4-bin.tar.gz
#解壓縮
sudo tar -zxvf hbase-2.0.0-alpha4-bin.tar.gz
#移動至/opt/hbase
sudo mv /opt/hbase-2.0.0-alpha4-bin /opt/hbase
  • 設定HBASE_HOME環境變數:
#編輯~/.bashrc
sudo vi ~/.bashrc
#加入下列參數
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin

Standalone

與Hadoop相同,Standalone是HBase預設的模式,啟動時會在一個JVM內運行所有HBase全部的daemon,包含Master、RegionServer與ZooKeeper。

  • 使用local file system安裝模式:

    • 修改_hbase-site.xml_即可。
    <configuration>
      <property>
        <name>hbase.rootdir</name>
        <value>file:///opt/data/hbase</value>
      </property>
      <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/data/zookeeper</value>
        <description>如果沒有設定,預設路徑為/tmp</description>
      </property>
    </configuration>
    

    hbase-site.xml 所設定的路徑如果不存在,HBase啟動時會自動建立。

    • 啟動HBase:
    cd ${HBASE_HOME}/bin
    sudo bash start-hbase.sh
    

    如果啟動成功,可以使用jps指令來觀察HBase的daemon,其中會包含:

    • HMaster
      • 與HDFS的namenode功能類似,紀錄資料位於哪個RegionServer,重要性也與namenode一樣。
    • HRegionServer
      • 相當於HDFS的datanode,負責儲存資料。
    • HQuorumPeer
      • HBase內建的zookeeper。如果安裝HBase時沒有另外指定外部的zookeeper,啟動HBase時會自行啟動。
  • 使用HDFS安裝模式:

    • 修改_hbase-site.xml_即可,啟動方式與local file system模式相同,只要將hbase.rootdir改為HDFS上的路徑,並將hbase.cluster.distributed設定為false
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://{hostname}:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>false</value>
    </property>
    

    備註:{hostname}為主機名稱,請依照自己的Hadoop Namenode所在的hostname修改。


Pseudo-Distributed

與Standalone運作方式類似,差別在於Pseudo-Distributed的daemon是在不同的JVM運作。儲存模式也與Standalone一樣,可以使用local file system或是HDFS,設定方法也與Standalone模式相同,只要修改hbase-site.xml

設定為Pseudo-Distributed模式:

  • 修改_hbase-site.xml_,加入下列參數設定。
    <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
    </property>
    

如果已經啟動Standalone模式的HBase,務必請先關閉再重新啟動,可使用下列指令關閉:

cd ${HBASE_HOME}/bin
#關閉HBase
sudo bash stop-hbase.sh

或者是使用rolling restart重新啟動HBase,不必完全關閉HBase。

cd ${HBASE_HOME}/bin
#rolling restart HBase
sudo bash rolling-restart.sh

Fully-Distributed

由於Fully-Distributed只支援運作在HDFS,所以必須先準備好Hadoop,Hadoop運作模式一樣可以使用那三種模式。如果是要在production環境運作,無論是Hadoop或是HBase皆強烈建議使用Fully-Distributed

  • 設定hbase-site.xml:由於Fully-Distributed只支援運作在HDFS上,所以hbase.rootdir必需設定為HDFS路徑,且hbase.cluster.distributed需設定為true。HBase運作時需要zookeeper的協助,在production環境強烈建議需要一組不同於Hadoop與HBase的機器來運作zookeeper。實驗性質則可以使用HBase內建的zookeeper,不需要額外安裝。
  • 設定regionservers:與Pseudo-Distributed最大不同點在於,Fully-Distributed會有多台機器運作,故需要設定此檔案讓HMaster知道HBase的成員有哪些。
#編輯regionservers
sudo vi ${HBASE_HOME}/conf/regionservers
#加入機器的hostname,如果有三台機器,請依序加入如下所示
server-a1
server-a2
server-a3

設定完成就可以啟動HBase了!


最後

安裝完成後,可以透過 http://{HBASE_MASTER_HOST_NAME_OR_IP}:16010 web ui 來查看HBase叢集的狀況。{HBASE_MASTER_HOST_NAME_OR_IP}為HBase Master所在的機器。

無論是StandalonePseudo-Distributed或是Fully-Distributed,需挑選適用的安裝模式才能發揮HBase最好的效益,也能減少使用上的困擾。

如果想要快速體驗Fully-Distributed模式的HBase cluster,可以使用作者所撰寫的hbase on docekr,內有使用說明與教學,也歡迎fork並開PR。

介紹完了HBase安裝後,接下來要進入hbase shell的使用教學!


上一篇
Day 9 - Hadoop Ecosystem 之 HBase 簡介
下一篇
Day 11 - Hadoop Ecosystem 之 HBase Shell Usage
系列文
Hadoop ecosystem 工具簡介, 安裝教學與各種情境使用30
0
cool21540125
iT邦新手 5 級 ‧ 2019-01-23 02:19:37

請問小弟安裝的是
hadoop 2.8
hbase 2.0.4

hbase start 之後所見的 jps 只有

8436 NameNode
10772 ResourceManager
8743 SecondaryNameNode
12633 Jps
10874 NodeManager
12154 HMaster
8573 DataNode

而上述兩者皆採用 stand alone 方式來啟用

  • HQuorumPeer 缺少了他, 感覺應該還可以繼續下去...
  • HRegionServer 缺少了他, 感覺就似乎不對勁

請問還有其他的檢測方式, 來看服務的啟動狀況嗎? (除了又臭又長的 log以外...)

stana iT邦新手 5 級 ‧ 2019-01-23 10:32:44 檢舉

另一種檢測方式可以直接到HBase的Web UI看一下RegionServer是否有啟動, 如果沒有還是得面對log了, 這樣才能知道發生什麼問題導致RegionServer啟動失敗.

0
rtfgvb74125
iT邦新手 5 級 ‧ 2019-04-22 12:13:21

您好請問我是用ambari-server安裝HBase功能,那我還需要設置HBASE_HOME環境變數嗎

stana iT邦新手 5 級 ‧ 2019-04-22 13:41:54 檢舉

Hi,
基本上透過平台(ambari, cloudera等)安裝HBase都不用額外進行設定HBASE_HOME, 這些平台都會自動設定。

0
Ho.Chun
iT邦新手 5 級 ‧ 2019-11-08 10:49:32

請問這邊是筆誤嗎

Fully-Distributed只能運行在Hadoop上面

Fully-Distributed 只能運行在 HBase 上面 (?

看更多先前的回應...收起先前的回應...
stana iT邦新手 5 級 ‧ 2019-11-11 14:45:57 檢舉

Fully-Distributed只能運行在Hadoop上面

不好意思,這篇文章內並沒有寫到這段文字,不曉得您在文章那一段落看到這段文字呢?

stana iT邦新手 5 級 ‧ 2019-11-11 14:48:56 檢舉

抱歉,我看到了。在文章一開始就開宗明義寫了這段文字,這並不是筆誤,請問對於這段文字哪邊有誤解,所以認為是筆誤呢?

Ho.Chun iT邦新手 5 級 ‧ 2019-11-11 15:44:32 檢舉

https://ithelp.ithome.com.tw/upload/images/20191111/20106955IVlSEx1g3L.png
現在能儲存資料的方式有兩種: file:// or hdfs://
如紅筆處,所以 Hadoop 的 StandalonePseudo-Distributed 模式可改用 file://
但藍筆處,為何儲存方式又會冒出 Hadoop (?

stana iT邦新手 5 級 ‧ 2019-11-14 14:30:13 檢舉

這一篇是在說明 HBase 的安裝方式,一共有三種: Standalone , Pseudo-DistributedFully-Distributed
Fully-Distributed 需要依賴Hadoop。

請問這樣說明有比較清楚嗎?

Ho.Chun iT邦新手 5 級 ‧ 2019-11-14 14:42:22 檢舉

Fully-Distributed 需要依賴 Hadoop

那我可以 Hadoop 再去選擇他自己的 Standalone or Pseudo-Distributed (?

stana iT邦新手 5 級 ‧ 2019-11-18 15:10:55 檢舉

那我可以 Hadoop 再去選擇他自己的 Standalone or Pseudo-Distributed

如果考量的點是 可不可執行 那我沒有試過,不確定能不能在HBase使用Fully-Distributed 狀況下,Hadoop使用 Standalone or Pseudo-Distributed ,這一點需要請您自行測試,如果可以也歡迎分享一下測試結果。

以實務上的考量來看,HBase 既然都已經使用 Fully-Distributed 意味著需要進行分散處理增加效能或者其他的益處,但hdfs卻是使用 StandalonePseudo-Distributed ,這樣就失去了增加效能的用意,倒不如直接將HBase 安裝成 Standalone 或 Pseudo-Distributed,這樣也不用另外安裝HDFS.

Ho.Chun iT邦新手 5 級 ‧ 2019-11-26 16:56:00 檢舉

感謝 !! 我再多試試看 /images/emoticon/emoticon41.gif

我要留言

立即登入留言