hadoop3.x HDFS java上传文件(设置副本参数)(废弃) 作者:马育民 • 2021-02-13 11:01 • 阅读:10277 # 介绍 需要使用 `9866` 端口号,用于 **datanode 数据传输**,在 `hdfs-site.xml` 文件中配置 在 hadoop 服务器上,执行下面命令可查看该端口号: ``` hdfs dfsadmin -report ``` 执行结果如下: [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213111621.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213111621.png) ### 虚拟机 nat 网络 端口转发 如果使用 virtualbox nat 网络,需要配置 `9866` 端口转发 [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213112031.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213112031.png) # 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查看结果 [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213112324.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213112324.png) # 设置参数 比如:设置文件的副本数量,如果不设置,那么使用的是 hadoop 服务器 `hdfs-site.xml` 中的配置 如果设置:有以下2种方式 - 本工程创建 hdfs-site.xml 配置文件(优先级:低) - java代码设置参数(优先级:高) ### hdfs-site.xml(优先级:低) 在 `resources` 目录下创建 `hdfs-site.xml`,工程目录结构如下: [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213120834.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213120834.png) 内容如下: ``` dfs.replication 2 ``` 表示上传的文件有2个副本 执行java代码 [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213120020.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210213120020.png) ### 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(); } ``` 原文出处:http://malaoshi.top/show_1IXaFCx5OTQ.html