Hadoop Java 程序2:复制本地文件(包括目录)到 HDFS

按:本文的程序,不但能复制文件,也能复制目录。

pom.xml 和《Hadoop Java 程序1:复制本地文件到 HDFS》相同,代码更简单,如下:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.net.URI;
public class DirectoryCopyWithProgress {
    public static void main(String[] args) throws Exception{
        String localSrc = args[0];
        String dst = args[1];
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(dst), conf);
        fs.copyFromLocalFile(false,true, new Path(localSrc), new Path(dst));
    }
}

设置 classpath:

export HADOOP_CLASSPATH=/home/hadoop/sandbox

将编译后的 class 文件复制 namenode 的 /home/hadoop/sandbox 目录中,执行:

$ hadoop DirectoryCopyWithProgress testdata/ /

这条命令的完整形式是:

$ hadoop DirectoryCopyWithProgress testdata/ hdfs://192.168.1.150:9000/

以上指令用到的测试数据 testdata 目录及其中的数据,请事先准备。

验证,去 http://namenode_ip:50070/explorer.html 查看,在 / 已经有相关数据。