標籤:

hbase分散式集群搭建

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

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

環境準備

  • hbase軟體包: mirror.bit.edu.cn/apach
  • 完成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 |