我正在使用 Hadoop 2.6.4,并且我的文件处于“openforwrite”状态。我得到了解决方案:运行'hdfs debug recoverLease'来恢复hdfs block 文件的租约。(Hadoop 2.7.0之后的功能)
但在我的 hadoop 版本(2.6.4)中,我无法执行 recoverLease
命令。有什么想法可以解决这个问题吗?
非常感谢。
最佳答案
在极少数情况下,文件可能会停留在 HDFS 中的 OPENFORWRITE 状态超过默认过期时间。如果发生这种情况,则需要将数据移动到新的 inode 以清除 OPENFORWRITE 状态。
解决方案
1) 停止所有应用程序写入 HDFS。
2) 暂时将文件移动到其他位置。$ hdfs dfs -mv /Path_to_file /tmp/
3) 将文件复制回其原始位置。这将强制创建一个新的 inode 并清除 OPENFORWRITE 状态$ hdfs dfs -cp /tmp/Path_to_file /Original/destination
4) 确认文件正常工作后,从临时位置删除复制的文件。$ hdfs dfs -rm /tmp/Path_to_file
关于hadoop - 如何在 Hadoop 2.6.4 中执行类似 'recoverLease' 的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408865/