修复HBase表(过渡中未分配的区域)

问题描述 投票:12回答:7

我在修复错误的表时有些卡住(在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几次,这很有帮助。但是这次不再。

好,所以这表示要进行手动干预来解决此问题。有人可以吗为正确的方向指出我该如何做?食谱,网页等任何都会有帮助的。

谢谢,马里奥

hadoop hbase cloudera
7个回答
16
投票

马里奥]

因此,区域陷入过渡的原因之一是,当跨区域服务器移动该区域时,该区域未从源区域服务器分配,但从未分配给另一个区域服务器。对我来说一直有效的一种修复方法是通过:-

从hbase shell强制进行分配
assign regionName

3
投票

我试图对区域进行强力分配,但这对我没有用。我尝试了以下方法,它起作用了:


1
投票

如果您的HBase版本足够新,您也可以尝试hbck -repairHoles而不是-repair。这为我解决了最近的“解决漏洞”问题。


1
投票

首先,您应该检查hdfs中是否存在该特定区域的文件。


1
投票

我有同样的问题


0
投票

就我而言,我忘记了更改从另一个集群复制的区域数据的所有者。


0
投票

我有同样的问题。一个区域卡在Region still in transition, waiting for it to become assigned:中。 -repair选项均无效,因为所有选项均要求分配所有区域。

我不得不从hdfs中删除该区域。hdfs$ hdfs dfs -rm -r /hbase/data/default/<table>/<region>

© www.soinside.com 2019 - 2024. All rights reserved.