美文网首页
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