您好,登錄后才能下訂單哦!
這篇文章主要介紹HBase-0.98.9如何搭建配置,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
其它不變,export HBASE_MANAGES_ZK=false,這表示不使用hbase自帶的zookeeper,而使用外部的zookeeper(我使用的是跟hadoop集群配置的zookeeper)
<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>
master1 master2 slave1
hbase.zookeeper.property.clientPort:指定zk的連接端口
zookeeper.session.timeout:RegionServer與Zookeeper間的連接超時時間。當超時時間到后,ReigonServer會被Zookeeper從RS集群清單中移除,HMaster收到移除通知后,會對這臺server負責的regions重新balance,讓其他存活的RegionServer接管.
hbase.zookeeper.quorum:默認值是 localhost,列出zookeepr ensemble中的servers
在master1上執行
bin/start-hbase.sh
bin/stop-hbase.sh
如果web管理頁面可以打開,說明Hmaster啟動成功:http:master1:60010
在master1上執行
{HBASE_HOME}/bin/hbase shell
進入shell命令行,通過創建表等操作來檢查不是不工作正常。
hbase(main):001:0> create 'scores','grade', 'course'
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下
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。
解決方法:
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,數據得以恢復。
原來是因為1.0版本之后的hbase的master web 默認是不運行的,所以需要自己配置默認端口。配置如下
在hbase-site.xml中加入一下內容即可
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
同理可以配置regionserver web端口
以上是“HBase-0.98.9如何搭建配置”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。