HDFS(Hadoop Distributed File System)是Hadoop生态系统的核心组件,专为分布式存储设计,具有高容错性、高吞吐量等特点,掌握HDFS基本命令是操作Hadoop集群的基础,以下从文件操作、目录管理、权限控制等方面详细介绍常用命令及其使用场景。

文件与目录操作
HDFS的文件操作类似于Linux命令,但针对分布式环境进行了优化。hdfs dfs
是执行HDFS命令的入口,部分命令可简写为hdfs
,创建文件时,使用-touchz
命令可创建空文件,例如hdfs dfs -touchz /user/data/test.txt
;若需上传本地文件,则通过-put
命令,如hdfs dfs -put local.txt /user/data/
,该命令支持断点续传(添加-f
参数覆盖目标文件),下载文件使用-get
,例如hdfs dfs -get /user/data/test.txt local_copy.txt
,若需递归下载整个目录,需添加-r
参数,查看文件内容时,-cat
适合小文件(直接输出到终端),而-text
可自动识别文本格式(如处理.gz压缩文件);大文件推荐使用-head
或-tail
查看首尾部分,例如hdfs dfs -tail /user/data/bigdata.log
。
目录管理方面,创建目录通过-mkdir
实现,单级目录如hdfs dfs -mkdir /user/output
,多级目录需加-p
参数(类似mkdir -p
);删除目录时,-rm
用于删除文件,-rm -r
递归删除目录(如hdfs dfs -rm -r /user/temp
),查看目录内容使用-ls
,-ls -h
以人类可读格式显示文件大小(如KB/MB),-ls -R
递归列出所有子文件,移动或重命名文件通过-mv
命令,例如hdfs dfs -mv /user/data/old.txt /user/data/new.txt
;复制文件则使用-cp
,支持跨目录操作(hdfs dfs -cp /user/data/src.txt /user/backup/
)。
权限与块管理
HDFS采用Linux风格的权限模型,-chmod
修改权限(如hdfs dfs -chmod 755 /user/data
),-chown
修改所有者(格式为用户:组
,例如hdfs dfs -chown hadoop:hadoop /user/data
),查看文件块信息使用-fsck
命令,例如hdfs dfs -fsck /user/data -files -blocks
,可显示文件对应的块ID、副本位置及存储节点,调整副本数通过-setrep
,如hdfs dfs -setrep 3 /user/data/bigfile.txt
(将文件副本数设置为3,默认为集群配置值)。
统计与空间管理
查看磁盘使用情况时,-du
统计文件大小,-du -h -s
显示目录总大小(-s
表示汇总);-df
查看整个HDFS的剩余空间,例如hdfs dfs -df -h
,清理无用文件可通过-expunge
清空回收站(HDFS删除文件时会先移至.Trash
目录,超时后永久删除)。

相关操作技巧
批量操作时,可结合Linux管道命令,例如hdfs dfs -ls /user/data | grep log
筛选文件,查看文件校验和(用于数据完整性校验)使用-checksum
,如hdfs dfs -checksum /user/data/test.txt
,若需查看HDFS集群状态,可通过hdfs dfsadmin -report
获取节点信息、容量及健康状态。
FAQs
Q1: HDFS中删除文件后如何恢复?
A: HDFS默认启用回收站机制,删除的文件会被移动到用户目录下的.Trash/Current
路径,可通过hdfs dfs -mv /user/.Trash/Current/文件路径 /原始路径
恢复文件;若需清空回收站,执行hdfs dfs -expunge
命令(需在回收站保留时间到期前操作)。
Q2: 如何查看HDFS中某个文件的所有副本存储位置?
A: 使用hdfs fsck
命令结合-locations
参数,例如hdfs fsck /user/data/file.txt -locations -files
,输出会显示每个块对应的DataNode节点IP及存储路径,便于排查数据分布问题或节点故障。
