自用于HDFS的使用,使用软件为MobaX

一、文件内容查看与处理

命令 用途与参数解释 示例
-cat 查看文件内容,输出到控制台。
-ignoreCrc:忽略校验和错误(用于损坏文件的恢复读取)。
hdfs dfs -cat /user/data/file.txt
-tail 查看文件尾部内容(类似 Linux tail)。
-f:持续监听,有新内容追加时立即显示。
-s:与 -f 联用,设置刷新间隔(秒)。
hdfs dfs -tail -f /logs/app.log
-head 查看文件开头内容(默认前 1KB)。 hdfs dfs -head /user/data/bigfile.csv
-text 将 SequenceFile、Avro 等二进制格式或压缩文件以纯文本形式输出
-ignoreCrc:忽略校验和。
hdfs dfs -text /data/part-00000.snappy
-getmerge 合并下载目录下所有文件到本地单个文件。
-nl:不在每个文件末尾添加换行符。
-skip-empty-file:跳过空文件。
hdfs dfs -getmerge /logs/ local_logs.txt

二、文件上传与下载

命令 用途与参数解释 示例
-put 上传本地文件到 HDFS(常用)。
-f:强制覆盖目标。
-p:保留权限、修改时间等属性。
-l:强制在本 DataNode 创建一个本地副本(减少网络开销)。
-d:跳过创建临时文件。
hdfs dfs -put -f local.txt /user/data/
-copyFromLocal 功能与 -put 几乎相同,-put 是更推荐的简写。参数一致。 hdfs dfs -copyFromLocal local.txt /user/data/
-moveFromLocal 移动本地文件到 HDFS(上传成功后删除本地源文件)。 hdfs dfs -moveFromLocal local.log /logs/
-get 下载 HDFS 文件到本地。
-f:强制覆盖。
-p:保留权限。
-crc:下载 CRC 校验文件。
-ignoreCrc:忽略校验错误。
hdfs dfs -get /user/data/file.txt ./
-copyToLocal 功能与 -get 相同。 hdfs dfs -copyToLocal /file.txt ./
-moveToLocal 移动 HDFS 文件到本地(注意:此命令未实现,执行会报错)。 不建议使用。

三、文件系统操作与目录管理

命令 用途与参数解释 示例
-ls 列出目录内容
-C:仅显示路径。
-d:像文件一样显示目录本身。
-h:人类可读大小。
-R:递归子目录。
-t / -S:按时间/大小排序。
-r:逆序。
hdfs dfs -ls -h /user/
-mkdir 创建目录
-p:级联创建父目录(不存在则自动创建)。
hdfs dfs -mkdir -p /data/year=2026/month=04/
-cp 复制文件或目录。
-f:强制覆盖。
-p:保留属性。
-d:不创建临时文件。
hdfs dfs -cp /user/a.txt /user/backup/
-mv 移动/重命名文件或目录。 hdfs dfs -mv /user/old.txt /user/new.txt
-rm 删除文件或目录。
-f:不提示确认。
-r / -R:递归删除目录。
-skipTrash永久删除,不进入回收站。
-safely:需要安全确认(非标准参数)。
hdfs dfs -rm -r -skipTrash /tmp/useless/
-rmdir 删除空目录。
-ignore-fail-on-non-empty:目录非空时不报错。
hdfs dfs -rmdir /empty/dir
-du 查看磁盘使用空间
-s:汇总总和。
-h:人类可读格式。
hdfs dfs -du -h /user/
-df 查看 HDFS 整体磁盘空间使用情况(类似 Linux df)。
-h:人类可读。
hdfs dfs -df -h /
-count 统计目录下文件数、目录数、总大小。
-q:显示配额信息。
-v:详细表头。
-h:人类可读。
hdfs dfs -count -v -h /user/
-test 测试路径状态,返回 0 表示真(用于脚本)。
-d:是目录。
-e:存在。
-f:是文件。
-s:大小 > 0。
-z:大小 = 0。
if hdfs dfs -test -d /data; then echo "存在"; fi
-stat 显示文件/目录的详细状态信息(如:%y修改时间,%n文件名)。 hdfs dfs -stat "%y %n" /file.txt
-touch 修改文件时间戳或创建空文件(需注意,-touch 在某些旧版 Hadoop 中未实现)。 hdfs dfs -touch -c /path/newfile.txt
-touchz 创建零字节文件(安全替代 -touch)。 hdfs dfs -touchz /path/empty.lock

四、文件修改与追加

命令 用途与参数解释 示例
-appendToFile 追加内容到 HDFS 文件(结合你上一个问题)。
-n:不添加换行符。
echo "new line" | hdfs dfs -appendToFile - /file.txt
-truncate 截断文件到指定长度(字节)。
-w:等待操作完成。
hdfs dfs -truncate -w 0 /file.txt (清空文件)
-concat 合并源文件内容到目标文件(源文件随后被删除)。性能极高,用于合并 Hive 小文件。 hdfs dfs -concat /big_file.parquet /small1 /small2
-setrep 修改文件副本数
-R:递归子目录。
-w:等待复制完成。
hdfs dfs -setrep -w 2 /important/data/

五、权限与扩展属性

命令 用途与参数解释 示例
-chgrp 改变所属
-R:递归。
hdfs dfs -chgrp -R hadoop /shared/
-chmod 改变权限(数字或字符模式)。 hdfs dfs -chmod 755 /script.sh
-chown 改变所有者和组 hdfs dfs -chown user1:group1 /file.txt
-getfacl 获取文件的访问控制列表 hdfs dfs -getfacl /secure/data
-setfacl 设置 ACL。
-m:修改。
-x:移除。
-b:移除所有 ACL。
hdfs dfs -setfacl -m user:alice:rw- /file
-getfattr 获取扩展属性
-n:指定属性名。
-d:获取所有。
hdfs dfs -getfattr -d /file
-setfattr 设置扩展属性。
-n:属性名。
-v:属性值。
-x:删除。
hdfs dfs -setfattr -n user.mykey -v "myval" /file

六、快照管理与维护

命令 用途与参数解释 示例
-createSnapshot 创建目录快照 hdfs dfs -createSnapshot /data snapshot_20260413
-deleteSnapshot 删除快照。 hdfs dfs -deleteSnapshot /data snapshot_20260413
-renameSnapshot 重命名快照。 hdfs dfs -renameSnapshot /data old_name new_name

七、校验和与元数据

命令 用途与参数解释 示例
-checksum 计算文件的 MD5 校验和
-v:显示详细块信息。
hdfs dfs -checksum /file.txt
-expunge 清空回收站
-immediate:立即清空(不等待检查点)。
hdfs dfs -expunge -immediate
-find 查找文件(支持 -name, -mtime 等表达式)。 hdfs dfs -find / -name "*.log" -mtime +7

八、其他辅助命令

命令 用途 示例
-help 显示特定命令的帮助。 hdfs dfs -help rm
-usage 显示特定命令的简要用法。 hdfs dfs -usage ls
-thread / -q 控制并发拷贝的线程数和队列大小(适用于 -cp, -put, -get 等)。 hdfs dfs -cp -t 10 -q 100 /src /dst

💡 特别提示:-appendToFile 中的 - 符号

在上面的 -appendToFile 示例中使用了 -,它代表标准输入流(stdin)。这允许你直接通过管道将命令输出追加到 HDFS,非常实用

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐