ROOT不在線的另外一種原因及解決辦法

轉載請聲明出處:http://blackwing.iteye.com/blog/1914898

近來hbase總是不穩定,運行一兩天後,就會發現-ROOT-不在線,代碼連接讀表,會有一下報錯:
Unable to find region xxxx,,99999999999999 after 10 tries


而rs打印出來的log則有以下錯誤:
org.apache.hadoop.hbase.NotServingRegionException: Region is not online: -ROOT-„0


有老外說這其實是客戶端問題,原因是本地的host列表中沒有添加全部rs節點域名,但當把全部rs的host添加到/etc/hosts中後,問題依舊。

據觀察,當發生ROOT不在線時,hbase web界面的Regions in Transition列表中總有好幾百個region在進行操作,根據淘寶文章的提示,應該是此時hbase在進行balancer,而導致ROOT下線(淘寶文章說balance時region會短暫下線,但不知爲何ROOT也下線而且起不來),而只需要禁用balance,之後在壓力小的時候,如凌晨,在啓動balance就行。

看過HMaster源碼,發現hbase.balancer.period不能通過設成負數或者0來禁用,所以只有把它設成int的最大值,月24天,之後通過crontab實現凌晨balance:
在master的hbase-site.xml中增加以下設置:
<property>
<name>hbase.balancer.period</name>
<value>2147483647</value>
</property>


之後定時任務balance:
0 4 * * * echo balancer|hbase shell


已經觀察幾天,hbase目前爲止運行穩定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章