美文网首页
HDFS Client偶现Filesystem closed

HDFS Client偶现Filesystem closed

作者: 独行的卡卡 | 来源:发表于2020-03-05 22:33 被阅读0次

问题现象

不定期偶现同一进程内所有业务访问HDFS抛出如下异常:

java.io.IOException: Filesystem closed
    at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:703)
    at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:779)
    at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:840)
    at java.io.DataInputStream.read(DataInputStream.java:149)
    ...

可能原因

Hadoop2.7.1版本Bug。

问题分析

经过对源码的分析发现Hadoop2.7.1及以前版本实现存在逻辑缺陷:

org.apache.hadoop.hdfs.client.impl.LeaseRenewer:
    run():
        在发生SocketTimeoutException异常时会触发abort()。
        该abort()函数会将FileSystem下的负责与HDFS Server进行通信的DFSClient置为不可用状态,而FileSystem却无法感知这个状态进行重新初始化,从而导致了FileSystem的持续不可用。同时,因为FileSystem对象默认进程唯一,所以导致了进程内所有HDFS相关业务异常。

问题解决方案

升级为Hadoop2.7.2

相关文章

网友评论

      本文标题:HDFS Client偶现Filesystem closed

      本文链接:https://www.haomeiwen.com/subject/hiilrhtx.html