我正在使用Hadoop 2.6.4并且我的状态为'openforwrite'。我得到了解决方案:运行' hdfs debug recoverLease'恢复hdfs块文件的租约。(Hadoop 2.7.0之后的功能)
但在我的hadoop版本(2.6.4)中,我无法执行recoverLease
命令。有没有想法解决这个问题?
非常感谢。
答案 0 :(得分:0)
在极少数情况下,文件在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