当前位置: 首页 > 知识库问答 >
问题:

HDFS上区域文件损坏的HBase群集

禄仲渊
2023-03-14

我们有这个HBase集群:30+个节点,48个表,40+个HDFS级别的TB,复制因子2。由于两个节点上的磁盘故障,我们在HDFS上有一个损坏的文件。

HDFS fsck/输出摘录,其中显示了一个损坏的HBase区域文件:

/user/hbase/table_foo_bar/295cff9c67379c1204a6ddd15808af0b/n/ae0fdf7d0fa24ad1914ca934d3493e56: 
 CORRUPT blockpool BP-323062689-192.168.12.45-1357244568924 block blk_9209554458788732793
/user/hbase/table_foo_bar/295cff9c67379c1204a6ddd15808af0b/n/ae0fdf7d0fa24ad1914ca934d3493e56:
 MISSING 1 blocks of total size 134217728 B

  CORRUPT FILES:        1
  MISSING BLOCKS:       1
  MISSING SIZE:         134217728 B
  CORRUPT BLOCKS:       1

The filesystem under path '/' is CORRUPT
Version: 0.94.6-cdh4.4.0
...
 table_foo_bar is okay.
   Number of regions: 1425
   Deployed on:  ....
...
0 inconsistencies detected.
Status: OK   

而且,我们似乎仍然可以从损坏区域文件的未丢失块中查询数据(就我认为我能够根据区域的开始和结束行键进行检查而言)。

  • 因为文件块数据不可恢复,所以似乎唯一的选择是删除完整的损坏文件(使用Hadoop fs-rmHadoop fsck-delete/)。这将在HDFS级别“修复”损坏。
  • 但是,删除HDFS文件恐怕会导致HBase级别的损坏,因为完整的区域文件将消失
  • 我考虑了Hadoop fsck-move/将损坏的文件移动到/lost+find,看看HBase会如何处理,但是移动到/lost+find并不像看起来那样可逆,所以我对此也犹豫不决

具体问题:

共有1个答案

郗福
2023-03-14

我们遇到了类似的情况:一个HBase表丢失了5个块,5个文件损坏。
HBase版本:0.94.15
disro:CDH 4.7
OS:CentOS 6.4

恢复说明:

  • 切换到hbase用户:su hbase
  • HBase HBCK-Details了解问题的范围
  • HBase HBCK-FIX尝试从区域级不一致中恢复
  • HBase hbck-repair试图自动修复,但实际上将不一致的数量增加了1
  • HBase HBCK-FixMeta-FixAssignments
  • hbase hbck-repair此时间表已修复
  • HBase hbck-详细信息确认修复
    null

[1]hbck命令的Cloudera页面:
http://www.Cloudera.com/content/Cloudera/en/documentation/core/latest/topics/admin_hbck_poller.html

 类似资料:
  • 问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl

  • 到目前为止,我做了一些研究和ACC。据我所知,Hadoop在HDFS中提供了处理原始数据块(文件)的框架,而HBase是Hadoop之上的数据库引擎,它基本上处理结构化数据而不是原始数据块。Hbase在HDFS上提供了一个逻辑层,就像SQL一样。正确吗?

  • 我正在使用apache poi,我创建了一个HSSF工作簿,并尝试打开一个xlsx文件。但当我用excel打开时,它显示文件已损坏。这是我的密码。

  • 我正在尝试创建一个zip文件,以便能够通过http发送多个文件。 我的问题是,生成的Zip文件在发送之前和之后都“损坏”。问题是我无法找到我做错了什么,因为我在控制台中没有收到任何错误。 那么,有人有一个想法文件我生成的zip文件损坏? 这是我的代码: 谢谢你的帮助!

  • 问题内容: 我正在尝试使用Apache Commons Net进行FTP文件传输。 问题是文件间歇性到达服务器损坏。通过“腐败”我的意思是的WinRAR告诉我一个ZIP文件有一个“意外结束 存档”。有时文件是完全空的。我注意到,这种 情况在较大的文件(100kb +)上发生的更多,但是在较小的文件 (20kb)上也会发生。 我知道一个事实,即正在上传的源zip文件是有效的,并且 只有243kb。

  • 我需要一个快速的Java方法来检查JPEG文件是否有效,或者它是否是一个被截断/损坏的图像。 我试着用几种方法: > 使用javax.imageio库 我正在寻找一个Java替代UNIX程序jpeginfo,它大约快10倍(在我的PC上,大约10个图像/秒)。

  • 我编写的下载文件的方法总是产生损坏的文件。 我通过adb访问这些文件,将它们传输到我的sccard,在那里我看到它们似乎有合适的大小,但没有根据例如Linux命令的类型。 你知道丢失了什么以及如何修复它吗? 谢谢。 代码的简单版本(但错误相同) 日志:< code > file . length:2485394 | content length:1399242 问题是,我从我的API单例中获得了,