修复HBase表(转换中未分配的区域)

Mar*_*rio 12 hadoop hbase cloudera

我有点卡住修复故障表(在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
Run Code Online (Sandbox Code Playgroud)

当我跑步时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,}
Run Code Online (Sandbox Code Playgroud)

它只是循环.

如果我不这样做-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
Run Code Online (Sandbox Code Playgroud)

我以前跑-repair了几次,但它有所帮助.但这次不再了.

好吧,所以这说明要做一个人工干预来解决这个问题.有人能指出我如何做到这一点的正确方向?食谱,网页,示例,任何事情都会有所帮助.

谢谢,马里奥

sul*_*bhc 15

马里奥,

因此,区域在转换中陷入困境的原因之一是,当它跨区域服务器移动时,它从源区域服务器取消分配,但从未分配给另一个区域服务器.一个总是对我有用的修复方法是通过以下方式强制从hbase shell中分配它: -

assign regionName
Run Code Online (Sandbox Code Playgroud)


hp3*_*p36 5

我试图对区域进行强制分配,但它对我不起作用。我尝试了以下操作,并且奏效了:

脚步:

  • 从 hbase shell 禁用表
  • 使用以下命令运行 hbck 以修复问题

    sudo -u hbase hbase hbck -repair

  • 从 hbase shell 启用表

  • 从以上所有这一项工作。在这些步骤之前你可以做的一件事是运行 `hbase hbck` 来查看哪些表是 `inconsistent` 这样你就可以知道哪些表应该被禁用 (2认同)