#HDFS Java API操作—上传文件

##【实验目的】
1)熟悉HDFS java编程—上传文件
##【实验原理】
通过hadoop 提供的java api对hdfs进行操作。
##【实验环境】
本次环境是:centos6.5 + jdk1.7 + hadoop2.4.1(64位)+ecplise
计算机名称(hostname):host01,对应ip地址为 192.168.0.201 【以实际情况而定】
##【实验步骤】
###一、启动Hadoop服务
1.1 查看服务状态。在命令终端,执行命令“jps”(查看hadoop服务是否已经启动,如未启动,启动服务)。如图1所示

1.2 启动hadoop服务。启动hadoop服务可以通过一次性启动hadoop所有服务,执行命令“start-all.sh”,如图2所示。
还可以通过单独启动(查看服务启动共有6项,如果缺少请执行stop-all.sh关闭,重新启动) 1.3 通过`touch /simple/HelloWorld.txt`在simple目录下创建HelloWorld.txt文件。如图3所示
###二、创建java项目包
2.1 打开ecplise开发工具,点击File选择“New”->“Java Project”新建名为“Hadoop”的java项目,点击“Hadoop”项目右键,选择“New” –>“Package”;如图4所示
2.2 输入名称“com.hdfs”点击完成。如图5所示
2.3 新建java 类。选中包名并右键点击,选择“New”->“Class”。如图6所示
2.4 在name 项输入“ HdfsTest”类名称,点击Finish完成。如图7所示
2.5 右击创建的项目选择“New”->“Folder”目录下创建文件夹libs。

2.6 拷贝桌面实验资料下lib文件下的所有hadoop jar包到libs文件夹下。

2.7 选中libs下的所有jar包,右键点击,然后选择“add to build path”即可把所有jar包添加到path环境中。


###三、编写程序
```java
package com.hdfs;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class HdfsTest {
	// 获取HADOOP FileSystem对象
	private FileSystem fs = null;
	private List<String> hdfsPathsLists;
	/**
	 * 初始化环境变量
	 */
	@Before
	public void init() throws Exception {
		/*
		 * new URI("hdfs://localhost:9000"):连接HADOOP连接 RUL new
		 * Configuration():使用HADOOP 默认配置 
		 * "root":登录用户
		 */
		Configuration con = new Configuration();
		con.setBoolean("dfs.support.append", true);
		fs = FileSystem.get(new URI("hdfs://localhost:9000"),con, "root");
	}
	/**
	 * 将本地文件上传到HDFS上
	 */
	 //注意,@Test此代表该方法为Junit测试,否则无法Junit Test运行
	 @Test
	public void testUploadFile()throws Exception {
String src="/simple/HelloWorld.txt";
		String hdfsDst= "/";
		fs.copyFromLocalFile(new Path(src), new Path(hdfsDst));
        System.out.println("upload sucess");
	}
}
```
###四、程序运行
4.1 在项目栏目最右侧,选中要运行的方法“testUploadFile”—>点击右键—>选择“run as”—>选择“Junit Test”,等待执行结果。如图8所示
 4.2 显示运行结果。如图9所示
###五、程序结果验证
 5.1 通过hadoop shell 命令进行验证 。如图10所示

 

 

#HDFS Java API操作—下载文件
##【实验目的】
1)熟悉HDFS java编程—下载文件
##【实验原理】
通过hadoop 提供的java api对hdfs进行操作。
##【实验环境】
本次环境是:centos6.5 + jdk1.7 + hadoop2.4.1(64位)+ecplise
计算机名称(hostname):host01,对应ip地址为 192.168.0.201 【以实际情况而定】
##【实验步骤】
###一、启动Hadoop服务
1.1 查看服务状态。在命令终端,执行命令“jps”(查看hadoop服务是否已经启动,如未启动,启动服务)。如图1所示
1.2 启动hadoop服务。启动hadoop服务可以通过一次性启动hadoop所有服务,执行命令“start-all.sh”,如图2所示。还可以通过单独启动(查看服务启动共有6项,如果缺少请执行stop-all.sh关闭,重新启动)

1.3 通过`hdfs dfs -touchz /java`在HDFS上创建文件。如图3所示。
###二、创建java项目包
2.1 打开ecplise开发工具,点击File选择“New”->“Java Project”新建名为“Hadoop”的java项目,点击“Hadoop”项目右键,选择“New” –>“Package”;如图4所示 

2.2 输入名称“com.hdfs”点击完成。如图5所示

2.3 新建java 类。选中包名并邮件点击,选择“New”->“Class”。如图6所示

2.4 在name 项输入“ HdfsTest”类名称,点击Finish完成。如图7所示

2.5 右击创建的项目选择“New”->“Folder”目录下创建文件夹libs。

2.6 拷贝桌面实验资料下lib文件下的所有hadoop jar包到libs文件夹下。

2.7 选中libs下的所有jar包,右键点击,然后选择“add to build path”即可把所有jar包添加到path环境中。


###三、编写程序

```java
package com.hdfs;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;
public class HdfsTest {
	// 获取HADOOP FileSystem对象
	private FileSystem fs = null;
	/**
	 * 初始化环境变量
	 */
	@Before
	public void init() throws Exception {
		/*
		 * new URI("hdfs://localhost:9000"):连接HADOOP连接 RUL new
		 * Configuration():使用HADOOP 默认配置 
		 * "root":登录用户
		 */
		fs = FileSystem.get(new URI("hdfs://localhost:9000"),new Configuration(), "root");
	}
	/**
	 * 文件下载到本地
	 */
	 //注意,@Test此代表该方法为Junit测试,否则无法Junit Test运行
	@Test
	public void testDownloadFile() throws Exception{
		String src= "/java";
		String hdfsDst="/root";
		fs.copyToLocalFile(new Path(src), new Path(hdfsDst));
System.out.println("downLoad sucess");
	}
}
```

###四、程序运行
4.1 在项目栏目最右侧,选中要运行的方法“testDownloadFile”—>点击右键—>选择“run as”—>选择“Junit Test”,等待执行结果。如图8所示
 4.2 显示运行结果。如图9所示

###五、程序结果验证
 5.1 通过hadoop shell 命令进行验证。如图10所示
 posted on 2020-08-31 15:28  小希米七  阅读(253)  评论(0)    收藏  举报