Hadoop Filesystem closed Exception

  FileSystem.get(uri, conf)方法會根據conf.getBoolean(disableCacheName, false)的值決定是創建FileSystem還是從cache中獲取FileSystem, 而默認情況下conf.getBoolean(disableCacheName, false)值爲flase(除非特別指定disableCacheName 值爲true), 即從cache獲取. 問題正是出在這裏,我們的oozie作業是小時任務,並由多個action節點組成,每個action節點執行時從cache中獲取FileSystem, 有可能該FileSystem因爲網絡原因或者其他原因已經被closed, 但仍舊被cache, 導致拿到該FileSystem的action在使用時發生IOException異常.

      定位到問題原因後就需要設法改進,方法也很簡單,只要使conf.set("fs.hdfs.impl.disable.cache","true");   爲true即可,這樣每次都會重新創建一個FileSystem, 也就不會從cache中拿到失效的FileSystem了.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章