HDFS(Hadoop Distributed File System)作为Hadoop生态系统的核心组件,提供了高容错、高吞吐量的分布式存储能力,掌握HDFS命令是操作和管理HDFS数据的基础,以下从基本操作、文件管理、目录管理、权限控制、集群维护等维度详细解析常用命令。

基本操作命令
hdfs dfs
所有HDFS操作均通过hdfs dfs
或hdfs dfsadmin
执行,需确保Hadoop集群已启动,例如查看HDFS根目录:
hdfs dfs -ls /
-help
查看命令帮助,如:
hdfs dfs -help -ls
文件与目录管理
上传文件
- 本地到HDFS:
-put
或-copyFromLocal
(功能相同,后者支持断点续传)hdfs dfs -put /local/path /hdfs/path
- 本地到HDFS(递归上传目录):
-put -r
下载文件
- HDFS到本地:
-get
或-copyToLocal
hdfs dfs -get /hdfs/path /local/path
移动/重命名
-mv
:移动文件或目录,覆盖目标同名文件hdfs dfs -mv /hdfs/src /hdfs/dest
-rename
:仅重命名,不能跨目录
复制文件
-cp
:复制文件,支持跨目录hdfs dfs -cp /hdfs/file1 /hdfs/dir/file2
删除操作
-rm
:删除文件(非空目录需加-r
)hdfs dfs -rm -r /hdfs/dir
-rmf
:强制删除(忽略不存在文件)
创建目录
-mkdir
:创建目录,父目录不存在需加-p
hdfs dfs -mkdir -p /hdfs/parent/child
查看文件内容
-cat
:输出文件内容(大文件慎用)hdfs dfs -cat /hdfs/file.txt
-head
:查看文件前N行(默认1KB)-tail
:查看文件末尾N行
文件统计
-du
:显示文件大小及目录占用空间hdfs dfs -du -h /hdfs/dir # -h以人类可读格式显示
-count
:统计目录下文件数量、大小hdfs dfs -count -h /hdfs/dir
高级操作
文件合并
-getmerge
:将HDFS目录下多个文件合并下载到本地hdfs dfs -getmerge /hdfs/src_dir /local/merged.txt
权限控制
-chmod
:修改权限hdfs dfs -chmod 755 /hdfs/file
-chown
:修改所有者hdfs dfs -chown user:group /hdfs/file
设置副本数
-setrep
:修改文件副本数(默认3)hdfs dfs -setrep 2 /hdfs/file
文件校验
-checksum
:生成文件校验和hdfs dfs -checksum /hdfs/file
集群管理命令(hdfs dfsadmin)
集群状态
-report
:查看集群整体状态-safemode
:管理安全模式hdfs dfsadmin -safemode enter # 进入安全模式 hdfs dfsadmin -safemode leave # 离开安全模式
平衡数据
-balancer
:均衡集群数据分布hdfs dfsadmin -balancer -threshold 10 # 阈值为10%
查看块信息
-report -blocks
:显示文件块分布详情
常用命令速查表
命令 | 功能描述 | 示例 |
---|---|---|
ls |
列出目录内容 | hdfs dfs -ls / |
put |
上传文件到HDFS | hdfs dfs -put local.txt / |
get |
下载HDFS文件到本地 | hdfs dfs -get /remote.txt |
rm -r |
递归删除目录 | hdfs dfs -rm -r /dir |
mkdir -p |
创建多级目录 | hdfs dfs -mkdir -p /a/b/c |
du -h |
查看目录大小(人类可读) | hdfs dfs -du -h /dir |
setrep |
设置文件副本数 | hdfs dfs -setrep 2 /file |
chmod |
修改文件权限 | hdfs dfs -chmod 644 /file |
dfsadmin -report |
查看集群状态 | hdfs dfsadmin -report |
FAQs
如何解决HDFS上传文件时“Permission denied”错误?
解答:该错误通常是由于权限不足导致,可通过以下方式解决:
- 使用
hdfs dfs -chmod
修改目标目录权限(如chmod 777 /hdfs/target_dir
); - 使用
hdfs dfs -chown
修改文件所有者为当前用户(如chown $USER:$USER /hdfs/target_dir
); - 确保HDFS用户对目标目录有
rwx
权限。
如何查看HDFS中某个文件存储在哪些DataNode上?
解答:通过HDFS Web UI或命令行查看文件块信息:

- Web UI:浏览器访问
http://<NameNode_IP>:9870/dfshealth.html#tab-blocks
,输入文件名搜索; - 命令行:使用
hfsfs fsck
命令:hdfs fsck /hdfs/path/to/file -files -blocks -locations
输出结果会显示文件的块ID、大小以及存储该块的DataNode IP列表。
