hbase分散式集群搭建
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.gzn#解壓ntar -xzvf hbase-1.3.1-bin.tar.gz -C /usr/local/n#重命名 nmv hbase-1.3.1 hbasen
配置環境變數vim /etc/profile
#內容nexport HBASE_HOME=/usr/local/hbasenexport PATH=$HBASE_HOME/bin:$PATHn#使立即生效nsource /etc/profilen
修改系統變數ulimit
ulimit -n 10240n
配置文件
hbase 相關的配置主要包括hbase-env.sh、hbase-site.xml、regionservers三個文件,都在 /usr/local/hbase/conf目錄下面:
配置hbase-env.sh
vim hbase-env.shn#內容nexport JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64nexport HBASE_CLASSPATH=/usr/local/hbase/confn# 此配置信息,設置由hbase自己管理zookeeper,不需要單獨的zookeeper。nexport HBASE_MANAGES_ZK=truenexport HBASE_HOME=/usr/local/hbasenexport HADOOP_HOME=/usr/local/hadoopn#Hbase日誌目錄nexport HBASE_LOG_DIR=/usr/local/hbase/logsn
配置 hbase-site.xml
<configuration>nt<property>ntt<name>hbase.rootdir</name>ntt<value>hdfs://hadoop-master:9000/hbase</value>nt</property>nt<property>ntt<name>hbase.cluster.distributed</name>ntt<value>true</value>nt</property>nt<property>ntt<name>hbase.master</name>ntt<value>hadoop-master:60000</value>nt</property>nt<property>ntt<name>hbase.zookeeper.quorum</name>ntt<value>hadoop-master,hadoop-slave1,hadoop-slave2,hadoop-slave3</value>nt</property>n</configuration>n
配置regionservers
vim /usr/local/hbase/conf/regionserversnhadoop-masternhadoop-slave1nhadoop-slave2nhadoop-slave3n
複製hbase到從節點中
scp -r /usr/local/hbase hadoop-slave1:/usr/local/nscp -r /usr/local/hbase hadoop-slave2:/usr/local/nscp -r /usr/local/hbase hadoop-slave3:/usr/local/n
啟動hbase
啟動僅在master節點上執行即可
~/hbase/bin/start-hbase.shn
啟動後,master上進程和slave進程列表
master中的信息
[hadoop@master ~]$ jpsn6225 Jpsn2897 SecondaryNameNode # hadoop進程n2710 NameNode # hadoop master進程n3035 ResourceManager # hadoop進程n5471 HMaster # hbase master進程n2543 HQuorumPeer # zookeeper進程n
salve中的信息
[hadoop@slave1 ~]$ jpsn4689 Jpsn2533 HQuorumPeer # zookeeper進程n2589 DataNode # hadoop slave進程n4143 HRegionServer # hbase slave進程n
因為hbase依賴於hadoop,因此啟動和停止都是需要按照順序進行
如果安裝了獨立的zookeeper
啟動順序: hadoop-> zookeeper-> hbase
停止順序:hbase-> zookeeper-> hadoop
使用自帶的zookeeper
啟動順序: hadoop-> hbase
停止順序:hbase-> hadoop重啟hbase
~/hbase/bin/stop-hbase.shn~/hadoop/sbin/stop-all.shn~/hadoop/sbin/start-all.shn~/hbase/bin/start-hbase.shn
錯誤處理
在搭建的過程中,報了這麼一個錯誤,錯誤信息如下:
Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server hadoop-slave3,16020,1500526355333nnCaused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ClockOutOfSyncException): n org.apache.hadoop.hbase.ClockOutOfSyncException: n Server hadoop-slave3,16020,1500526355333 has been rejected; Reported time is too far out of sync with n master. Time difference of 77348ms > max allowed of 30000msn
看大概的意思是主節點連接從節點超時了。可能有兩方面的原因,第一、linux伺服器時間不一致導致,第二、由於網路其它原因導致連接的時間超長。
解決方案:
第一個原因,修改各伺服器時間保持一致。最終的解決方案是:設置一個定時使用ntp從某個伺服器定時同步時間
查看定時 ncrontab -ln編輯ncrontab -e n# 內容n0 */1 * * * /usr/sbin/ntpdate 192.168.0.12;/sbin/hwclock -wn
手動執行
#從 0.12同步時間n/usr/sbin/ntpdate 192.168.0.12n
第二個原因,可以修改hbase默認的最大鏈接時間長一些。
HBase配置文件hbase-siter.xml中添加連接時長的屬性
<property>n <name>hbase.master.maxclockskew</name>n <value>120000</value>n </property>n
參考:
centos 6.4下hbase 1.0.1 分散式集群搭建
原文: hbase分散式集群搭建
推薦閱讀:
※大數據查詢——HBase讀寫設計與實踐
※hdfs本身是不支持文件隨機插入數據。那麼hbase中隨機寫入記錄,在hdfs中是怎麼實現的呢?
※region HFile DataNode 三者的區別與關係?
※hbase 基於rowkey 模糊查詢 如何做效率高?
※mongodb,redis,hbase 三者都是nosql資料庫,他們的最大區別和不同定位是什麼?
TAG:HBase |