Hadoop系列——HDFS常用和命令,Java API客户端day3-1
HDFS 命令官方文档常用命令创建文件夹查看内容上传文件不删除本地文件上传文件并删除本地查看HDFS文件内容下载文件到本地下载多个文件并合并为一个文件追加数据到文件中查看HDFS磁盘空间查看HDFS文件使用的空间量移动文件复制文件修改HDFS文件副本个数
Java API客户端客户端核心类QuickStart构建工程加入依赖查询core-site.xml文件Java开启连接和关闭连接到Hadoop
连接到HADOOP关闭连接创建文件夹上传文件下载文件
HDFS 命令
官方文档
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
常用命令
创建文件夹
hadoop fs -mkdir [-p] 路径
-p:表示递归
查看内容
hadoop fs -ls [-h] [-R] 路径
-R:递归 -h:详细,以人能看懂的方式展现
上传文件不删除本地文件
hadoop fs -put [-f] [-p] 需要上传的文件 上传的位置
-f:覆盖原文件 -p:保留访问和修改时间,所有权,权限信息
上传文件并删除本地
hadoop fs -moveFromLocal 需要上传的文件 上传的位置
查看HDFS文件内容
hadoop fs -cat 文件路径
hadoop fs -head 文件路径
hadoop fs -tail [-f] 文件路径
-f:动态显示文件追加的内容
下载文件到本地
hadoop fs -get [-f] [-p] 需要下载的文件路径 要下载到的路径
-f:覆盖文件 -p:保留访问时间、修改时间、所有权和权限
下载多个文件并合并为一个文件
hadoop fs -getmerge [-nl] 需要下载的文件路径 要下载到的路径
-nl :表示每个文件末尾添加换行符
追加数据到文件中
hadoop fs -appendToFile 要追加的文件 要追加的目标文件
查看HDFS磁盘空间
hadoop fs -df -h
查看HDFS文件使用的空间量
hadoop fs -du -s -h 文件路径
-s:表示显示指定路径文件长度的汇总摘要
移动文件
hadoop fs -mv 需要移动的文件 移动到的路径
复制文件
hadoop fs -cp [-f] 需要复制的文件 复制到的路径
-f:强制覆盖
修改HDFS文件副本个数
hadoop fs -setrep [-R] [-w] 文件副本个数 需要修改的文件
-R:递归 -w:客户端是否等待副本修改完毕
Java API客户端
HDFS在生产应用中主要是Java客户端的开发,其核心步骤是从HDFS提供的API中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件。
客户端核心类
Configuration配置对象类,用于加载或设置参数属性FileSystem文件系统对象基类。针对不同文件系统有不同具体实现。该类封装了文件系统的相关操作方法。
QuickStart
构建工程加入依赖
查询core-site.xml文件
我的文件位置在:/export/server/hadoop-3.3.4/etc/hadoop 我们要关注的是配置的name和value 后面我们要将其设置到配置连接中
conf.set("fs.defaultFS","hdfs://node1.syf.cn:8020");
当然这个地方你得注意如果没有配置映射 我们就应该写成
conf.set("fs.defaultFS","hdfs://你的Hadoop主机的IP地址:8020");
Java开启连接和关闭连接到Hadoop
@SpringBootTest
class Code1ApplicationTests {
private static Configuration conf = null;
private static FileSystem fileSystem = null;
/**
* 开启连接
* @throws IOException
*/
@Test
void connectTest() throws IOException {
//创建配置对象实例
conf = new Configuration();
//设置文件系统是HDFS并指定HDFS操作地址,查看core-site.xml
conf.set("fs.defaultFS","hdfs://node1.syf.cn:8020");
//创建FileSystem对象实例
fileSystem = FileSystem.get(conf);
}
/**
* 关闭连接
* @throws IOException
*/
public void close() throws IOException {
fileSystem.close();
}
}
连接到HADOOP
首先设置身份,配置对象实例设置HDFS相关属性,然后使用FileSystem的get()方法
private static Configuration conf = null;
private static FileSystem fileSystem = null;
/**
* 开启连接
* @throws IOException
*/
@Test
void connectTest() throws IOException {
//设置身份获取权限访问
System.setProperty("HADOOP_USER_NAME","root");
//创建配置对象实例
conf = new Configuration();
//设置文件系统是HDFS并指定HDFS操作地址,查看core-site.xml
conf.set("fs.defaultFS","hdfs://192.168.31.103:8020");
//创建FileSystem对象实例
fileSystem = FileSystem.get(conf);
}
关闭连接
使用FileSystem的close()方法
private static Configuration conf = null;
private static FileSystem fileSystem = null;
/**
* 关闭连接
* @throws IOException
*/
@Test
public void close() throws IOException {
if (fileSystem!=null){
fileSystem.close();
}
}
创建文件夹
使用FileSystem的mkdirs()方法
private static Configuration conf = null;
private static FileSystem fileSystem = null;
/**
* 创建文件夹
*/
@Test
public void makeDir() throws IOException {
//连接到Hadoop
connectTest();
//判断文件夹是否存在
if (!fileSystem.exists(new Path("/test1"))){
//不存在就创建
fileSystem.mkdirs(new Path("/test1"));
}
}
上传文件
使用FileSystem的copyFromLocalFile()方法
private static Configuration conf = null;
private static FileSystem fileSystem = null;
/**
* 上传文件
*/
@Test
public void uploadFile() throws IOException {
connectTest();
fileSystem.copyFromLocalFile(new Path("C:\\Users\\Syf200208161018\\Desktop\\baidu.json"), new Path("/test1"));
}
下载文件
使用FileSystem的copyToLocalFile()方法
/**
* 下载文件
* @throws IOException
*/
@Test
public void downLoadFile() throws IOException {
connectTest();
//hadoop位置
final Path dst = new Path("/test1/baidu.json");
//本地位置
final Path src = new Path("C:\\Users\\Syf200208161018\\Desktop");
fileSystem.copyFromLocalFile(src,dst);
}
相关链接
发表评论