列出hdfs相关的所有命令

HDFS 命令分类总览
1. 用户文件系统操作命令 (hdfs dfs 或 hadoop fs)
这些是日常最常用的命令,用于操作 HDFS 上的文件和数据。

基本文件操作
bash
# 列出目录内容
hdfs dfs -ls /path
hdfs dfs -ls -h /path          # 人类可读格式
hdfs dfs -ls -R /path          # 递归列出

# 创建目录
hdfs dfs -mkdir /path
hdfs dfs -mkdir -p /parent/child  # 创建多级目录

# 上传文件/目录
hdfs dfs -put localfile /hdfs/path
hdfs dfs -copyFromLocal localfile /hdfs/path
hdfs dfs -moveFromLocal localfile /hdfs/path  # 上传后删除本地文件

# 下载文件/目录
hdfs dfs -get /hdfs/path localfile
hdfs dfs -copyToLocal /hdfs/path localfile
hdfs dfs -getmerge /hdfs/dir localfile        # 合并多个文件下载

# 查看文件内容
hdfs dfs -cat /path/file
hdfs dfs -tail /path/file
hdfs dfs -head /path/file
hdfs dfs -text /path/file      # 解压缩后查看

# 复制、移动、删除
hdfs dfs -cp /src /dest
hdfs dfs -mv /src /dest
hdfs dfs -rm /path/file
hdfs dfs -rm -r /path/dir      # 递归删除
hdfs dfs -rm -f /path/file     # 强制删除
hdfs dfs -rm -skipTrash /path/file  # 跳过回收站直接删除

#文件信息与权限
bash
# 查看文件大小和数量
hdfs dfs -count /path
hdfs dfs -du -h /path          # 查看目录大小
hdfs dfs -dus -h /path         # 查看目录总大小

# 权限管理
hdfs dfs -chmod 755 /path/file
hdfs dfs -chown hdfs:users /path/file
hdfs dfs -chgrp groupname /path/file

# 检查文件状态
hdfs dfs -stat "%b %n %o %r" /path/file  # 大小 名称 所有者 副本数
hdfs dfs -test -e /path/file             # 检查文件是否存在
hdfs dfs -test -d /path                  # 检查是否为目录

#高级操作
bash
# 设置副本数
hdfs dfs -setrep -w 3 /path/file         # 设置副本数为3并等待完成
hdfs dfs -setrep -R 2 /path/dir          # 递归设置目录副本数

# 快照管理
hdfs dfsadmin -allowSnapshot /path       # 允许目录快照
hdfs dfs -createSnapshot /path snap1     # 创建快照
hdfs dfs -deleteSnapshot /path snap1     # 删除快照
hdfs dfs -renameSnapshot /path old new   # 重命名快照

# 归档操作
hadoop archive -archiveName myhar.har -p /src /dest  # 创建HAR文件
hdfs dfs -ls har:///dest/myhar.har       # 查看HAR内容

# 检查校验和
hdfs dfs -checksum /path/file

2. 集群管理命令 (hdfs dfsadmin)
这些命令用于 HDFS 集群的管理和维护。
#集群状态管理
bash
# 集群报告
hdfs dfsadmin -report                    # 详细集群报告
hdfs dfsadmin -report -live              # 只显示存活节点
hdfs dfsadmin -report -dead              # 只显示死亡节点
hdfs dfsadmin -report -decommissioning   # 正在退役的节点

# 安全模式
hdfs dfsadmin -safemode get              # 查看安全模式状态
hdfs dfsadmin -safemode enter            # 进入安全模式
hdfs dfsadmin -safemode leave            # 离开安全模式
hdfs dfsadmin -safemode wait             # 等待安全模式结束

#节点管理
bash
# DataNode 管理
hdfs dfsadmin -refreshNodes               # 刷新节点列表
hdfs dfsadmin -getDatanodeInfo <datanode> # 获取DataNode信息

# 节点退役
hdfs dfsadmin -setBalancerBandwidth <bytes>  # 设置平衡带宽
hdfs dfsadmin -getBalancerBandwidth <datanode> # 获取带宽

# 存储策略
hdfs storagepolicies -listPolicies       # 列出所有存储策略
hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>  # 设置策略
hdfs storagepolicies -getStoragePolicy -path <path>                   # 获取策略

#元数据管理
bash
# 元数据操作
hdfs dfsadmin -saveNamespace             # 保存命名空间(检查点操作)。
hdfs dfsadmin -rollEdits                 # 滚动编辑日志
hdfs dfsadmin -metasave filename         # 保存元数据到文件

# 刷新配置
hdfs dfsadmin -refreshServiceAcl         # 刷新服务ACL
hdfs dfsadmin -refreshUserToGroupsMappings # 刷新用户组映射
hdfs dfsadmin -refreshSuperUserGroupsConfiguration # 刷新超级用户组

3. 高可用管理命令 (hdfs haadmin)
用于管理 HDFS 高可用集群。

bash
# HA 状态管理
hdfs haadmin -getServiceState nn1        # 获取NameNode状态
hdfs haadmin -getAllServiceState         # 获取所有NameNode状态
hdfs haadmin -checkHealth nn1            # 检查NameNode健康状态
hdfs haadmin -transitionToActive nn1     # 切换为Active
hdfs haadmin -transitionToStandby nn1    # 切换为Standby
hdfs haadmin -failover [--forcefence] [--forceactive] nn1 nn2  # 故障转移
4. 文件系统检查与修复 (hdfs fsck)
用于检查和修复 HDFS 文件系统。

bash
# 基本检查
hdfs fsck /                              # 检查整个文件系统
hdfs fsck /path -files                   # 显示文件详情
hdfs fsck /path -blocks                  # 显示块信息
hdfs fsck /path -locations               # 显示块位置
hdfs fsck /path -racks                   # 显示机架信息

# 详细检查
hdfs fsck /path -files -blocks -locations -racks  # 完整检查
hdfs fsck / -list-corruptfileblocks      # 列出损坏的块
hdfs fsck / -move                        # 移动损坏的文件
hdfs fsck / -delete                      # 删除损坏的文件
hdfs fsck / -openforwrite                # 检查正在写入的文件

# 检查结果解释
# - Status: HEALTHY/ CORRUPT/ MISSING
# - Total blocks: 总块数
# - Under replicated blocks: 副本不足的块
# - Mis-replicated blocks: 错误复制的块
# - Missing replicas: 丢失的副本
5. 均衡器命令 (hdfs balancer)
用于平衡集群中 DataNode 之间的数据分布。

bash
# 运行均衡器
hdfs balancer                            # 默认阈值10%
hdfs balancer -threshold 15              # 设置阈值15%
hdfs balancer -policy datanode           # DataNode策略
hdfs balancer -policy blockpool          # BlockPool策略
hdfs balancer -exclude /path/to/exclude.txt  # 排除节点

# 监控均衡过程
hdfs balancer -status                    # 查看均衡状态
6. 服务管理命令
用于启动和停止 HDFS 服务。

bash
# 服务启停(旧版本)
hadoop-daemon.sh start namenode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh stop datanode

# 服务启停(新版本)
hdfs --daemon start namenode
hdfs --daemon stop namenode
hdfs --daemon start datanode
hdfs --daemon stop datanode
hdfs --daemon start journalnode
hdfs --daemon stop journalnode

# 所有节点启动
start-dfs.sh
stop-dfs.sh

7. 监控与调试命令
#四字监控命令
通过 echo [command] | nc localhost 9870 执行:

bash
# 基础监控
echo stat | nc localhost 9870           # 基础状态
echo info | nc localhost 9870           # 详细信息

# 运维监控
echo metrics | nc localhost 9870        # 监控指标
echo conf | nc localhost 9870           # 配置信息
echo logs | nc localhost 9870           # 日志级别

# 高级监控
echo dump | nc localhost 9870           # 转储信息
echo top | nc localhost 9870            # 用户操作统计

#JMX 监控
bash
# 通过HTTP访问JMX接口
curl "http://namenode:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo"
curl "http://datanode:9864/jmx"         # DataNode JMX
8. 实用工具命令
#版本与类路径
bash
hdfs version                            # 查看HDFS版本
hdfs classpath                          # 查看类路径
hdfs envvars                            # 查看环境变量

#调试工具
bash
# 调试命令
hdfs debug -help                        # 调试帮助
hdfs debug recoverLease -path <path> -retries 3  # 恢复租约

# OIV工具(离线镜像查看器)
hdfs oiv -p XML -i fsimage_xxx -o fsimage.xml  # 导出为XML
hdfs oiv -p Delimited -i fsimage_xxx -o fsimage.csv  # 导出为CSV

# OEV工具(离线编辑日志查看器)
hdfs oev -p XML -i edits_xxx -o edits.xml  # 导出编辑日志

9. 日常运维脚本示例
#健康检查脚本
bash
#!/bin/bash
# hdfs_health_check.sh

echo "=== HDFS Cluster Health Check ==="

# 1. 检查NameNode状态
echo "1. NameNode HA Status:"
hdfs haadmin -getAllServiceState

# 2. 检查DataNode状态
echo "2. DataNode Status:"
hdfs dfsadmin -report | grep -E "Live|Dead"

# 3. 检查块健康状态
echo "3. Block Health:"
hdfs fsck / -files -blocks -locations 2>/dev/null | grep -E "Status|Under replicated|Missing"

# 4. 检查存储使用
echo "4. Storage Usage:"
hdfs dfs -df -h

# 5. 检查均衡状态
echo "5. Balancer Status:"
hdfs balancer -status 2>/dev/null || echo "Balancer not running"
备份监控脚本
bash
#!/bin/bash
# hdfs_backup_monitor.sh

# 检查备份目录是否存在新文件
BACKUP_DIR="/backup/hdfs"
RECENT_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -mtime -1 | wc -l)

if [ $RECENT_BACKUP -eq 0 ]; then
    echo "ALERT: No HDFS backup found in last 24 hours!" | \
    mail -s "HDFS Backup Alert" admin@company.com
fi

# 检查NameNode元数据目录大小
META_SIZE=$(du -sh /data/hadoop/namenode | cut -f1)
echo "NameNode metadata size: $META_SIZE"
10. 命令使用技巧
常用命令组合
bash
# 查找大文件
hdfs dfs -ls -R / | grep -E "^d" | awk '{print $8}' | xargs -I {} hdfs dfs -du -s -h {} | sort -hr

# 查找最近修改的文件
hdfs dfs -ls -t -R /path | head -20

# 检查小文件
hdfs dfs -count -q -h -v /path | grep -E "QUOTA|REMAINING_QUOTA"

# 批量设置权限
hdfs dfs -chmod -R 755 /user/data
性能优化参数
bash
# 提高列表操作性能
hdfs dfs -D dfs.ls.limit=1000 -ls /large/directory

# 提高传输性能
hdfs dfs -D dfs.bytes-per-checksum=512 -put largefile /
总结
这份命令列表涵盖了 HDFS 日常运维的各个方面。建议:
日常使用:掌握 hdfs dfs 系列文件操作命令
集群管理:熟悉 hdfs dfsadmin 和 hdfs haadmin 命令
故障排查:熟练使用 hdfs fsck 和四字监控命令
性能优化:了解均衡器和存储策略命令
根据您的角色和需求,重点掌握相关类别的命令即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值