HBase-0.98.9搭建配置和問題總結

一     配置

1.1      hbase-env.sh

其它不變,export HBASE_MANAGES_ZK=false,這表示不使用hbase自帶的zookeeper,而使用外部的zookeeper(我使用的是跟hadoop集羣配置的zookeeper)html

1.2      hbase-site.xml

<configuration>
<property>
 <name>hbase.rootdir</name>
 <value>hdfs://master1:8020/hbase</value>
 <description>The directory shared by region servers.</description>
</property>
<property>
 <name>hbase.zookeeper.property.clientPort</name>
 <value>2181</value>
 <description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect.
 </description>
</property>
<property>
 <name>zookeeper.session.timeout</name>
 <value>120000</value>
</property>
<property>
 <name>hbase.zookeeper.quorum</name>
 <value>master1,master2,slave1</value>
</property>
<property>
 <name>hbase.tmp.dir</name>
 <value>/root/hbasedata</value>
</property>
<property>
 <name>hbase.cluster.distributed</name>
 <value>true</value>
</property>
</configuration>

複製代碼

1.3      regionservers

master1
master2
slave1

1.4      一些配置參數的解釋

hbase.zookeeper.property.clientPort:指定zk的鏈接端口java

zookeeper.session.timeout:RegionServer與Zookeeper間的鏈接超時時間。當超時時間到後,ReigonServer會被Zookeeper從RS集羣清單中移除,HMaster收到移除通知後,會對這臺server負責的regions從新balance,讓其餘存活的RegionServer接管.web

hbase.zookeeper.quorum:默認值是 localhost,列出zookeepr ensemble中的serversshell

2     啓動/關閉

在master1上執行apache

bin/start-hbase.sh網絡

bin/stop-hbase.shsession

3     測試

若是web管理頁面能夠打開,說明Hmaster啓動成功:http:master1:60010ide

在master1上執行oop

{HBASE_HOME}/bin/hbase shell測試

進入shell命令行,經過建立表等操做來檢查不是不工做正常。

hbase(main):001:0> create 'scores','grade', 'course'

 

4     注意事項

HBase集羣須要依賴於一個Zookeeper ensemble。HBase集羣中的全部節點以及要訪問HBase的客戶端都須要可以訪問到該Zookeeper  ensemble。HBase自帶了Zookeeper,但爲了方便其餘應用程序使用Zookeeper,最好使用單獨安裝的Zookeeper ensemble。

此外,Zookeeper ensemble通常配置爲奇數個節點,而且Hadoop集羣、Zookeeper ensemble、HBase集羣是三個互相獨立的集羣,並不須要部署在相同的物理節點上,他們之間是經過網絡通訊的。

須要注意的是,若是要禁止啓動hbase自帶的zookeeper,那麼,不只僅須要剛纔的export HBASE_MANAGES_ZK=false配置,還須要hdfs-site.xml中的hbase.cluster.distributed爲true,不然你在啓動時會遇到Could not start ZK at requested port of 2181 錯誤,這是由於hbase嘗試啓動自帶的zookeeper,而咱們已經啓動了本身安裝的那個zookeeper,默認都使用2181端口,因此出錯。

還有,有時候會遇到stop-hbase.sh執行很長時間未結束,極可能的緣由是你以前把zookeeper關閉了.

最後,Hbase不須要mapreduce,因此只要start-dfs.sh啓動hdfs,而後到zookeeper各節點上啓動zookeeper,最後再hbase-start.sh啓動hbase便可.

 

 

二  安裝運行遇到的錯誤彙總:

1. habse啓動失敗,查看日誌發現報錯:

zookeeper 啓動失敗 BindException: Address already in use

緣由:zk在hbase啓動以前就已經啓動(由於我採用的是外部的zk集羣)。解決方法是環境變量設置export HBASE_MANAGES_ZK=false,同時確保hbase-env.sh裏也是相同設置。

2. 再次啓動發現hmaster仍是沒有起起來,查看日誌發現報錯:

hbase java.lang.runtimeexception hmaster aborted,查找error那一行是failed on connection exception: java.net.ConnectException: master1 Connection refused

緣由:master1節點跟hadoop集羣鏈接失敗,懷疑是hbase-site.xml配置有問題。其與hadoop鏈接配置爲:

<name>hbase.rootdir</name>

<value>hdfs://master1:9000/hbase</value>

這裏配置的9000,而集羣fs.defaultfs 原本端口是8020:

修改以後,從新啓動hvase,一切正常。。。

 

3. hbase內置hadoop jar包跟已有的集羣版本不同,須要進行替換以確保穩定性和一致性。
rm -rf /usr/hbase-0.98.21-hadoop2/lib/hadoop*.jar

find /usr/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /usr/hbase-0.98.21-hadoop2/lib

替換以後重啓發現hmaster又啓動不起來了,查看日誌發現:

Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentialsProvider

少了一個jar包。

解決方案:
須要將 hadoop-2.6.3/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jar 拷貝到hbase/lib下

 

4.通過上面幾回折騰以後發現重啓hbase以後,只有hMaster能啓動,其餘節點起不了。日誌錯誤以下。手動啓動regionserver後,發現hmaster又是變成阻塞狀態,在shell控制檯沒法進行表操做。

2015-07-01 04:39:34,480 WARN  [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Can't move 1588230740, there is no destination server available. 
2015-07-01 04:39:34,480 WARN  [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Unable to determine a plan to assign {ENCODED => 1588230740, NAME => 'hbase:meta,,1', STARTKEY => '', ENDKEY => ''} 
2015-07-01 04:39:35,480 WARN  [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Can't move 1588230740, there is no destination server available. 
2015-07-01 04:39:35,481 WARN  [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Unable to determine a plan to assign {ENCODED => 1588230740, NAME => 'hbase:meta,,1', STARTKEY => '', ENDKEY => ''} 
2015-07-01 04:39:36,379 ERROR [RpcServer.handler=6,port=60000] master.HMaster: Region server server2.corp.gs.com,60020,1435743503791 reported a fatal error: 
ABORTING region server server1.corp.gs.com,60020,1435743483790: org.apache.hadoop.hbase.YouAreDeadException: Server REPORT rejected; currently processing server1.corp.gs.com,60020,1435743483790 as dead server 
        at org.apache.hadoop.hbase.master.ServerManager.checkIsDead(ServerManager.java:339) 
        at org.apache.hadoop.hbase.master.ServerManager.regionServerReport(ServerManager.java:254) 
        at org.apache.hadoop.hbase.master.HMaster.regionServerReport(HMaster.java:1343) 
        at org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos$RegionServerStatusService$2.callBlockingMethod(RegionServerStatusProtos.java:5087) 
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2175) 
        at org.apache.hadoop.hbase.ipc.RpcServer$Handler.run(RpcServer.java:1879) 

Cause: 
org.apache.hadoop.hbase.YouAreDeadException: org.apache.hadoop.hbase.YouAreDeadException: Server REPORT rejected; currently processing server1.corp.gs.com,60020,1435743483790 as dead server

緣由:極有多是zk機器的hbase數據錯誤。

解決方案:

1. 停掉全部hbase的進程先
2. 刪掉zk中的hbase數據

hbase zkcli或者bin/zkCli.sh進入zk命令行
ls / #能夠看到hbase數據存在
rmr /hbase #刪除hbase數據


3. 運行hdfs fsck /hbase 確保數據沒有衝突
4. 從新啓動start-hbase.sh  
5. 若是仍是隻有主節點運行,則手動啓動regionserver

./hbase-daemon.sh start regionserver


6. 運行 hbase hbck  監測數據是否一致。若是有問題再運行 hbase hbck -fix (or 
-repair) 

* 運行hbase hbck - repair 有時候會報錯connection refuse,這是由於regionserver又掛掉了,要確保regionserver是運行狀態

 

還有問題參考下這篇文章吧http://apache-hbase.679495.n3.nabble.com/Corrupted-META-td4072787.html。

 

5. 重啓hbase以後Hmaster啓動不了,報錯org.apache.hadoop.hbase.util.FileSystemVersionException: File system needs to be upgraded. You have version null and I want version 8。

解決方法:

log中能夠發現多是hbase.version文件消失了,若是隻是測試hbase,能夠直接把hdfs中的/hbase刪掉。,而後重啓就行了,可是之前的數據就丟失了。

bin/hadoop fs -ls /hbase

發現/hbase/hbase.version確實已經消失了,去/lost+found目錄找確實能找到。

若是須要保留之前數據,能夠按下面步驟:

bin/hadoop fs -mv /hbase /hbase.bk

重啓HBase,這時就生成了/hbase/hbase.version文件,而後:

bin/hadoop fs -cp /hbase/hbase.version /hbase.bk/

bin/hadoop fs -rmr /hbase 

bin/hadoop fs -mv /hbase.bk /hbase

這樣再次重啓HBase,發現Hbase開始splitting hlogs,數據得以恢復。

 

6. hbase升級到1.1.6以後,發現web端口60010打不開了。

原來是由於1.0版本以後的hbase的master web 默認是不運行的,因此須要本身配置默認端口。配置以下

在hbase-site.xml中加入一下內容便可

<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>

同理能夠配置regionserver web端口

相關文章
相關標籤/搜索