hadoop集群中又出现了许多corrupted block, 在此记录一些可能的解决方法。
hadoop
首先可以通过fsck工具查看损坏情况和block情况,但是此工具不具备修复功能。
可以通过hadoop namenode -recover
尝试修复。然后检查datanode是否有宕机,进程是否有被意外杀死。
hadoop的数据文件在机器的/hadoop/data目录下,根据HDFS-7281 missing block marked as corrupted block是有可能恢复的。
可以通过hdfs dfs -ls /corrupt/file
查看replication数目和missing block,之后在datanode上通过
|
|
另外hdfs的namenode和secondnamenode要分开,namenode元数据要定期备份。
hbase
hbase的文件是放在hdfs上的,如果表实在无法恢复了,通过hadoop fsck / -delete
之后缺失了很多元文件,如果是hbase.id和hbase.version可以尝试新建一个集群,然后替换损坏的文件。
hbase本身有hbck工具,有一些修复功能,另外ZK上数据不一致也可能导致问题,因此需要在ZK里rmr /hbase
或者hbase clean --cleanZk
。hbck的修复大部分需要HMaster启动起来才行,另外还有离线修复的方法。