大数据之使用Java操作Hadoop的上传下载

准备工作

windows下eclipse的安装与配置

在上次Hadoop的介绍中,介绍了JDK的安装,在安装eclipse之前需要安装JDK,若未配置JDK中,可用参考如下链接
大数据底层生态之Hadoop

安装Eclipse

首先,去官网下载Eclipse安装包eclipse-inst-win64:https://www.eclipse.org/downloads/

运行安装包,选择Eclipse IDE for Java Developers,
大数据之使用Java操作Hadoop的上传下载_第1张图片
开始安装,过程可能较慢。

等待一段时间后即可完成Eclipse的安装

eclipse配置maven环境

进入Maven官网
http://maven.apache.org/download.cgi
选择最近的镜像,选择Maven压缩包apache-maven-3.6.0-bin.tar.gz开始下载

解压Maven压缩包apache-maven-3.6.0-bin.tar.gz,解压后的文件夹\apache-maven-3.6.0,将其考入自定义路径,如D:\eclipse\apache-maven-3.6.0

配置Maven的环境变量,Path添加Maven的\bin的安装路径,cmd命令行运行mvn -v,查看是否成功安装配置

成功界面显示如下
大数据之使用Java操作Hadoop的上传下载_第2张图片

配置Maven的installation和User Settings
【Preferences】→【Maven】→【Installations】配置Maven安装路径,【User Settings】配置settings.xml的路径

通过以下方式即可完成eclipse中Maven的配置
在这里插入图片描述

编写Java程序

项目结构如下图:
在这里插入图片描述

文件下载Java程序代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSDownload {

	private static InputStream input;
	private static OutputStream output;
	
	public static void main(String[] args) throws IOException {
		
		//设置root权限
		System.setProperty("HADOOP_USER_NAME", "root");
		//创建HDFS连接对象client
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
		FileSystem client=FileSystem.get(conf);
		
		output = new FileOutputStream("c:\\hdfs\\bbout.txt");
		//创建HDFS的输入流
		input=client.open((new Path("/bb.txt")));
		
		byte[] buffer= new byte[1024];
		int len=0;
		while ((len=input.read(buffer))!=-1) {
			
			
			output.write(buffer, 0, len);
			
		}
		
		
		output.flush();
		input.close();
		output.close();
		
		
		
		
	}
	
}

文件上传Java程序代码:



import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


public class HDFSUpload {

	private static InputStream input;
	private static OutputStream output;
	
	public static void main(String[] args) throws IOException {
		
		//设置root权限
		System.setProperty("HADOOP_USER_NAME", "root");
		//创建HDFS连接对象client
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
		conf.set("dfs.client.use.datanode.hostname", "true");
		FileSystem client = FileSystem.get(conf);
		
		/*//要上传的资源路径
		String src = "C:/Users/Desktop/bcdf.txt";
		//要上传的hdfs路径
		String hdfsDst = "/aadir";
		
		client.copyFromLocalFile(new Path(src), new Path(hdfsDst));
		
		
		System.out.println("Success");*/
		
		//创建HDFS的输入流
		input = new FileInputStream("D:\\xx编程\\bcdf.txt");
		//创建HDFS的输出流
		output = client.create(new Path("/aadir/about.txt"));
		//写文件到HDFS
		byte[] buffer = new byte[1024];
		int len=0;
		while ((len=input.read(buffer))!=-1) {
			
			output.write(buffer, 0, len);
			
		}
		
		//防止输出数据不完整
		output.flush();
		//使用工具类IOUtils上传或下载
		input.close();
		output.close();
		
		
	}
	
}

文件创建程序代码




import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSMKdir {

	public static void main(String[] args) throws IOException {
		
				//设置root权限
				System.setProperty("HADOOP_USER_NAME", "root");
				//创建HDFS连接对象client
				Configuration conf = new Configuration();
				conf.set("fs.defaultFS","hdfs://izwz97mvztltnke7bj93idz:9000");
				FileSystem client = FileSystem.get(conf);
				client.mkdirs(new Path("/aadir"));
				client.close();
				System.out.println("successfully!");
		
	}
	
}

文件是否存在程序代码:



import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSFilelfExist {

	
	public static void main(String[] args) throws IOException {
		
		//设置root权限
		System.setProperty("HADOOP_USER_NAME", "root");
		//创建HDFS连接对象client
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
		FileSystem client = FileSystem.get(conf);
		//声明对象文件
		String fileName="/bb.txt";
		if (client.exists(new Path(fileName))) {
			System.out.println("文件存在");
		}else {
			System.out.println("文件不存在");
		}
		
		
	}
	
}

通过以下命令可用查看到Hadoop的结果:

hdfs dfs -ls /  查看hdfs根目录下文件和目录
hdfs dfs -ls -R /      查看hdfs根目录下包括子目录在内的所有文件和目录
hdfs dfs -mkdir /aa/bb  在hdfs的/aa目录下新建/bb目录
hdfs dfs -rm -r /aa/bb   删除hdfs的/aa目录下的/bb目录
hdfs dfs -rm /aa/out.txt  删除hdfs的/aa目录下的out.txt文件

通过hdfs命令也可将文件上传

hdfs dfs -put /root/mk.txt /aa        把本地文件上传到hdfs 
hdfs dfs -copyFromLocal a.txt /          把本地文件上传到hdfs
hdfs dfs -get /bb.txt bbcopy.txt          从hdfs下载文件到本地
hdfs dfs -copyToLocal /bb.txt bbcopy.txt   从hdfs下载文件到本地

你可能感兴趣的:(大数据)