我修复了一个有问题的表(在Hbase 0.92.1-cdh4.0.0,Hadoop 2.0.0-cdh4.0.0上)
转换中的某个区域无法完成:
Region State
bf2025f4bc154914b5942af4e72ea063 counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063. state=OFFLINE, ts=Tue Jun 12 11:43:53 CEST 2012 (0s ago), server=null
当我运行sudo -u hbase hbase hbck -repair
时,我明白了:
Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server.
Trying to fix unassigned region...
12/06/12 11:44:40 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063.', STARTKEY => '1329773878.35_766a0b4df75e4381a686fbc07db9e333', ENDKEY => '1329793347.58_163865765c0a11e184ab003048f0e77e', ENCODED => bf2025f4bc154914b5942af4e72ea063,}
它只是循环。
如果我不做-repair
,我就明白了:
Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server.
ERROR: Region { meta => counter_traces,1329816776.95_95b5561f3c1e496598421359a19ac665,1339425297099.ee1fd808d954c9adc9ed95ec2f29d119., hdfs => hdfs://hbase001:8020/hbase/counter_traces/ee1fd808d954c9adc9ed95ec2f29d119, deployed => } not deployed on any region server.
12/06/12 11:45:59 DEBUG util.HBaseFsck: There are 134 region info entries
ERROR: There is a hole in the region chain between 1329773878.35_766a0b4df75e4381a686fbc07db9e333 and 1329793347.58_163865765c0a11e184ab003048f0e77e. You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: There is a hole in the region chain between 1329816776.95_95b5561f3c1e496598421359a19ac665 and 1329847231.75_b3c50776778b43e088dd7ed865e11331. You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: Found inconsistency in table counter_traces
我之前已经运过-repair
几次,但它有所帮助。但这次,
不再了。
好的,所以这说明要做一个人工干预来解决这个问题。有人可以 指出我正确的方向如何做到这一点?食谱,网页,示例, 什么都有帮助。
谢谢, 马里奥
答案 0 :(得分:13)
马里奥,
因此,区域在转换中陷入困境的原因之一是,当它跨区域服务器移动时,它从源区域服务器取消分配,但从未分配给另一个区域服务器。 一个始终适合我的修复方法是通过以下方式强制从hbase shell中分配它: -
assign regionName
答案 1 :(得分:1)
如果您的HBase版本足够新,您也可以尝试使用hbck -repairHoles而不仅仅是-repair。这对我来说是最近的诀窍"修复漏洞"问题
答案 2 :(得分:1)
首先,您应该检查hdfs中是否有针对该特定区域的文件。
如果有,你应该坚持使用hbck -fixHdfsHoles -fixMeta直到修复。 (可能需要几次尝试)。
如果转换区域没有这样的文件(它应该在/ hbase / data ///下),那么HBase认为该目录中该区域应该有一个有效的HFile,并且不会能够使用正常的修复命令修复它。
你应该在这里做一个最新的回复,并在你的hdfs中创建一个有效的HFile:
http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308
答案 3 :(得分:1)
我有同样的问题
create_namespace'tst1' 错误:java.io.IOException:表命名空间管理器未完全初始化,请稍后再试
“ hbase hbck-修复”
返回“错误:和之间的区域链中有一个洞。您需要在hdfs中创建一个新的.regioninfo和region dir才能插入该洞。”
运行“ hbase hbck -repairHoles”解决了该问题。 我也可以扫描以前存储的数据。
注意:-hbase hbck命令应从hbase用户运行
答案 4 :(得分:0)
就我而言,我忘了更改从另一个群集中复制的区域数据的所有者。
然后我尝试hbase hbck -repair
,但获得INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned
然后出现错误Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms
我发现hbase:meta
已有区域信息。
在扫描表格中,您将收到类似
的错误ERROR: No server address listed in hbase:meta for region X
然后尝试hbase hbck -fixAssignments
,但仍然像以前一样失败。
然后我检查表区域数据,只找到该表的自己和组
drwxr-xr-x - hdfs hbase
但其他像这样
drwxr-xr-x - hbase hbase
因此,在将自己和团队改为其他人之后解决了问题。 现在你将成功扫描表。
答案 5 :(得分:0)
我有同样的问题。 Region still in transition, waiting for it to become assigned:
中停留了一个区域。 -repair
选项均无效,因为所有选项均要求分配所有区域。
我不得不从hdfs中删除该区域。
hdfs$ hdfs dfs -rm -r /hbase/data/default/<table>/<region>
删除区域后,所有-repair
选项均有效,但是由于动物园管理员缓存,报告该区域仍处于过渡状态。
在How to get the region in HBASE which is struck in FAILED_OPEN state?时,我从zookeeper中删除了过渡缓存,重新启动了HBASE master,一切正常