Hadoop 修复HBase表(转换中的未分配区域)
我在修复有故障的表时遇到了一些困难(在Hbase 0.92.1-cdh4.0.0、Hadoop 2.0.0-cdh4.0.0上) 有一个过渡区域尚未完成: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
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
,查看哪些表不一致
,以便知道哪些表应该禁用