hdfs出现Cannot obtain block length for LocatedBlockt

2021年09月15日 阅读数:3
这篇文章主要向大家介绍hdfs出现Cannot obtain block length for LocatedBlockt,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

问题背景:css

致使的缘由:是由于2021/0913那天重启的hdfs的服务,flink实时任务还一直往hdfs里面写任务。(有些公司是由于Flume致使的)html

hdfs出现Cannot obtain block length for LocatedBlockt_hdfs

因此这里的”Cannot obtain block length for LocatedBlock”结合字面意思讲应该是当前有文件处于写入状态还没有关闭,没法与对应的datanode通讯来成功标识其block长度.node

 

定位到了出问题的文件,是2021年09月13号的文件状态仍是`openforwrite`, fsck检查结果以下:app

检测代码 ide

hdfs fsck /group/user/tools/meta/hive-temp-table -openforwrite

hdfs出现Cannot obtain block length for LocatedBlockt_hdfs_02

解决方案,释放文件租约:debug

hdfs debug recoverLease -path /group/user/tools/meta/hive-temp-table/test_sony_app_action/20210913/part-0-83 -retries 3

hdfs出现Cannot obtain block length for LocatedBlockt_hdfs_03

在从新跑任务,任务正常。code

参考如下文章htm

Cannot obtain block length for LocatedBlock故障分析和解决 - Syn良子 - 博客园 (cnblogs.com)blog