hbase分散式叢集搭建

純潔的微笑發表於2017-08-11

hbase和hadoop一樣也分為單機版、偽分散式版和完全分散式叢集版本,這篇檔案介紹如何搭建完全分散式叢集環境搭建。

hbase依賴於hadoop環境,搭建habase之前首先需要搭建好hadoop的完全叢集環境,因此看這篇文章之前需要先看我的上一篇文章:hadoop分散式叢集搭建。本文中沒有按照獨立的zookeeper,使用了hbase自帶的zookeeper。

環境準備

  • hbase軟體包: http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
  • 完成hadoop叢集環境搭建

安裝hbase

首先在hadoop-master安裝配置好之後,在複製到從節點

wget http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
#解壓
tar -xzvf hbase-1.3.1-bin.tar.gz  -C /usr/local/
#重新命名 
mv hbase-1.3.1 hbase

配置環境變數vim /etc/profile

#內容
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH
#使立即生效
source /etc/profile

修改系統變數ulimit

ulimit -n 10240

配置檔案

hbase 相關的配置主要包括hbase-env.sh、hbase-site.xml、regionservers三個檔案,都在 /usr/local/hbase/conf目錄下面:

配置hbase-env.sh

vim hbase-env.sh
#內容
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export HBASE_CLASSPATH=/usr/local/hbase/conf
# 此配置資訊,設定由hbase自己管理zookeeper,不需要單獨的zookeeper。
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/usr/local/hbase
export HADOOP_HOME=/usr/local/hadoop
#Hbase日誌目錄
export HBASE_LOG_DIR=/usr/local/hbase/logs

配置 hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop-master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>hadoop-master:60000</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop-master,hadoop-slave1,hadoop-slave2,hadoop-slave3</value>
    </property>
</configuration>

配置regionservers

vim /usr/local/hbase/conf/regionservers
hadoop-master
hadoop-slave1
hadoop-slave2
hadoop-slave3

複製hbase到從節點中

scp -r /usr/local/hbase hadoop-slave1:/usr/local/
scp -r /usr/local/hbase hadoop-slave2:/usr/local/
scp -r /usr/local/hbase hadoop-slave3:/usr/local/

啟動hbase

啟動僅在master節點上執行即可

~/hbase/bin/start-hbase.sh

啟動後,master上程式和slave程式列表

master中的資訊

[hadoop@master ~]$ jps
6225 Jps
2897 SecondaryNameNode   # hadoop程式
2710 NameNode            # hadoop master程式
3035 ResourceManager     # hadoop程式
5471 HMaster             # hbase master程式
2543 HQuorumPeer         # zookeeper程式

salve中的資訊

[hadoop@slave1 ~]$ jps
4689 Jps
2533 HQuorumPeer          # zookeeper程式
2589 DataNode             # hadoop slave程式
4143 HRegionServer        # hbase slave程式

因為hbase依賴於hadoop,因此啟動和停止都是需要按照順序進行

如果安裝了獨立的zookeeper

啟動順序: hadoop-> zookeeper-> hbase
停止順序:hbase-> zookeeper-> hadoop

使用自帶的zookeeper

啟動順序: hadoop-> hbase
停止順序:hbase-> hadoop

重啟hbase

~/hbase/bin/stop-hbase.sh
~/hadoop/sbin/stop-all.sh
~/hadoop/sbin/start-all.sh
~/hbase/bin/start-hbase.sh

錯誤處理

在搭建的過程中,報了這麼一個錯誤,錯誤資訊如下:

Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server hadoop-slave3,16020,1500526355333

Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ClockOutOfSyncException):   
 org.apache.hadoop.hbase.ClockOutOfSyncException:       
 Server hadoop-slave3,16020,1500526355333 has been rejected; Reported time is too far out of sync with  
 master.  Time difference of 77348ms > max allowed of 30000ms

看大概的意思是主節點連線從節點超時了。可能有兩方面的原因,第一、linux伺服器時間不一致導致,第二、由於網路其它原因導致連線的時間超長。

解決方案:

第一個原因,修改各伺服器時間保持一致。最終的解決方案是:設定一個定時使用ntp從某個伺服器定時同步時間

檢視定時 
crontab -l
編輯
crontab -e 
# 內容
0 */1 * * *  /usr/sbin/ntpdate 192.168.0.12;/sbin/hwclock -w

手動執行

#從 0.12同步時間
/usr/sbin/ntpdate 192.168.0.12

第二個原因,可以修改hbase預設的最大連結時間長一些。

HBase配置檔案hbase-siter.xml中新增連線時長的屬性

<property>
    <name>hbase.master.maxclockskew</name>
    <value>120000</value>
 </property>

參考:
centos 6.4下hbase 1.0.1 分散式叢集搭建

相關文章