HDFS自动关闭输出流问题

BaiferLv 2015-12-02 11:02:43
HADOOP版本2.4.0 JDK 1.7.0
代码:在map里面
FSDataOutputStream out = fs.create(tmpPath, true);
if (!ftp.download(src_file, out)) {
log.error(10014, "下载文件 " + src_file + " 失败,采集点:"
+ collectId);
out.close();
}
报错:
org.apache.commons.net.io.CopyStreamException: IOException caught while copying.
at org.apache.commons.net.io.Util.copyStream(Util.java:135)
at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1695)
at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1669)
at com.eshore.icps.ftp.Ftp.download(Ftp.java:119)
at com.eshore.icps.collect.CollectMapper.map(CollectMapper.java:228)
at com.eshore.icps.collect.CollectMapper.run(CollectMapper.java:99)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
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:1557)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: java.nio.channels.ClosedChannelException
at org.apache.hadoop.hdfs.DFSOutputStream.checkClosed(DFSOutputStream.java:1528)
at org.apache.hadoop.fs.FSOutputSummer.write(FSOutputSummer.java:98)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:58)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at org.apache.commons.net.io.Util.copyStream(Util.java:123)
... 12 more


可以部分下载成功,比如本来要下载10个文件,下载成功了2个,开始下载第3个的时候卡了一会就会报这个错误,一般 是遇到大文件,速度在300K/S左右
...全文
2729 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

778

社区成员

发帖
与我相关
我的任务
社区描述
云计算 网络相关讨论
社区管理员
  • 网络
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧