hbase和hadoop同樣也分爲單機版、僞分佈式版和徹底分佈式集羣版本,這篇文件介紹如何搭建徹底分佈式集羣環境搭建。html
hbase依賴於hadoop環境,搭建habase以前首先須要搭建好hadoop的徹底集羣環境,所以看這篇文章以前須要先看個人上一篇文章:hadoop分佈式集羣搭建。本文中沒有按照獨立的zookeeper,使用了hbase自帶的zookeeper。linux
首先在hadoop-master安裝配置好以後,在複製到從節點shell
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
apache
#內容 export HBASE_HOME=/usr/local/hbase export PATH=$HBASE_HOME/bin:$PATH #使當即生效 source /etc/profile
修改系統變量ulimitvim
ulimit -n 10240
hbase 相關的配置主要包括hbase-env.sh、hbase-site.xml、regionservers三個文件,都在 /usr/local/hbase/conf目錄下面:centos
配置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>
配置regionserversjvm
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/
啓動僅在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
看大概的意思是主節點鏈接從節點超時了。可能有兩方面的緣由,第1、linux服務器時間不一致致使,第2、因爲網絡其它緣由致使鏈接的時間超長。
解決方案:
第一個緣由,修改各服務器時間保持一致。最終的解決方案是:設置一個定時使用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>