上传本地文件到HDFS

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

开发环境:

选项 参数
虚拟操作系统 Centos 6.8
集成开发环境 Eclipse Mars
Hadoop version 1.0.3伪分布式
JDK 1.7.0_80
虚拟机 Virtualbox


程序目录结构:

上传本地文件到HDFS_第1张图片

其中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());
        }
    }

}

运行结果

上传本地文件到HDFS_第2张图片

注意:

hadoop核心配置文件需要放在当前工程目录的conf文件夹下,否则可能找不到fs.default.name的值,也可采用源代码中屏蔽掉的代码获取FileSystem类的对象。

你可能感兴趣的:(hadoop)