在Hadoop做上传下载操作的时候,上传的时候会出现一个超时的异常,在下载的时候回多出来crc的文件
/**
* 上传代码
*/
@Test
public void putFileToHDFS() throws URISyntaxException, IOException, InterruptedException {
//1.创建配置信息
//F2可以快速的定位错误
Configuration conf = new Configuration();
//2.设置部分参数
conf.set("dfs.replication","2");
//3.找到HDFS的地址
FileSystem fileSystem = FileSystem.get(new URI("hdfs://bigdata111:9000"), conf, "root");
//4.上传本地Windows文件的路径
Path src = new Path("D:\\data\\demo1.txt");
//Path src = new Path("D:\\tools\\null\\null.sys");
//Path src = new Path("D:\\tools\\Linux所用Jar包\\hadoop-2.7.2.rar");
//5.要上传到HDFS的路径
Path dst = new Path("hdfs://bigdata111:9000/");
//6.以拷贝的方式上传从src到dst
fileSystem.copyFromLocalFile(src,dst);
//7.关闭
fileSystem.close();
System.out.print("Ok,上传完成了");
}
@Test
public void getFileFromHDFS() throws URISyntaxException, IOException, InterruptedException {
//1.获取配置
Configuration conf = new Configuration();
//2.获取hdfs连接
FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000/"),conf,"root");
//3.文件下载
// Path dst = new Path("D:\\tools\\demoFile\\null.sys");
// Path src = new Path("hdfs://bigdata111:9000/null.sys");
Path dst = new Path("D:\\tools\\demoFile\\hadoop-2.7.2.rar");
Path src = new Path("hdfs://bigdata111:9000/hadoop-2.7.2.rar");
fs.copyToLocalFile(src,dst);
fs.close();
System.out.print("OK,下载完成");
}
上传文件到HDFS的时候报连接超时
解决办法,添加如下代码:
fileSystem.setTimes(dst,0,3000);
下载的时候,下载对应的目录回多余crc文件(目前还不知道原因,求大神指点):