常用HDFS操作

本文介绍了HDFS的基本操作,包括上传和下载文件,查看文件信息,列出目录内容,以及文件和目录的创建、删除、移动等。通过shell命令,用户可以轻松追加内容、修改权限,并在需要时进行安全的删除和移动操作。
  • 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;
    在这里插入图片描述
//假设  /user/hadoop/input路径已存在 如没存在 在命令行输入 hadoop fs -mkdir -p /user/hadoop/input
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
String localFileName = "/home/hadoop/myfile.txt";
String remoteFileName = "/user/hadoop/input/myfile.txt";
Path localFilePath = new Path(localFileName);
Path remoteFilePath = new Path(remoteFileName);
FileSystem fs = FileSystem.get(conf);
		
if(!fs.exists(remoteFilePath)) {   ////远程文件不存在
		System.out.println("文件未在远程服务器存在");
		fs.copyFromLocalFile(localFilePath, remoteFilePath);
		System.out.println("文件已上传到服务器");
}else {   //远程文件已存在
		System.out.println("文件已在远程服务器存在,请选择下一步动作:1 覆盖 ;2  添加到文件末尾 ");
		int choice = 0;
		Scanner input  = new Scanner(System.in);
		choice = input.nextInt();
		switch(choice) {
		case 1:fs.copyFr
### 常见HDFS操作教程 #### 创建和管理文件夹 为了有效地管理和组织数据,在HDFS中创建新的目录是一项基本技能。通过`hdfs dfs -mkdir`命令可以在指定路径下创建新目录[^1]。 ```bash hdfs dfs -mkdir /user/data/new_directory ``` 此命令将在/user/data路径下创建名为new_directory的新目录。 #### 文件HDFSHDFS本地文件可以通过`copyFromLocalFile`方法实现,该过程允许用户将本地系统的文件输到HDFS环境之中[^3]。 ```java @Test public void testPut() throws IOException { fs.copyFromLocalFile(false, false, new Path("/local/path/to/file"), new Path("hdfs://namenode:port/remote/path")); } ``` 上述Java代码片段展示了如何利用API接口完成文件从本地到HDFS的迁移。 #### 下载文件HDFS 当需要获取存储于HDFS上的资源时,可采用`get`指令来下载目标文件并保存至本地磁盘上。 ```bash hdfs dfs -get hdfs://namenode:port/remote/path/localfile /local/path/ ``` 这条命令会把位于HDFS中的文件复制到用户的本地计算机相应位置。 #### 列出目录内容 要查看特定目录内的所有条目及其详情,可以运用`ls`命令显示当前目录结构及权限设置等信息。 ```bash hdfs dfs -ls / ``` 这将列举根目录(/)下的全部子项连同它们各自的属性一起呈现出来。 #### 修改文件名称或移动文件 对于已经存在HDFS里的对象而言,如果想要更改其名字或是将其转移至另一处,则需调用`mv`命令来进行处理。 ```bash hdfs dfs -mv /old/location /new/location ``` 这样就可以轻松地改变现有项目的位置而不必担心丢失任何关联的信息。 #### 移除单个文件或多组匹配模式的文件 假如决定不再保留某些资料,那么就应当考虑使用`rm`语句按需清理不必要的记录;同时支持通配符(*)以批量清除符合条件的一系列文档[^4]。 ```bash hdfs dfs -rm /path/to/remove/* ``` 以上命令将会移除指定路径下所有的文件而不会影响其他级别的层次关系。 #### 清理整个目录树 最后,若是要彻底清空某个完整的分支节点(即删除一个非空目录),则应该借助带有选项-R(递归)标志位的`rmdir`命令。 ```bash hdfs dfs -rm -R /directory/to/delete ``` 这样做能够一次性消除选定范围内部的一切元素直至最底层叶节点为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值