在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现是文件未被正常关闭(flume传到hdfs上的,可能由于Namenode长时间gc或者切换或者重启会留下很多.tmp结尾的文件),为此,使用hadoop命令显示处于打开状态的文件,然...
Flume已经写过的hdfs文件居然还处于openforwrite状态,而且无法cat和get 所以这里的”Cannot obtain block length for LocatedBlock”结合字面意思讲应该是当前有文件处于写入状态尚未关闭,无法与对应的datanode通信来成功标识其block长度. 那么分析其产生的可能性,举栗子如下 1>Flume客户端写入hdfs文件时的网络连接被不正常...
所以这里的”Cannot obtain block length for LocatedBlock”结合字面意思讲应该是当前有文件处于写入状态尚未关闭,无法与对应的datanode通信来成功标识其block长度. 定位到了出问题的文件,是2021年09月13号的文件状态还是`openforwrite`, fsck检查结果如下: 检测代码 hdfs fsck /group/user/tools/meta/hive-temp-tabl...
在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现是文件未被正常关闭(flume传到hdfs上的,可能由于Namenode长时间gc或者切换或者重启会留下很多.tmp结尾的文件),为此,使用hadoop命令显示处于打开状态的文件,然...
[解决]java.io.IOException: Cannot obtain block length for LocatedBlock,在hadoop测试集群运行job的过程中发现部分运行失败,有CannotobtainblocklengthforLocatedBlock
在备份 hdfs 的数据到本地磁盘时,使用了 get 命令,结果报错了,具体的错误就是 Cannot obtain block length for LocatedBlock 这个异常。发现这个问题之后就开始解决问题。 问题出现的原因 写hdfs 的上游是 flume,所以就去查出错数据当天是否调整过 flume 服务。通过 flume 的日志发现当天有写 hdfs 时候,datanode 没...
Caused by: java.io.IOException: Cannot obtain block length for LocatedBlock{BP-2013445412-xxxx-1479285812782:blk_1234775329_161048986; getBlockSize()=441111; corrupt=false; offset=0; locs=[DatanodeInfoWithStorage[xxxxx,DS-8c26dca6-2070-4f56-8c0e-a6a3c6bb80a0,DISK], DatanodeInfoWithStorage[xxx...
简介:在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现是文件未被正常关闭(flume传到hdfs上的,可能由于Namenode长时间gc或者切换或者重启会留下很多. ...
hive Cannot obtain block length for LocatedBlock 报错定位,程序员大本营,技术文章内容聚合第一站。
关于解决错误 java.io.IOException: Cannot obtain block length for LocatedBlock{BP的方案020-09-29 https://blog.csdn.net/qq_28633249/article/details/79893257