安裝 HBASE 1.1.2
不管是 Single-node Clusters 還是 Multi-node Clusters,所有的node都要先進行以下操作:
- 安装 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 單節點的安裝流程如下:
- 安装HBase環境
- 完成HBase單節點配置
「安装HBase環境」已經講過了。因此,接著只要講解HBase的單節點配置。
< 修改配置文件 >
- 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多節點的安裝流程如下:
- 選一台節點作為 Master、選另一台當作 Backup Master
- 在 Master / Backup Master,安装Java環境、SSH Server、設定hadoop使用者 - hduser、設定hduser 無密碼登錄、安装Hadoop環境
- 在 Master / Backup Master,完成HBase多節點配置
- 在其他節點上,安装Java環境、SSH Server、設定hadoop使用者 - hduser、設定hduser 無密碼登錄、安装Hadoop環境
- 將 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 電腦來進行接下來的設定 >
- regionservers # 設定 regionservers
- backup-masters # 設定 backup master
- 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