HDFS自动关闭输出流问题

问题描述

HADOOP版本2.4.0JDK1.7.0代码:在map里面FSDataOutputStreamout=fs.create(tmpPath,true);if(!ftp.download(src_file,out)){log.error(10014,"下载文件"+src_file+"失败,采集点:"+collectId);out.close();}报错:org.apache.commons.net.io.CopyStreamException:IOExceptioncaughtwhilecopying.atorg.apache.commons.net.io.Util.copyStream(Util.java:135)atorg.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1695)atorg.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1669)atcom.eshore.icps.ftp.Ftp.download(Ftp.java:119)atcom.eshore.icps.collect.CollectMapper.map(CollectMapper.java:228)atcom.eshore.icps.collect.CollectMapper.run(CollectMapper.java:99)atorg.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)atorg.apache.hadoop.mapred.MapTask.run(MapTask.java:340)atorg.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)atjava.security.AccessController.doPrivileged(NativeMethod)atjavax.security.auth.Subject.doAs(Subject.java:415)atorg.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1557)atorg.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)Causedby:java.nio.channels.ClosedChannelExceptionatorg.apache.hadoop.hdfs.DFSOutputStream.checkClosed(DFSOutputStream.java:1528)atorg.apache.hadoop.fs.FSOutputSummer.write(FSOutputSummer.java:98)atorg.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:58)atjava.io.DataOutputStream.write(DataOutputStream.java:107)atorg.apache.commons.net.io.Util.copyStream(Util.java:123)...12more可以部分下载成功,比如本来要下载10个文件,下载成功了2个,开始下载第3个的时候卡了一会就会报这个错误,一般是遇到大文件,速度在300K/S左右

时间: 2024-09-15 22:10:57

HDFS自动关闭输出流问题的相关文章

HDFS的java访问接口

一.搭建Hadoop 开发环境 我们在工作中写完的各种代码是在服务器中运行的,HDFS 的操作代码也不例外.在开发阶段,我们使用windows 下的eclipse 作为开发环境,访问运行在虚拟机中的HDFS.也就是通过在本地的eclipse 中的java 代码访问远程linux 中的hdfs.要使用宿主机中的java 代码访问客户机中的hdfs,需要保证以下几点:(1)确保宿主机与客户机的网络是互通的(2)确保宿主机和客户机的防火墙都关闭,因为很多端口需要通过,为了减少防火墙配置,直接关闭.(3

Hadoop文件常用压缩方法的压缩效果比较

对于Hadoop文件常用的几种压缩方法,我写了一个java程序进行比较. 期望是,给出一个大文件(bigfile.txt) ,我们用各种方式压缩他们然后最终复制到HDFS中. 代码很简单:就是构造codec的实例,然后让它来创建到HDFS的输出流 /* */ package com.charles.hadoop.fs; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputS

求高手告知,MVC往页面输出流的时候,使用IE浏览器,打开浏览器下载器后,会导致浏览器自动关闭

问题描述 大神,现象如标题一样,就是MVC在往页面输出EXCEL的输出流的时候,页面自己就关闭了,只剩一个下载页面.这个该怎么解决啊~~代码是这样的导出帮助类如下:///<summary>///EXCEL导出帮助类///</summary>///<typeparamname="T">泛型类型,制定实体</typeparam>publicclassExcelHelper<T>{publicstaticMemoryStreamLi

HDFS-Architecture剖析

1.概述 从HDFS的应用层面来看,我们可以非常容易的使用其API来操作HDFS,实现目录的创建.删除,文件的上传下载.删除.追加 (Hadoop2.x版本以后开始支持)等功能.然而仅仅局限与代码层面是不够的,了解其实现的具体细节和过程是很有必要的,本文笔者给大家从以下几个方 面进行剖析: Create Delete Read Write Heartbeat 下面开始今天的内容分享. 2.Create 在HDFS上实现文件的创建,该过程并不复杂,Client到NameNode的相关操作,如:修改

hadoop详解(二) java访问hdfs

所有源码在github上,https://github.com/lastsweetop/styhadoop 读数据使用hadoop url读取 比较简单的读取hdfs数据的方法就是通过java.net.URL打开一个流,不过在这之前先要预先调用它的 setURLStreamHandlerFactory方法设置为FsUrlStreamHandlerFactory(由此工厂取解析hdfs协议),这个方 法只能调用一次,所以要写在静态块中.然后调用IOUtils类的copyBytes将hdfs数据流拷

HDFS写文件过程分析

HDFS是一个分布式文件系统,在HDFS上写文件的过程与我们平时使用的单机文件系统非常不同,从宏观上来看,在HDFS文件系统上创建并写一个文件,流程如下图(来自<Hadoop:The Definitive Guide>一书)所示: 具体过程描述如下: Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象 通过DistributedFileSystem对象与Hadoop集群的NameNode进行一次RPC

Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现之DFSPacket

一.简介       HDFS在数据传输过程中,针对数据块Block,不是整个block进行传输的,而是将block切分成一个个的数据包进行传输.而DFSPacket就是HDFS数据传输过程中对数据包的抽象. 二.实现       HDFS客户端在往DataNodes节点写数据时,会以数据包packet的形式写入,且每个数据包包含一个包头,n个连续的校验和数据块checksum chunks和n个连续的实际数据块 actual data chunks,每个校验和数据块对应一个实际数据块,被用来做

HDFS中文件的压缩与解压

文件的压缩有两大好处:1.可以减少存储文件所需要的磁盘空间:2.可以加速数据在网络和磁盘上的传输.尤其是在处理大数据时,这两大好处是相当重要的. 下面是一个使用gzip工具压缩文件的例子.将文件/user/hadoop/aa.txt进行压缩,压缩后为/user/hadoop/text.gz 1 package com.hdfs; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.Outpu

java 输入输出流 关闭-关于Java输入输出流关闭的问题。。。

问题描述 关于Java输入输出流关闭的问题... 在学java时老师一直强调要用完流要关闭流,但有一个问题我一直没清楚,就是装饰流该怎么个关闭,通常我们是这样关闭的: ... FileWriter fw = new FileWriter(fileName); BufferedWriter bw = new BufferedWriter(fw); ... fw.close(); bw.close(); ... 但我感觉太累赘,既然fw被bw装饰了,bw关闭的同时是否fw也被关闭呢? 或者fw被关闭