温馨提示×

HDFS支持哪些文件操作

小樊
42
2025-10-16 13:27:55
栏目: 编程语言

HDFS支持的文件操作
HDFS(Hadoop Distributed File System)作为分布式文件系统,提供了一套完整的文件操作命令与API,覆盖文件生命周期管理的核心环节,主要包括以下类型:

1. 文件/目录创建操作

  • 创建空文件:使用hadoop fs -touchz <HDFS路径>命令,可在HDFS中创建长度为0的空文件(若文件已存在,仅更新其修改时间)。
  • 创建目录:使用hadoop fs -mkdir <HDFS路径>创建单级目录;若需创建多级目录(如/a/b/c),需添加-p参数,避免父目录不存在时报错。
  • 上传本地文件创建:通过hadoop fs -put <本地路径> <HDFS目标路径>将本地文件上传至HDFS,自动在目标路径创建文件;若目标路径已存在同名文件,put命令会覆盖原文件。

2. 文件/目录读取操作

  • 查看文件内容:使用hadoop fs -cat <HDFS文件路径>直接在命令行输出文件内容,适用于小文件;大文件建议结合lessmore分页查看。
  • 下载文件到本地:通过hadoop fs -get <HDFS文件路径> <本地目标路径>将HDFS中的文件复制到本地文件系统,若本地目标路径已存在同名文件,会报错提示。
  • 批量下载合并文件:使用hadoop fs -getmerge <HDFS目录路径> <本地输出文件>将HDFS目录下的多个文件合并为一个文件下载到本地,保留原始文件顺序。
  • 读取文件末尾内容:通过hadoop fs -tail <HDFS文件路径>查看文件最后1KB内容,适用于实时日志监控等场景。

3. 文件/目录写入操作

  • 上传本地文件hadoop fs -put <本地路径> <HDFS目标路径>是最常用的写入方式,支持从本地向HDFS传输文件,可指定覆盖或跳过已存在文件。
  • 追加内容到文件:使用hadoop fs -appendToFile <本地文件路径> <HDFS目标文件路径>将本地文件内容追加到HDFS已有文件的末尾,适用于日志追加等场景。
  • 流式写入(API):通过Hadoop Java API的FileSystem.create()方法获取输出流,以流的形式写入数据(如FSDataOutputStream.write()),支持大文件分块写入,是程序化写入的核心方式。

4. 文件/目录删除操作

  • 删除文件:使用hadoop fs -rm <HDFS文件路径>删除指定文件,删除后文件不可恢复(除非启用回收站功能)。
  • 递归删除目录:删除非空目录需添加-r参数(如hadoop fs -rm -r <HDFS目录路径>),否则会报错“Directory is not empty”。
  • 强制/跳过回收站删除-f参数强制删除(不提示确认),-skipTrash参数跳过回收站直接永久删除(需谨慎使用,避免误删)。

5. 文件/目录移动与重命名

使用hadoop fs -mv <源路径> <目标路径>实现文件或目录的移动/重命名:

  • 同一HDFS集群内移动:将文件从一个目录移动到另一个目录(如hadoop fs -mv /dir1/file.txt /dir2/);
  • 重命名:源路径与目标路径在同一目录下时,可实现文件重命名(如hadoop fs -mv /dir/file.txt /dir/newfile.txt)。

6. 文件/目录权限与管理

  • 修改文件权限:使用hadoop fs -chmod <权限模式> <HDFS文件路径>修改文件权限(如hadoop fs -chmod 755 /file.txt,设置所有者可读可写可执行,组和其他用户可读可执行)。
  • 修改文件属主/属组hadoop fs -chown <所有者>:<组> <HDFS文件路径>修改文件的所有者和所属组(如hadoop fs -chown hadoop:hadoop /file.txt)。
  • 查看文件信息hadoop fs -stat <格式> <HDFS文件路径>查看文件的详细元数据(如hadoop fs -stat "%F %u %g %y" /file.txt,分别显示文件类型、所有者、组、修改时间)。

7. 文件/目录查询操作

  • 列出目录内容:使用hadoop fs -ls <HDFS路径>列出指定路径下的文件和子目录;添加-h参数以人类可读格式显示文件大小(如KB、MB),-R参数递归列出子目录内容。
  • 查看目录大小hadoop fs -du <HDFS路径>显示目录下所有文件的总大小;-s参数仅显示总计,-h参数以人类可读格式显示(如hadoop fs -du -sh /dir)。

8. 文件复制操作

使用hadoop fs -cp <源路径> <目标路径>在HDFS内部复制文件或目录:

  • 复制文件:hadoop fs -cp /dir1/file.txt /dir2/file.txt
  • 复制目录:添加-r参数(如hadoop fs -cp -r /dir1 /dir2),递归复制目录及其所有内容。
  • 注意:复制操作会生成新的文件副本,原文件保持不变。

0