SQOOP - password-file选项关闭文件系统引用,导致java.io.IOException:Filesystem关闭

时间:2013-11-01 21:27:39

标签: java hadoop hdfs sqoop

我正在使用Sqoop 1.4.3-cdh4.3.0。当我使用-password-file选项运行sqoop时,我得到一个例外。

java.io.IOException: Filesystem closed
    at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:565)
    at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:589)
    at java.io.FilterInputStream.close(FilterInputStream.java:181)
    at org.apache.hadoop.util.LineReader.close(LineReader.java:149)
    at org.apache.hadoop.mapred.LineRecordReader.close(LineRecordReader.java:243)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.close(MapTask.java:222)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:421)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
2013-11-01 20:32:43,471 INFO org.apache.hadoop.mapred.Task: Runnning cleanup for the task

查看他们的code,看起来他们正在关闭文件系统句柄(fetchPasswordFromFlie)。我在想这就是为什么我得到上面的例外,因为当我使用明文密码时它工作正常。

我不确定如何解决此问题。我看过几篇帖子暗示 fs.hdfs.impl.disable.cache 但是我不知道这会对演出产生什么影响等。

1 个答案:

答案 0 :(得分:0)

我正在使用oozie,因此在oozie中我设置了作业属性fs.hdfs.impl.disable.cache。解决了这个问题。

幸运的是,对于这项工作,我们的选手都没有使用fs。我想如果确实使用了fs(fs = FileSystem.get(conf))那么我们可能必须通过并确保每个fs都关闭(因为每次我们调用get它都会返回一个新的实例)。