摘要:主要通过idea ,调用hadoop的API,实现hadoop的基本功能。
首先添加hadoop吧用户到环境变量。
一直确定到完成,这时候maven会自动创建示例代码
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 08:18 min
[INFO] Finished at: 2020-07-28T12:12:40+08:00
[INFO] Final Memory: 17M/320M
[INFO] ------------------------------------------------------------------------
表示创建成功!
下面就可以写自己的程序了
导入hdfs依赖
maven的依赖可以在https://mvnrepository.com/进行选择,也可以直接使用下面的,但是注意,笔者的Hadoop版本是2.7.3
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency>
等一段时间后,就可以在右侧的Maven选项卡中看到我们导入的包了
然后在main下新建一个resources目录,并将其设置为Resource Root
然后使用xftp,将集群中的core-site 和hdfs-site 文件拷贝到resources文件夹中
在 main文件夹下的hdfs类中,创建base-hdfs类,自己初始化一下
package com.example.hdfs;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class base_hdfs {
@Before//进行单元测试
public void connection(){}
@Test
public void mkdir(){}
@After
public void close(){}
}
添加代码内容
package com.example.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.*;
public class base_hdfs {
Configuration conf=null;
FileSystem fs=null;
@Before
public void connection() throws IOException {
conf=new Configuration(true);
fs=FileSystem.get(conf);
}
@Test
public void mkdir() throws IOException {
Path dir = new Path("/data/test1");
System.out.println("执行创建文件夹目录");
if(fs.exists(dir)){
System.out.println("目录已存在!");
fs.delete(dir,true);
}
fs.mkdirs(dir);
System.out.println("创建成功");
}
@Test
public void delete_dir() throws IOException {
Path dir = new Path("/data/test1");
System.out.println("执行删除程序");
if(fs.exists(dir)){
fs.delete(dir,true);
System.out.println("删除成功!");
}else{
System.out.println("地址不存在");
}
}
@Test
public void upload() throws IOException {
System.out.println("执行上传程序");
BufferedInputStream input = new BufferedInputStream(new FileInputStream(new File("./data/book.docx")));
Path outfile= new Path("/data/test/out.txt");
FSDataOutputStream output=fs.create(outfile);
IOUtils.copyBytes(input,output,conf,true);//链接输入流和输出流文件
}
@After
public void close() throws IOException {
fs.close();
}
}
依次测试每个功能即可。