安裝 HBASE 1.1.2

不管是 Single-node Clusters 還是 Multi-node Clusters,所有的node都要先進行以下操作:

  1. 安装 HBase 環境

1. 安装 HBase 環境

> $ wget http://apache.stu.edu.tw/hbase/stable/hbase-1.1.2-bin.tar.gz
> $ tar -zxvf hbase-1.1.2-bin.tar.gz
> $ mv hbase-1.1.2 hbase
> $ sudo mv hbase /usr/local
> $ sudo chown -R hduser:hadoop /usr/local/hbase
> $ sudo chmod +x -R /usr/local/hbase

將以下的資訊附加到 ~/.bashrc 與 ~/.profile 檔案末端:

export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin

讓新設定生效:

> $ source ~/.bashrc
> $ source ~/.profile
> $ update-alternatives --config java  # 尋找 java 在哪
( /usr/lib/jvm/java-7-openjdk-i386 )
> $ vim $HBASE_HOME/conf/hbase-env.sh  # 修改 JAVA_HOME 路徑

single-node clusters

HBase 單節點的安裝流程如下:

  1. 安装HBase環境
  2. 完成HBase單節點配置

「安装HBase環境」已經講過了。因此,接著只要講解HBase的單節點配置。

< 修改配置文件 >

  1. hbase-site.xml

1. core-site.xml ( $HBASE_HOME/conf/hbase-site.xml )

<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hduser/hadoop/hbase-tmp</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hduser/hadoop/zookeeper</value>
  </property>
</configuration>

於 $HBASE_HOME 創建 tmp 資料夾 ( 因 hbase-site.xml 的設置而異 )

> $ mkdir -p  ~/hadoop/hbase-tmp
> $ mkdir -p  ~/hadoop/zookeeper

所有node的hbase格式化:(每個node都要執行)

> $ rm -rf $HBASE_HOME/logs/*  # 清空記錄檔
> $ rm -rf ~/hadoop/hbase-tmp/*  # 清空暫存檔
> $ rm -rf ~/hadoop/zookeeper/*

< 執行 Hadoop >

> $ hdfs dfsadmin -safemode leave  # Off the Safe mode of namenode
> $ start-dfs.sh
> $ start-yarn.sh

< 執行 HBase >

> $ $HBASE_HOME/bin/start-hbase.sh  # 執行 Hbase

multi-node clusters

HBase多節點的安裝流程如下:

  1. 選一台節點作為 Master、選另一台當作 Backup Master
  2. 在 Master / Backup Master,安装Java環境、SSH Server、設定hadoop使用者 - hduser、設定hduser 無密碼登錄、安装Hadoop環境
  3. 在 Master / Backup Master,完成HBase多節點配置
  4. 在其他節點上,安装Java環境、SSH Server、設定hadoop使用者 - hduser、設定hduser 無密碼登錄、安装Hadoop環境
  5. 將 Master 上的HBase多節點配置,複製到其他節點上

看似流程很多,但是「安装Java環境、SSH Server、設定hadoop使用者 - hduser、設定hduser 無密碼登錄、安装Hadoop環境」已經講過了。因此,接著只要講解HBase的多節點配置。

我使用四個node搭建集群:

  • node 1:當做 Master,其區網 IP 為192.168.0.100
  • node 2:當做 Slave1,其區網 IP 為192.168.0.101
  • node 3:當做 Slave2,其區網 IP 為192.168.0.102
  • node 4:當做 Slave3,其區網 IP 為192.168.0.103 ( Slave1 當作 Backup Master )

< 設定 Backup Master 網路 ( on Slave1 ) >

接著,登入Slave1電腦。將Slave1上的公鑰傳送到所有其他nodes:

> $ ssh-copy-id -i ~/.ssh/id_rsa.pub hduser@Master
> $ ssh-copy-id -i ~/.ssh/id_rsa.pub hduser@Slave2
> $ ssh-copy-id -i ~/.ssh/id_rsa.pub hduser@Slave3

最後,就可以讓Slave1以無密碼登錄到所有nodes了

< 修改配置文件:登入 Master 電腦來進行接下來的設定 >

  1. regionservers # 設定 regionservers
  2. backup-masters # 設定 backup master
  3. hbase-site.xml # 設定 Configure ZooKeeper

1. regionservers ( $HBASE_HOME/conf/regionservers )

Master
Slave1
Slave2
Slave3

2. backup-masters ( $HBASE_HOME/conf/backup-masters )

Slave1

3. hbase-site.xml ( $HBASE_HOME/conf/hbase-site.xml )

<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://Master:9000/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>Master,Slave1,Slave2,Slave3</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hduser/hadoop/hbase-tmp</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hduser/hadoop/zookeeper</value>
  </property>
</configuration>

接下來,將此新的配置,複製到所有nodes:

> $ scp -r $HBASE_HOME hduser@Slave1:~
> $ scp -r $HBASE_HOME hduser@Slave2:~
> $ scp -r $HBASE_HOME hduser@Slave3:~

所有 Slave nodes 都要做以下的步驟:

> $ sudo mv hbase /usr/local
> $ sudo chown -R hduser:hadoop /usr/local/hbase
> $ sudo chmod +x -R /usr/local/hbase

→ 將以下的資訊附加到 ~/.bashrc 與 ~/.profile 檔案末端:

export HBASE_HOME=/usr/local/hbase

讓新設定生效:

> $ source ~/.bashrc
> $ source ~/.profile
> $ update-alternatives --config java  # 尋找 java 在哪
( /usr/lib/jvm/java-7-openjdk-i386 )
> $ vim $HBASE_HOME/conf/hbase-env.sh  # 修改 JAVA_HOME 路徑

所有 node 的 hbase 格式化:( 每個 node 都要執行 )

> $ rm -rf $HBASE_HOME/logs/*  # 清空記錄檔
> $ rm -rf ~/hadoop/hbase-tmp/*  # 清空暫存檔
> $ rm -rf ~/hadoop/zookeeper/*

< 執行 Hadoop >

> $ hdfs dfsadmin -safemode leave  # Off the Safe mode of namenode
> $ start-dfs.sh
> $ start-yarn.sh

< 執行 HBase >

> $ $HBASE_HOME/bin/start-hbase.sh  # 執行 Hbase

※ 註:所有 nodes 的系統時間不能誤差太大,hbase 預設是容許誤差 30s。可以使用以下指令來校正時間:

> $ sudo date -s 00:00:00