[解决]java.io.IOException: Cannot obtain block length for LocatedBlock

版权声明:*************本文为博主原创文章,未经许可不得转载************* https://lidong.blog.csdn.net/article/details/51420701

在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现是文件未被正常关闭(flume传到hdfs上的,可能由于Namenode长时间gc或者切换或者重启会留下很多.tmp结尾的文件),为此,使用hadoop命令显示处于打开状态的文件,然后删除这些文件:

hadoop fsck / -openforwrite | egrep -v '^\.+$' | egrep "MISSING|OPENFORWRITE" | grep -o "/[^ ]*" | sed -e "s/:$//" | xargs -i hadoop fs -rmr {};

然后重传这些文件到hdfs。

展开阅读全文

没有更多推荐了,返回首页