HDFS(Hadoop Distributed File System)是Hadoop生态中的核心组件,专为大规模数据存储设计,具有高容错性、高吞吐量等特点,掌握HDFS命令是操作和管理Hadoop数据的基础,以下从常用命令分类、功能详解及使用场景进行说明,HDFS命令通过hdfs dfs或hadoop fs调用,两者功能基本一致,本文以hdfs dfs为例展开。

文件与目录管理命令
- 创建目录:
-mkdir命令用于创建目录,支持多级目录创建,如hdfs dfs -mkdir /data/input会在根目录下创建input文件夹;若需创建多级目录,需加-p参数,即hdfs dfs -mkdir -p /data/2023/input,可一次性创建不存在的父目录。 - 上传文件:
-put或-copyFromLocal可将本地文件上传至HDFS,如hdfs dfs -put local.txt /data/input/,后者支持更复杂的文件过滤(如排除特定文件)。-moveFromLocal上传后会删除本地文件。 - 下载文件:
-get或-copyToLocal将HDFS文件下载至本地,-getmerge可合并多个文件下载,如hdfs dfs -getmerge /data/output/* local_merged.txt。 - 删除操作:
-rm删除文件,-rm -r递归删除目录(如hdfs dfs -rm -r /data/old);-rmf(非安全模式)或-rm -skipTrash可跳过回收站直接删除。
文件查看与搜索命令
- 查看文件内容:
-cat输出文件全部内容(hdfs dfs -cat /data/input.txt);-head和-tail分别查看文件开头和末尾(默认10行,可通过-n指定行数)。 - 文件统计:
-du查看文件大小及占用空间,如hdfs dfs -du -h /data(-h以人类可读格式显示);-count统计目录下文件数量和总大小(hdfs dfs -count /data)。 - 搜索文件:
-find支持按名称、类型等条件搜索,如hdfs dfs -find /data -name "*.log" -type f查找所有.log文件。
权限与所有权管理
HDFS采用Linux风格的权限模型,-chmod修改权限(hdfs dfs -chmod 755 /data),-chown修改所有者和组(hdfs dfs -chown user:group /data),-chgrp仅修改组。
存储配额与空间管理
-setquota设置目录配额(如hdfs dfs -setquota -u 10G /data/user1限制用户1使用10GB空间),-clrquota清除配额;-df查看文件系统整体使用情况(hdfs dfs -df -h /)。
高级命令
-distcp用于集群间分布式复制(hdfs dfs -distcp hdfs://cluster1/data hdfs://cluster2/data_backup);-expunge清空回收站;-setrep调整副本数(hdfs dfs -setrep 3 /data/input.txt,将文件副本数设为3)。
命令使用示例表格
| 命令 | 参数示例 | 功能说明 |
|---|---|---|
hdfs dfs -mkdir |
-p /data/2023/q1 |
递归创建多级目录 |
hdfs dfs -put |
local.txt /data/ |
上传本地文件至HDFS |
hdfs dfs -getmerge |
/data/output/* merged.txt |
合并HDFS多个文件并下载 |
hdfs dfs -du |
-h /data |
以易读格式显示目录大小 |
hdfs dfs -setrep |
2 /data/small_file.txt |
修改文件副本数为2 |
相关问答FAQs
Q1: HDFS删除文件后如何从回收站恢复?
A: HDFS删除文件时,默认会将其移动到.Trash/Current目录(可通过fs.trash.interval配置回收站保留时间),恢复时,可通过hdfs dfs -mv /user/<username>/.Trash/Current/<file> /target/path将文件移出回收站,若已执行rm -r或清空回收站,则无法恢复。

Q2: 如何查看HDFS集群的存储使用情况?
A: 可通过hdfs dfs -df -h /查看根目录使用量,或访问HDFS Web UI(默认地址http://hdfs dfsadmin -report命令可输出集群整体存储报告,包括容量、已用空间、数据节点状态等。

