HDFS 命令大全详解
一、命令使用基础
通用格式
hdfs dfs [通用选项] <命令> [命令选项]
环境配置
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
帮助系统
hdfs dfs -help
hdfs dfs -help ls
二、文件系统操作命令
1. 目录操作
命令 | 说明 | 示例 |
---|
-mkdir | 创建目录 | hdfs dfs -mkdir /user/data |
-mkdir -p | 递归创建目录 | hdfs dfs -mkdir -p /user/data/2023/raw |
-ls | 列出目录 | hdfs dfs -ls /user |
-ls -R | 递归列出目录 | hdfs dfs -ls -R / |
-du | 显示目录大小 | hdfs dfs -du -h /user |
-df | 显示文件系统空间 | hdfs dfs -df -h / |
2. 文件操作
命令 | 说明 | 示例 |
---|
-put | 上传文件 | hdfs dfs -put local.txt /data/ |
-copyFromLocal | 同put | hdfs dfs -copyFromLocal file.txt /data/ |
-get | 下载文件 | hdfs dfs -get /data/file.txt ./ |
-copyToLocal | 同get | hdfs dfs -copyToLocal /data/file.txt ./ |
-cat | 查看文件内容 | hdfs dfs -cat /data/log.txt |
-tail | 查看文件尾部 | hdfs dfs -tail -f /logs/app.log |
-mv | 移动/重命名 | hdfs dfs -mv /old /new |
-cp | 复制文件 | hdfs dfs -cp /src /dest |
-rm | 删除文件 | hdfs dfs -rm /data/temp.txt |
-rm -r | 递归删除 | hdfs dfs -rm -r /tmp/ |
-touchz | 创建空文件 | hdfs dfs -touchz /data/empty |
3. 文件权限管理
命令 | 说明 | 示例 |
---|
-chmod | 修改权限 | hdfs dfs -chmod 755 /data |
-chown | 修改所有者 | hdfs dfs -chown user:group /data |
-chgrp | 修改组 | hdfs dfs -chgrp hadoop /data |
-setrep | 设置副本数 | hdfs dfs -setrep -w 5 /data/important |
三、高级文件操作
1. 归档操作 (HAR)
hadoop archive -archiveName data.har -p /input /output
hdfs dfs -ls har:///output/data.har
hdfs dfs -cp har:///output/data.har/* /dest/
2. 快照管理
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data snapshot_v1
hdfs dfs -cp /user/data/.snapshot/snapshot_v1/file.txt /restore/
3. 空间配额管理
hdfs dfsadmin -setQuota 10000 /user/data
hdfs dfsadmin -setSpaceQuota 1t /user/data
hdfs dfs -count -q /user/data
四、系统管理命令
1. 集群管理
命令 | 说明 | 示例 |
---|
dfsadmin -report | 集群报告 | hdfs dfsadmin -report |
dfsadmin -safemode | 安全模式管理 | hdfs dfsadmin -safemode enter |
fsck | 文件系统检查 | hdfs fsck / -files -blocks |
balancer | 集群平衡 | hdfs balancer -threshold 10 |
2. 数据节点管理
hdfs dfsadmin -refreshNodes
hdfs dfsadmin -printTopology
3. 文件块操作
hdfs fsck /data/largefile -files -blocks -locations
hdfs debug recoverLease -path /data/corrupted -retries 5
五、实用技巧与最佳实践
1. 高效文件传输
hadoop distcp hdfs://nn1:8020/source hdfs://nn2:8020/dest
hdfs dfs -put - /data/compressed.gz
gzip -c local.txt | hdfs dfs -put - /data/compressed.gz
2. 文件比较与校验
hdfs dfs -cat /data/file | diff - local_file.txt
hdfs dfs -checksum /data/important.bin
3. 管道操作
hdfs dfs -tail -f /logs/access.log | grep "ERROR" > errors.txt
hdfs dfs -ls /data | awk '{print $8}' | xargs -P 4 -I {} hdfs dfs -cat {} | processor
六、命令输出解析技巧
1. 解析ls输出
hdfs dfs -ls -R /data | awk '{print $8}'
hdfs dfs -ls -R / | grep -v "^d" | awk '{print substr($1,1,1)}' | sort | uniq -c
2. 分析空间使用
hdfs dfs -du -h / | sort -h -k1 -r | head -10
hdfs dfs -ls -R / | awk '$5!="" {print $5}' | \
awk '{ if($1<1024) print "<1KB";
else if($1<1048576) print "<1MB";
else if($1<1073741824) print "<1GB";
else print ">1GB" }' | sort | uniq -c
七、安全相关命令
1. Kerberos认证
kinit username@REALM
klist
kdestroy
2. 权限检查
hdfs dfs -test -e /path && echo "存在" || echo "不存在"
hdfs dfs -test -d /path && echo "目录" || echo "文件"
八、故障排查命令
1. 查看日志
hdfs dfs -cat /var/log/hadoop-hdfs/hdfs-namenode-*.log | grep ERROR
hdfs fsck /file -files -blocks -locations | grep -A 3 "Block:"
2. 安全模式检查
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode forceExit
九、命令别名技巧
alias hls="hdfs dfs -ls"
alias hcat="hdfs dfs -cat"
alias hput="hdfs dfs -put"
alias hget="hdfs dfs -get"
alias hdu="hdfs dfs -du -h"
alias hcount="hdfs dfs -count"
十、命令速查表
类别 | 高频命令 |
---|
基础操作 | -ls , -mkdir , -put , -get , -cat |
权限管理 | -chmod , -chown , -setrep |
系统管理 | dfsadmin -report , fsck , balancer |
高级功能 | archive , createSnapshot , distcp |
故障排查 | -test , -tail , -checksum |
最佳实践提示:
- 生产环境操作前使用
-test
命令验证路径 - 大文件操作使用
-p
参数显示进度 - 定期使用
fsck
检查文件系统健康状态 - 关键操作记录审计日志:
export HADOOP_ROOT_LOGGER=INFO,console