Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 修复HBase表(转换中的未分配区域)_Hadoop_Hbase_Cloudera - Fatal编程技术网

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

Hadoop 修复HBase表(转换中的未分配区域),hadoop,hbase,cloudera,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

我在修复有故障的表时遇到了一些困难(在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,}
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
它只是循环

如果我不执行
-修复
,我会得到以下结果:

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,}
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
,效果很好。但这一次,, 不再是了

好的,这说明需要手动干预来解决这个问题。有人可以吗 给我指出正确的方向如何做?食谱、网页、示例、, 什么都可以

谢谢, 马里奥

马里奥

因此,一个区域在转换过程中受阻的原因之一是,当它在区域服务器之间移动时,它未从源区域服务器分配,但从未分配给另一个区域服务器。 对我来说,一个始终有效的修复方法是通过以下方式从hbase外壳强制分配它:-

assign regionName

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

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

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

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

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


我试着对区域进行有力的分配,但对我来说不起作用。我尝试了以下方法,效果很好:

步骤:

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

    sudo-u hbase hbase hbck-repair

  • 从hbase外壳启用表


在我的例子中,我忘记了更改从另一个集群复制的区域数据的所有者

然后我尝试执行
hbase hbck-repair
,但得到
INFO util.hbasefskrepair:Region仍在转换中,等待它被分配
然后出现错误
无法完成检查或修复区域,无法在超时120000ms内移出转换

我发现
hbase:meta
已经有了区域信息

当扫描表格时,您将得到如下错误

ERROR: No server address listed in hbase:meta for region X
然后尝试
hbase hbck-fixAssignments
,但仍然像以前一样失败

然后检查表区域数据,发现只有该表自己的和组是

drwxr-xr-x   - hdfs  hbase
但是其他的像这样

ERROR: No server address listed in hbase:meta for region X
drwxr-xr-x-hbase hbase

所以,在改变了自己和他人的关系后,问题就解决了。 现在您将成功地扫描表。

我也有同样的问题

  • 当通过Ambari启动所有服务时,HDFS进入了安全模式,并且在更长的时间内没有返回
  • 由于HFDS处于安全模式的时间更长,其他服务无法启动。我手动将HDFS从安全模式中删除,并尝试启动服务,看起来这损坏了一些HDFS文件,影响了hbase
  • 扫描现有表返回“未知表错误”
  • 创建新命名空间时返回以下错误:
创建_名称空间“tst1” 错误:java.io.IOException:表命名空间管理器未完全初始化,请稍后重试

“hbase hbck-修复”

返回“错误:到之间的区域链中有一个洞。您需要在hdfs中创建一个新的.regioninfo和region dir来填补这个洞”

运行“hbase hbck-repairHoles”修复了该问题。 我还可以扫描以前存储的数据


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

我也遇到了同样的问题。一个区域卡在仍处于转换中的
区域中,等待它被分配:
-repair
选项均无效,因为所有选项都要求分配所有区域

我必须从hdfs中删除该区域。
hdfs$hdfs dfs-rm-r/hbase/data/default/

删除区域后,所有的
-repair
选项都起作用,但由于zookeeper缓存的原因,报告区域仍处于转换状态


当我从zookeeper中删除转换缓存时,重新启动了HBASE master,一切正常

,这使我走上了正确的方向。直接搜索不起作用,但至少我现在找到了一些代码,帮助我填补了区域链中的漏洞。你能分享这些代码吗?我有一个类似的问题,我想解决。很抱歉,我当时应该发帖。我想我已经没有了。也看到了-它修复了分配无法从上面所有的工作中恢复的停滞状态。在执行这些步骤之前,您可以做的一件事是运行
hbase hbck
,查看哪些表
不一致
,以便知道哪些表应该禁用