一:创建maven项目
导入maven
org.apache.hadoop
hadoop-hdfs
2.7.6
org.apache.hadoop
hadoop-common
2.7.6
org.apache.hadoop
hadoop-client
2.7.6
junit
junit
4.13.2
junit是测试块的包
其他三个是hdfs连接需要的包
二:winuti处理(如果有就不需要处理)
1.解压hadoop-2.6.1到D盘
2.配置环境变量
配置变量的(https://jingyan.baidu.com/article/47a29f24610740c0142399ea.html)
二:相关操作
1:目录操作
相关操作:1:mkdirs 创建目录。
2:delete 删除文件或目录。
3:listStatus 列出目录的内容。
4:getFileStatus 显示文件系统的目录和文件的元数据信息。
5:getFileBlockLocations 显示文件存储位置
(1:创建一个目录
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;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class Test1 {
FileSystem fs;
@Before
public void conn() throws URISyntaxException, IOException {
//hadoop配置文件,自动获取hadoop的hdfs配置文件
Configuration conf = new Configuration();
conf.set("dfs.replication", "1");//设置副本数为一
//创建url 9000是端口号配置文件中有,master是主机名,如果没有配置映射可以是ip地址
URI uri = new URI("hdfs://master:9000");
//等同于客户端
fs = FileSystem.get(uri, conf);
}
@Test
public void mkdir() throws IOException {
//创建一个Path对象传入想要创建hdfs的路径
Path path = new Path("/data1");
//判断是否存在要是存在就删除,以免报错
if(fs.exists(path)){
fs.delete(path);
}
//创建目录
fs.mkdirs(path);
}
}
可以通过web界面查看有没有创建成功(master:50070)
(2:获取获取文件列表
@Test
public void filestatus() throws IOException {
//获取根目录下的文件列表
FileStatus[] fileStatuses = fs.listStatus(new Path("/"));
//遍历 fileStatuses
for (FileStatus fileStatus : fileStatuses) {
System.out.println(fileStatus);
}
三:关于测试包
我用的junit测试,可以不用main方法需要运行哪个就运行哪个,每个@Test前面都有一个运行的一个@Test对应一个方法(函数),还有@Before,@After等。@Before是运行每个@Test之前都会运行,常用来做连接。@After相反是运行每个@Test之后都会运行常用在关闭连接的方法前面。
(原文链接:https://blog.csdn.net/weixin_50691399/article/details/121955946)
四:连接不上的问题
1.删除tmp
2.修改配置
修改namenode的地址为具体IP (之前写的localhost)
修改slaves文件,为具体IP
- 格式化hdfs
hadoop namenode –format
4.启动HDFS
start-dfs.sh
Original: https://www.cnblogs.com/komorebiZjh/p/16187322.html
Author: 搁浅的小鲸鱼
Title: 简单的使用java操作hdfs
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599473/
转载文章受原作者版权保护。转载请注明原作者出处!