这里使用的是CDH 5.13.0分布式系统
在网上搜集了很久,找到一套能上传文件的java代码
package com.data.sysatem.crawler;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
public class Hdfs {
public static void main(String[] args) {
try {
System.setProperty("HADOOP_USER_NAME", "hadoop");//这里是分布式环境的用户名 注意: 这个参数必填,不然会报错没有权限
String target = "hdfs://hadoop3:8020/usr/local/name.xml";//需要上传的地址,这里需要注意的是单机版的使用9000端口,分布式系统需要使用8020端口,这个是hadoop提供的,后面的/usr/local是hdfs系统里面的路径,不是linux下面的那个路径不要混淆了
Configuration config = new Configuration();
FileSystem fs = FileSystem.get(URI.create(target), config);
fs.copyFromLocalFile(new Path