hadoop3.x HDFS java上传文件(设置副本参数)(废弃)

介绍

需要使用 9866 端口号,用于 datanode 数据传输,在 hdfs-site.xml 文件中配置

在 hadoop 服务器上,执行下面命令可查看该端口号:

hdfs dfsadmin -report

执行结果如下:

虚拟机 nat 网络 端口转发

如果使用 virtualbox nat 网络,需要配置 9866 端口转发

java 代码

@Test
public void copyFromLocalFile() throws Exception {

    //获取文件系统
    Configuration config = new Configuration();
    FileSystem fs = FileSystem.get(new URI("hdfs://localhost:9000"), config, "root");
    //上传文件,路径不存在,自动创建
    fs.copyFromLocalFile(new Path("d:/data.txt"), new Path("/test/data.txt"));

    System.out.println("ok");

    //关闭
    fs.close();

}

web查看结果

设置参数

比如:设置文件的副本数量,如果不设置,那么使用的是 hadoop 服务器 hdfs-site.xml 中的配置

如果设置:有以下2种方式

  • 本工程创建 hdfs-site.xml 配置文件(优先级:低)
  • java代码设置参数(优先级:高)

hdfs-site.xml(优先级:低)

在 resources 目录下创建 hdfs-site.xml,工程目录结构如下:

内容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

表示上传的文件有2个副本

执行java代码

java代码设置参数(优先级:高)

@Test
public void copyFromLocalFile() throws Exception {

    //获取文件系统
    Configuration config = new Configuration();
    //==================设置文件副本数量=================
    config.set("dfs.replication", "2");

    FileSystem fs = FileSystem.get(new URI("hdfs://localhost:9000"), config, "root");
    //上传文件
    fs.copyFromLocalFile(new Path("d:/data.txt"), new Path("/test/data.txt"));

    System.out.println("ok");

    //关闭资源
    fs.close();

}

原文出处:/show_1IXaFCx5OTQ.html