14

我在修复故障表时有点卡住(在 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几次,很有帮助。但这一次,不再。

好的,所以这表明要进行手动干预来解决这个问题。有人可以指出我如何做到这一点的正确方向吗?食谱、网页、示例,任何东西都会有所帮助。

谢谢,马里奥

4

7 回答 7

19

马里奥,

因此,一个区域卡在转换中的原因之一是,当它跨区域服务器移动时,它没有从源区域服务器分配,但从未分配给另一个区域服务器。一种对我总是有效的修复方法是通过以下方式从 hbase shell 中强制分配它:-

assign regionName
于 2012-07-03T17:34:18.633 回答
5

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

脚步:

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

    sudo -u hbase hbase hbck -repair

  • 从 hbase shell 启用表

于 2017-02-23T08:08:58.767 回答
1

如果您的 HBase 版本足够新,您也可以尝试使用 hbck -repairHoles 而不是 -repair。在最近的“修复漏洞”问题上,这对我有用。

于 2014-04-24T07:56:19.927 回答
1

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

如果有,您应该单独使用 hbck -fixHdfsHoles -fixMeta 直到修复。(可能需要几次尝试)。

如果正在转换的区域没有这样的文件(它应该在 /hbase/data/// 下),那么 HBase 认为该目录中应该有该区域的有效 HFile 并且无法修复它正常的修复命令。

您应该在此处执行最新响应之一中的内容,并在您的 hdfs 中创建一个有效的 HFile :

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308

于 2016-05-21T18:18:07.857 回答
1

我有同样的问题

  • 通过 Ambari 启动所有服务时,HDFS 进入了安全模式,并且很长时间没有回来。
  • 其他服务没有启动,因为 HFDS 处于安全模式的时间更长。我手动从安全模式中删除了 HDFS 并尝试启动服务,看起来这损坏了一些影响 hbase 的 HDFS 文件。
  • 扫描现有表返回“未知表错误”
  • 创建新命名空间返回以下错误:

create_namespace 'tst1' 错误:java.io.IOException:表命名空间管理器未完全初始化,稍后再试

“hbase hbck -修复”

返回“错误:和之间的区域链中有一个洞。您需要在 hdfs 中创建一个新的 .regioninfo 和区域目录来堵住这个洞”。

运行“hbase hbck -repairHoles”解决了这个问题。我也可以扫描以前存储的数据。

注意: - hbase hbck 命令应该从 hbase 用户运行

于 2019-02-08T10:41:41.970 回答
0

我有同样的问题。一个区域被卡住了Region still in transition, waiting for it to become assigned:。所有-repair选项都不起作用,因为所有选项都要求分配所有区域。

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

删除该区域后,所有-repair选项都有效,但由于 Zookeeper 缓存,报告该区域仍在转换中。

作为如何获取 HBASE 中处于 FAILED_OPEN 状态的区域?我从 zookeeper 中删除了转换缓存,重新启动了 HBASE master,一切正常

于 2019-08-26T13:24:49.383 回答
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

因此,将自己和组更改为其他人后,问题就解决了。现在您将成功扫描表。

于 2017-08-10T02:32:57.523 回答