您的位置:首页 > 运维架构

上传本地文件到HDFS

2016-09-21 10:09 267 查看
本文程序参考《实战Hadoop》【刘鹏 主编】,如有侵权立即删除,仅作记录以备后查。

开发环境:

选项参数
虚拟操作系统Centos 6.8
集成开发环境Eclipse Mars
Hadoop version1.0.3伪分布式
JDK1.7.0_80
虚拟机Virtualbox
程序目录结构:



其中src文件夹下的Hdoop包存放java源码,lib目录为相关依赖库,conf文件夹存放hadoop的核心配置文件,hadoop库是根据lib文件夹下的jar包创建的user library。

源代码:

package hadoop;

import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

//上传本地文件到HDFS
public class CopyFile {

public static void main(String[] args) throws IOException {
//获取配置文件信息
Configuration conf = new Configuration();
conf.addResource(new Path("conf/core-site.xml"));
//获取文件系统
//      String fileUri = "hdfs://192.168.1.122:9000/";
//      FileSystem hdfs = FileSystem.get(URI.create(fileUri),conf);
FileSystem hdfs = FileSystem.get(conf);
//文件名称
Path src = new Path("/root/install.log");
Path dst = new Path("/");
hdfs.copyFromLocalFile(src, dst);
System.out.println("Upload to " + conf.get("fs.default.name"));
FileStatus files[] = hdfs.listStatus(dst);
for(FileStatus file:files){
System.out.println(file.getPath());
}
}

}


运行结果



注意:

hadoop核心配置文件需要放在当前工程目录的conf文件夹下,否则可能找不到fs.default.name的值,也可采用源代码中屏蔽掉的代码获取FileSystem类的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop HDFS 文件上传