Day 9 - 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_即可。
      ```xml
    hbase.rootdir file:///opt/data/hbase hbase.zookeeper.property.dataDir /opt/data/zookeeper 如果沒有設定,預設路徑為/tmp
    _hbase-site.xml_ 所設定的路徑如果不存在,HBase啟動時會自動建立。  
    
    * 啟動HBase:
    ```bash
    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 ```xml
    hbase.rootdir hdfs://{hostname}:9000/hbase hbase.cluster.distributed false

    ``` 備註:{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的使用教學!