一、实验目标
通过Java API来操作HDFS文件系统HDFS,相关的操作有:文件上传、文件下载、新建文件夹、查看文件、删除文件。
二、条件准备
1.Linux下安装好hadoop,这里使用hadoop2.7.3
2.window解压hadoop2.7.3的包
2.Windows下安装好jdk1.8
3.Windows下安装好IDEA,这里使用IDEA2022
4.Windows下安装好maven,这里使用Maven3.6.3
5.在win系统下不配置hadoop环境,直接运行代码会报错,显示缺少winutils.exe 和 hadoop.dll 两个文件. (文件位于个人主页&(13条消息) Hadoop系统应用之java-API对HDFS的操作实验缺少的两个文件-桌面系统文档类资源-CSDN文库)
6.将hadoop-2.7.3文件夹拷贝到一个没有中文的路径中;
7.把winutils.exe 和 hadoop.dll 两个文件放到hadoop-2.7.3文件夹中bin目录下
8.在windows系统,配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中.
9.把hadoop-2.7.3文件夹中bin目录下的hadoop.dll 放到系统盘: C:Windows \System32目录下
三、用idea创建对应的Java项目
1.新建一个Maven工程
2.在pom.xml添加相关依赖(ctr+s保存后,会下载对应的依赖)
代码如下
<dependencies>
<!-- Hadoop所需依赖包 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency>
<!-- junit测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
</project>
3.右下角下载依赖
4.查看依赖和外部库
四、初始化
1.创建一个java类,添加对应代码
public class JavaAPI {
FileSystem hdfs = null;
public JavaAPI() {
}
@Before
public void init() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://yangjian00:9000");
System.setProperty("HADOOP_USER_NAME", "root");
this.hdfs = FileSystem.get(conf);
}
@After
public void close() throws IOException {
this.hdfs.close();
}
}
ps:上面代码中的参数**"hdfs://yangjian00:9000"**是hadoop配置文件中core-site.xml的配置信息,
五、HDFS代码操作
1.上传文件到HDFS文件系统
(1)我在D盘的HDFS文件夹下面创建了个test.txt文本
(2)写入代码
/*
上传测试
*/
@Test
public void testUploadFileToHDFS() throws IOException {
// 待上传的文件路径(windows)
Path src = new Path("D:\\Hadoop\\HDFS");
// 上传之后存放的路径(HDFS)
Path dst = new Path("/TEXT");
// 上传
hdfs.copyFromLocalFile(src,dst);
System.out.println("上传成功");
}
(3)在centos的Hadoop中查看test.txt文件(上传成功)
2.从HDFS下载文件到本地
(1)写入下载代码
/*
下载测试
*/
@Test
public void testDownFileToLocal() throws IOException {
// 待下载的路径(HDFS)
Path src = new Path("/TEXT.txt");
// 下载成功之后存放的路径(windows)
Path dst = new Path("D:\\Hadoop\\HDFS\\TEXT1");
// 下载
hdfs.copyToLocalFile(false,src,dst,true);
System.out.println("下载成功");
(2)从浏览器中下载查看
3.在HDFS中创建目录
(1)写入代码
/*
创建目录测试
*/
@Test
public void testMkdirFile() throws IOException {
// 待创建目录路径
Path src = new Path("/YYDS");
// 创建目录
hdfs.mkdirs(src);
System.out.println("创建成功");
}
(2)从浏览器中下载查看
4.从新命名测试
(1)写入代码
/*
重命名测试
*/
@Test
public void testRenameFile() throws IOException {
// 重命名之前的名字
Path src = new Path("/YYDS");
// 重命名之后的名字
Path dst = new Path("/HDFS2");
// 重命名
hdfs.rename(src,dst);
System.out.println("重命名成功");
}
(2)从浏览器中下载查看
5.删除测试
/*
删除测试
*/
@Test
public void testRM() throws IOException {
hdfs.delete(new Path("/HDFS"),true);
hdfs.delete(new Path("/HDFS1"), true);
hdfs.delete(new Path("/tmp"), true);
}
版权归原作者 -牧心- 所有, 如有侵权,请联系我们删除。