HDFS(Hadoop Distributed File System)作为Hadoop生态系统的核心组件,提供了分布式文件存储能力,其Shell命令是与HDFS交互的主要方式,通过HDFS Shell命令,用户可以完成文件的上传、下载、删除、查看、目录管理、权限设置等操作,这些命令大多基于Linux Shell命令设计,语法相似但针对分布式环境进行了优化,以下将详细介绍HDFS Shell的常用命令及其使用场景。

基础文件与目录操作
创建目录
hdfs dfs -mkdir <目录路径>
:用于在HDFS上创建目录,创建/input
目录:
hdfs dfs -mkdir /input
若需创建多级目录(类似mkdir -p
),使用-p
参数:
hdfs dfs -mkdir -p /data/2023/10
上传文件/目录
hdfs dfs -put <本地路径> <HDFS路径>
:将本地文件或目录上传到HDFS,上传本地file.txt
到HDFS的/input
目录:
hdfs dfs -put file.txt /input/
上传本地目录local_data
到HDFS的/data
:

hdfs dfs -put local_data /data/
下载文件/目录
hdfs dfs -get <HDFS路径> <本地路径>
:将HDFS文件或目录下载到本地,下载HDFS的/output/result.txt
到本地当前目录:
hdfs dfs -get /output/result.txt ./
下载HDFS目录/data
到本地local_backup
:
hdfs dfs -get /data local_backup
删除文件/目录
hdfs dfs -rm [-r] <路径>
:删除文件或目录。-r
用于递归删除目录及其内容。
- 删除文件:
hdfs dfs -rm /input/file.txt
- 删除目录:
hdfs dfs -rm -r /data
查看目录内容
hdfs dfs -ls [-R] <路径>
:列出目录下的文件和子目录。-R
表示递归查看(类似ls -R
)。

hdfs dfs -ls /input # 查看/input目录内容 hdfs dfs -ls -R /data # 递归查看/data目录及子目录
文件查看与内容操作
查看文件内容
hdfs dfs -cat <文件路径>
:在终端显示文件内容,适合查看小文件。
hdfs dfs -cat /input/file.txt
hdfs dfs -head [-n] <文件路径>
:查看文件前n行内容,默认前1000行,查看文件前5行:
hdfs dfs -head -n 5 /input/file.txt
hdfs dfs -tail [-f] <文件路径>
:查看文件末尾内容,-f
可实时跟踪文件变化(类似Linux tail -f
)。
hdfs dfs -tail -f /output/log.txt
合并文件
hdfs dfs -getmerge <源目录> <本地文件>
:将HDFS目录下的多个文件合并为一个本地文件,将/output
目录下的所有文件合并为merged_result.txt
:
hdfs dfs -getmerge /output ./merged_result.txt
权限与所有权管理
修改权限
hdfs dfs -chmod [-R] <权限模式> <路径>
:修改文件或目录权限,-R
递归修改,将/input
目录及其内容权限设为755:
hdfs dfs -chmod -R 755 /input
修改所有者
hdfs dfs -chown [-R] <所有者>:<所属组> <路径>
:修改文件或目录的所有者和所属组,将/data
目录所有者改为hadoop
,所属组改为hadoop
:
hdfs dfs -chown -R hadoop:hadoop /data
查看权限信息
hdfs dfs -ls <路径>
:输出的权限信息格式为权限 所有者 所属组 文件大小 修改时间 文件名
,
-rw-r--r-- 3 hadoop supergroup 134217728 2023-10-01 10:00 /input/file.txt
磁盘空间与使用情况
查看目录/文件大小
hdfs dfs -du [-s] [-h] <路径>
:显示目录或文件占用的空间大小。-s
汇总显示(不显示子目录详情),-h
以人类可读格式(如KB、MB、GB)显示。
hdfs dfs -du -h /data # 查看/data目录总大小 hdfs dfs -du -sh /input/* # 查看/input下各文件大小并汇总
查看磁盘剩余空间
hdfs dfs -df [-h] <路径>
:显示HDFS文件系统的剩余空间。-h
以人类可读格式显示。
hdfs dfs -df -h / # 查看根目录剩余空间
高级操作
移动/重命名文件
hdfs dfs -mv <源路径> <目标路径>
:移动文件或目录,也可用于重命名。
- 将
/input/file.txt
移动到/backup/
:hdfs dfs -mv /input/file.txt /backup/
- 重命名
/old.txt
为/new.txt
:hdfs dfs -mv /old.txt /new.txt
复制文件
hdfs dfs -cp <源路径> <目标路径>
:复制文件或目录,将/input/file.txt
复制到/output/
:
hdfs dfs -cp /input/file.txt /output/
计数文件信息
hdfs dfs -count [-h] [-q] <路径>
:统计目录下的文件数量、目录数量和总空间。-h
人类可读,-q
显示配额信息。
hdfs dfs -count -h /data # 输出:目录数 文件数 总大小 HDFS路径
设置文件副本数
hdfs dfs -setrep [-R] <副本数> <路径>
:修改文件副本数。-R
递归修改目录下所有文件,将/input/file.txt
副本数设为3:
hdfs dfs -setrep 3 /input/file.txt
常用命令速查表
命令 | 功能描述 | 示例 |
---|---|---|
hdfs dfs -mkdir |
创建目录 | hdfs dfs -mkdir /data |
hdfs dfs -put |
上传本地文件/目录到HDFS | hdfs dfs -put local.txt /data/ |
hdfs dfs -get |
下载HDFS文件/目录到本地 | hdfs dfs -get /data/file.txt ./ |
hdfs dfs -ls |
列出目录内容 | hdfs dfs -ls /data |
hdfs dfs -cat |
查看文件内容 | hdfs dfs -cat /data/file.txt |
hdfs dfs -rm |
删除文件/目录 | hdfs dfs -rm -r /data |
hdfs dfs -chmod |
修改权限 | hdfs dfs -chmod 644 /data/file.txt |
hdfs dfs -du |
查看文件/目录大小 | hdfs dfs -du -h /data |
hdfs dfs -df |
查看磁盘剩余空间 | hdfs dfs -df -h / |
hdfs dfs -mv |
移动/重命名文件 | hdfs dfs -mv /old.txt /new.txt |
hdfs dfs -count |
统计目录文件数、大小 | hdfs dfs -count -h /data |
相关问答FAQs
Q1: HDFS中如何查看某个目录下所有文件的总大小?
A: 使用hdfs dfs -du -sh <目录路径>
命令,查看/input
目录总大小:
hdfs dfs -du -sh /input
-s
表示汇总显示(不显示子目录详情),-h
以人类可读格式(如MB、GB)输出结果。
Q2: 如果HDFS文件删除后,如何从回收站恢复?
A: HDFS默认会将被删除的文件移动到回收站(路径为/user/<当前用户>/.Trash
),可通过以下步骤恢复:
- 查看回收站文件:
hdfs dfs -ls /user/$USER/.Trash
- 将文件从回收站移回原目录:
hdfs dfs -mv /user/$USER/.Trash/文件路径 /目标目录
恢复/input/file.txt
:hdfs dfs -mv /user/$USER/.Trash/input/file.txt /input/
注意:回收站的保留时间由
fs.trash.interval
参数配置(默认为0,即禁用回收站),需在hdfs-site.xml
中调整该值才能启用回收站功能。