如何修复损坏的hdfs?我在apache/hadoop网站上看到它说 fsck
命令,但不能解决它。希望以前遇到过这个问题的人能告诉我怎么解决这个问题。
与用于本机文件系统的传统fsck实用程序不同,此命令不会更正它检测到的错误。通常,namenode会自动更正大多数可恢复故障。
当我跑的时候 bin/hadoop fsck / -delete
,它列出了损坏或丢失块的文件。我如何使它不腐败?这是一个练习机,所以我可以吹走一切,但当我们去生活,我将无法“修复”它吹走一切,所以我现在试图找出它。
4条答案
按热度按时间cfh9epnr1#
你可以用
以确定哪些文件有问题。查看输出中是否有丢失或损坏的块(暂时忽略复制块下的)。这个命令非常冗长,尤其是在大型hdfs文件系统上,因此我通常会使用
它忽略了只有点和线的线来谈论复制。
一旦发现文件损坏
使用该输出确定块可能存在的位置。如果文件大于块大小,则可能有多个块。
您可以使用报告的块编号转到datanodes和namenode日志,搜索块所在的一台或多台计算机。尝试在这些机器上查找文件系统错误。缺少装入点、datanode未运行、文件系统已重新格式化/重新配置。如果你能找到一个问题,以这种方式,使块恢复在线,该文件将再次健康。
用泡沫冲洗并重复,直到所有的文件都是健康的或你用尽所有的替代品寻找块。
一旦确定发生了什么并且无法恢复更多的块,只需使用
命令使您的hdfs文件系统恢复正常,以便您可以在新错误发生时开始跟踪它们。
emeijp432#
这里的解决方案对我有效:https://community.hortonworks.com/articles/4427/fix-under-replicated-blocks-in-hdfs-manually.html
izj3ouym3#
如果你只是想让你的hdfs恢复到正常状态,而不太担心数据,那么
这将列出损坏的hdfs块:
hdfs fsck -list-corruptfileblocks
这将删除损坏的hdfs块:hdfs fsck / -delete
请注意,您可能必须使用sudo -u hdfs
如果您不是sudo用户(假设“hdfs”是sudo用户的名称)eqfvzcg84#
启动所有守护进程并以“hadoop namenode-recover-force”的形式运行命令停止守护进程并重新启动。。请等待一段时间以恢复数据。