Hadoop生态 -- HDFS 命令大全详解

HDFS 命令大全详解

一、命令使用基础

通用格式

hdfs dfs [通用选项] <命令> [命令选项]

环境配置

# 设置Hadoop环境变量(推荐添加到~/.bashrc)
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同puthdfs dfs -copyFromLocal file.txt /data/
-get下载文件hdfs dfs -get /data/file.txt ./
-copyToLocal同gethdfs 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. 高效文件传输

# 并行复制(DistCp)
hadoop distcp hdfs://nn1:8020/source hdfs://nn2:8020/dest

# 压缩传输
hdfs dfs -put - /data/compressed.gz  # 从stdin输入
gzip -c local.txt | hdfs dfs -put - /data/compressed.gz

2. 文件比较与校验

# 比较本地与HDFS文件
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认证

# 获取Kerberos票据
kinit username@REALM

# 查看当前凭证
klist

# 销毁凭证
kdestroy

2. 权限检查

# 检查路径权限
hdfs dfs -test -e /path && echo "存在" || echo "不存在"
hdfs dfs -test -d /path && echo "目录" || echo "文件"

八、故障排查命令

1. 查看日志

# 获取NameNode日志
hdfs dfs -cat /var/log/hadoop-hdfs/hdfs-namenode-*.log | grep ERROR

# 查看特定块的DataNode
hdfs fsck /file -files -blocks -locations | grep -A 3 "Block:"

2. 安全模式检查

# 检查安全模式状态
hdfs dfsadmin -safemode get

# 强制退出安全模式(谨慎使用)
hdfs dfsadmin -safemode forceExit

九、命令别名技巧

# 添加常用别名到~/.bashrc
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

最佳实践提示

  1. 生产环境操作前使用-test命令验证路径
  2. 大文件操作使用-p参数显示进度
  3. 定期使用fsck检查文件系统健康状态
  4. 关键操作记录审计日志:export HADOOP_ROOT_LOGGER=INFO,console
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值