自用于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,非常实用
所有评论(0)