手动修复hbase表重叠(多个区域具有相同的开始键)

nukf8bse  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(550)

我通过java客户机将数据插入hbase。但是,突然,区域服务器崩溃了。所以我重新启动了hbase,之后hmaster就没有运行了。当我运行修复工具时- hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair ,我知道follows:-

ERROR: (region TABLE_NAME, rowkey_value, region_name_1) Multiple regions have the same start key: rowkey_value 
ERROR: (region TABLE_NAME, rowkey_value, region_name_2) Multiple regions have the same start key: rowkey_value 
ERROR: (regions Table_Name, rowkey_value, region_name_1 and Table_Name, rowkey_value, region_name_2) There is an overlap in the region chain. 
ERROR: Found inconsistency in table TABLE_NAME

我无法运行hbck(联机修复/修复),因为我的主机没有运行。我现在需要手动修复。现在有大量的数据,所以我不想丢失它们。
编辑:
我格式化了namenode并再次添加了数据,瞧,同样的问题再次出现!!这一次,我让主人跑了。所以我执行了 hbck -fixHdfsOverlaps 命令,但过了很长时间,我发现现在,hmaster和namenode都没有运行。现在,由于nn也坏了,我无法访问hdfs。我不想丢失任何数据。我注意到其中一个区域在其区域的“.tmp”目录中有大量数据,该区域也尚未被压缩。那么,如何重新恢复hdfs和hbase呢?
namenode的日志信息:

2014-07-09 09:19:44,498 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hdfstmp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:288)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:360)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
2014-07-09 09:19:44,500 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hdfstmp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:288)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:360)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)

2014-07-09 09:19:44,501 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ip-10-237-184-7.ec2.internal/10.237.184.7

************************************************************/

然后hdfs temp目录只包含dfs和mapred目录。缺少名称目录。名称dir中的image和previous.checkpoint、edits等也是如此。现在,这是否意味着数据丢失了?或者无法恢复?有办法备份数据吗?
edit(2):我看到数据目录在 hbck -fixHdfsOverlaps 命令已运行。或者在运行恢复时,hbck命令是否会临时将数据移动到其他位置?如果是这样的话,它在哪里以及如何将它带回来并再次恢复hdfs而不丢失任何或最小的数据。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题