• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Hadoop教程(四)HDFS文件系统JavaAPI接口

Hadoop 蜷缩的蜗牛 9个月前 (02-01) 273次浏览 已收录

 

 

Hadoop教程()HDFS文件系统JavaAPI接口

 



HDFS是存取数据的分布式文件系统,HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似的命令行工具。另一种是JavaAPI,即利用HadoopJava库,采用编程的方式操作HDFS的文件。

 

1 软件下载及安装

 

1.1 相关下载

1、JDK下载Java是运行在JVM虚拟机
(Java Virtual Machine)
之上,因此它的运行需要JDK环境的支持,建议下载Oracle官方发布的JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html


2、Eclipse下载:开发Java程序需要强大的Java集成开发环境(IDE)支持,目前最新版本MARS-1版,下载地址:http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/mars/1/eclipse-jee-mars-1-win32-x86_64.zip

       

3、Maven下载:Maven是一个项目管理和构建自动化工具。使用Maven管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。而Maven本身还支持多种插件,可以方便更灵活的控制项目。下载地址:http://maven.apache.org/download.html


1.2 软件安装

        JDK安装位置:D:\software\Java\jdk1.8

        Eclipse安装位置:D:\software\Eclipse\eclipse_jee

        Maven安装位置:D:\software\Maven

1.3 环境配置

1、Java环境变量http://jingyan.baidu.com/article/c85b7a6414f2ee003bac95d5.html

2、Maven环境变量http://jingyan.baidu.com/article/cb5d61050b8ee7005d2fe04e.html

3、Maven修改默认仓库配置

Maven的安装目录下新建repository做为默认仓库:<localRepository>D:\software\Maven\repository</localRepository>

找到修改D:\software\Maven\conf\settings.xml文件


4、Eclipse配置Maven


启动Eclipse后,找到Window
-> Preference-> Maven -> Installation -> Add
按钮,设置安装目录:

 


设置setting.xml,找到Window
-> Preference-> Maven -> User Settings
,设置settings.xml文件:

 

 

1.4 创建项目

打开Eclipse,创建Maven项目,依次点击File–>New–>Maven
Project ,
请选中Createa simple project(skip archetype selection),之后点击Next


填写Group
id
artifact id
Version
默认,Packaging默认为jar,NameDescription填,其他的不填,之后点击Finish

     

 

1.5 Package 视图

找到Package视图:Window
-> Show View-> Other
,搜索Package Explorer


1.6 配置pom.xml文件

编写pom.xml文件引入依赖的Jar包:

	<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
		<modelVersion>4.0.0</modelVersion>
		<!-- 定义组织标识 Id -->
		<groupId>com.hadoop</groupId>
		<!-- 定义项目名称 Id -->
		<artifactId>hdfs</artifactId>
		<!-- 版本号 -->
		<version>0.0.1-SNAPSHOT</version>
	
		<!-- 依赖关系:依赖关系列表 -->
		<dependencies>
			<!-- 引入 hadoop-common Jar 包 -->
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-common</artifactId>
				<version>2.7.1</version>
			</dependency>
	
			<!-- 引入 hadoop-hdfs Jar 包 -->
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-hdfs</artifactId>
				<version>2.7.1</version>
			</dependency>
		</dependencies>
	</project>

2 Java
API
操作

2.1 文件下载

Java代码实现:HDFS文件系统复制文件到本地。

代码实现:

	import java.io.FileOutputStream;
	import java.io.IOException;
	import java.io.InputStream;
	import java.io.OutputStream;
	import java.net.URI;
	import java.net.URISyntaxException;
	
	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.fs.FileSystem;
	import org.apache.hadoop.fs.Path;
	import org.apache.hadoop.io.IOUtils;
	
	public class OpenDemo {
		public static void main(String[] args) throws IOException, URISyntaxException {
			// 获得 FileSystem 对象
			FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration());
			// 调用 open 方法进行下载,参数 HDFS 路径
			InputStream in = fileSystem.open(new Path("/hadoop/LICENSE.txt"));
			// 创建输出流,参数指定文件输出地址
			OutputStream out = new FileOutputStream("F://hadoop/LICENSE.txt");
			// 使用 Hadoop 提供的 IOUtils,将 in 的内容 copy 到 out,设置 buffSize 大小,是否关闭流设置 true
			IOUtils.copyBytes(in, out, 4096, true);
		}
	}


2.2 上传文件

Java代码实现:从本地文件上传到HDFS文件服务器上。

代码实现:

	import java.io.FileInputStream;
	import java.io.IOException;
	import java.io.InputStream;
	import java.io.OutputStream;
	import java.net.URI;
	import java.net.URISyntaxException;
	
	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.fs.FileSystem;
	import org.apache.hadoop.fs.Path;
	import org.apache.hadoop.io.IOUtils;
	
	public class UpLoadDemo {
		public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
			// 获得 FileSystem 对象,指定使用 root 用户上传
			FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
			// 创建输入流,参数指定文件输出地址
			InputStream in = new FileInputStream("C:\\Windows\\System32\\drivers\\etc\\hosts");
			// 调用 create 方法指定文件上传,参数 HDFS 上传路径
			OutputStream out = fileSystem.create(new Path("/hadoop/hosts"));
			// 使用 Hadoop 提供的 IOUtils,将 in 的内容 copy 到 out,设置 buffSize 大小,是否关闭流设置 true
			IOUtils.copyBytes(in, out, 4096, true);
		}
	}


2.3 删除文件

Java代码实现:删除HDFS文件服务器上的文件。

代码实现:

	import java.io.IOException;
	import java.net.URI;
	import java.net.URISyntaxException;
	
	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.fs.FileSystem;
	import org.apache.hadoop.fs.Path;
	
	public class DeleteDemo {
		public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
			// 获得 FileSystem 对象
			FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
			// 调用 delete 方法,删除指定的文件。参数:false:表示是否递归删除
			boolean flag = fileSystem.delete(new Path("/hadoop/hosts"), false);
			// 执行结果:true
			System.out.println(flag);
		}
	}


2.4 创建文件

Java代码实理:在HDFS文件服务器上创建文件夹。

代码实现:

	import java.io.IOException;
	import java.net.URI;
	import java.net.URISyntaxException;
	
	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.fs.FileSystem;
	import org.apache.hadoop.fs.Path;
	
	public class MkDirDemo {
		public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
			// 获得 FileSystem 对象
			FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
			// 调用 mkdirs 方法,在 HDFS 文件服务器上创建文件夹。
			boolean flag = fileSystem.mkdirs(new Path("/hadoop/dir3"));
			// 执行结果:true
			System.out.println(flag);
		}
	}


 


                –以上为《Hadoop 教程(四)HDFS 文件系统 JavaAPI 接口》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)


本文转载自
Hadoop 教程(四)HDFS 文件系统 JavaAPI 接口


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明Hadoop 教程(四)HDFS 文件系统 JavaAPI 接口
喜欢 (0)
[]
分享 (0)