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>
文章列表