Hadoop运维实战宝典:60个核心命令玩转集群管理与数据处理!
2025-07-29 09:02:47
RAIZ
高效运维Hadoop集群是保障大数据平台稳定运行的基石。掌握核心命令行工具,不仅能快速执行日常操作,更是深入排查问题、优化性能的必备技能。本文系统梳理了Hadoop生态中60个高频、实用且关键的命令,覆盖HDFS文件管理、YARN资源调度、MapReduce作业控制、集群监控与基础运维。每条命令均经过实践验证,解释清晰、参数明确,助你从零上手或精进技能,真正做到运筹帷幄,掌控集群。
使用须知:
1. 环境变量: 确保 HADOOP_HOME
,HADOOP_CONF_DIR
,JAVA_HOME
等环境变量配置正确。2. 权限: 执行命令的用户需具备相应的HDFS/YARN权限(如HDFS超级用户 hdfs
或普通用户,YARN用户)。3. Kerberos: 若集群启用Kerberos认证,执行命令前需先 kinit
获取有效票据。4. 命令位置: 大部分命令位于 $HADOOP_HOME/bin
目录下。5. 帮助: 任何命令后加 -help
可查看详细帮助(如hdfs dfs -help
)。
一、HDFS 文件系统基础操作 (hdfs dfs
/ hadoop fs
)
1. 列出目录内容: hdfs dfs -ls /user/hadoop
(查看/user/hadoop
下文件/目录)2. 递归列出目录内容: hdfs dfs -ls -R /data
(递归列出/data
下所有内容)3. 创建目录: hdfs dfs -mkdir /user/newuser
(创建/user/newuser
目录)4. 创建多级目录: hdfs dfs -mkdir -p /project/2023/raw
(-p
确保父目录存在)5. 上传本地文件到HDFS: hdfs dfs -put localfile.txt /user/hadoop/input/
(上传localfile.txt
)6. 上传本地目录到HDFS: hdfs dfs -put localdir/ /user/hadoop/data/
(上传整个localdir
)7. 从HDFS下载文件到本地: hdfs dfs -get /user/hadoop/output/result.csv ./
(下载到当前目录)8. 从HDFS下载目录到本地: hdfs dfs -get /user/hadoop/output/ ./backup/
(下载到backup
目录)9. 查看HDFS文件内容: hdfs dfs -cat /user/hadoop/logs/app.log
(显示文件全部内容)10. 查看HDFS文件尾部内容: hdfs dfs -tail /user/hadoop/logs/app.log
(类似Linuxtail
)11. 查看HDFS文件头部内容: hdfs dfs -head /user/hadoop/data/sample.txt
(类似Linuxhead
)12. 查看HDFS文件大小: hdfs dfs -du -h /user/hadoop/largefile.dat
(-h
人类可读格式,-du
显示大小)13. 查看目录总大小: hdfs dfs -du -s -h /user/hadoop/project
(-s
汇总显示)14. 复制HDFS内文件/目录: hdfs dfs -cp /source/file /destination/
15. 移动/重命名HDFS文件/目录: hdfs dfs -mv /oldname /newname
16. 删除HDFS文件: hdfs dfs -rm /user/hadoop/tempfile.tmp
17. 删除HDFS目录及其内容: hdfs dfs -rm -r /user/hadoop/olddir
(慎用!)18. 跳过回收站直接删除: hdfs dfs -rm -r -skipTrash /path/to/delete
(极其慎用!)19. 设置文件/目录副本数: hdfs dfs -setrep -w 2 /user/hadoop/importantfile
(-w
等待操作完成, 设置副本数为2)20. 查看文件/目录权限与属性: hdfs dfs -ls -d /user/hadoop
(-d
查看目录本身属性)
二、HDFS 高级操作与集群管理 (hdfs
命令)
21. 检查HDFS文件系统健康状态: hdfs fsck /
(检查根目录下所有块的健康状况)22. 定位文件块信息: hdfs fsck /path/to/file -files -blocks -locations
(查看文件块及其所在DataNode)23. 均衡集群磁盘使用: hdfs balancer
(启动均衡器,通常在新增/移除节点后运行)24. 手动触发SecondaryNameNode Checkpoint: hdfs dfsadmin -safemode enter; hdfs dfsadmin -saveNamespace; hdfs dfsadmin -safemode leave
(旧版本手动合并FsImage和EditLog)25. 查看NameNode状态: hdfs haadmin -getServiceState nn1
(查看名为nn1
的NameNode是Active还是Standby)26. 手动切换Active NameNode: hdfs haadmin -failover --forceactive nn1 nn2
(将Active从nn1
切换到nn2
,--forceactive
需谨慎)27. 查看HDFS整体状态摘要: hdfs dfsadmin -report
(核心命令,显示Live/Dead/Decommissioning节点数,容量,使用率等)28. 查看DataNode存储详情: hdfs dfsadmin -report -live
(仅显示Live节点的详细存储信息)29. 使DataNode进入维护/下线状态: hdfs dfsadmin -refreshNodes
(需先更新exclude
文件)30. 查看当前SafeMode状态: hdfs dfsadmin -safemode get
31. 进入SafeMode: hdfs dfsadmin -safemode enter
(只读模式,常用于维护)32. 退出SafeMode: hdfs dfsadmin -safemode leave
(恢复正常读写)33. 升级HDFS元数据: hdfs dfsadmin -finalizeUpgrade
(在滚动升级完成后执行)34. 跨集群复制数据 (DistCp): hadoop distcp hdfs://cluster1:8020/source hdfs://cluster2:8020/destination
(高效大规模数据迁移工具)35. 带带宽限制的DistCp: hadoop distcp -bandwidth 100 hdfs://src /dest
(-bandwidth
限制为100MB/s)36. 查看HDFS配额: hdfs dfs -count -q /user/hadoop
(显示目录的命名空间配额和空间配额使用情况)37. 设置目录空间配额: hdfs dfsadmin -setSpaceQuota 1T /user/project
(限制/user/project
最多使用1TB空间)38. 清除目录空间配额: hdfs dfsadmin -clrSpaceQuota /user/project
39. 设置目录命名空间配额: hdfs dfsadmin -setQuota 10000 /user/hadoop/files
(限制该目录下最多10000个文件/目录)40. 清除目录命名空间配额: hdfs dfsadmin -clrQuota /user/hadoop/files
三、YARN 资源管理与 MapReduce 作业控制 (yarn
, mapred
)
41. 提交MapReduce作业 (Jar包): yarn jar hadoop-mapreduce-examples.jar wordcount /input /output
42. 查看所有正在运行的YARN应用: yarn application -list
43. 根据应用名查找应用ID: yarn application -list | grep "MyAppName"
44. 查看特定YARN应用详情: yarn application -status application_123456789_0001
45. 查看YARN应用日志: yarn logs -applicationId application_123456789_0001
(重要!查看作业Stdout/Stderr和Container日志聚合)46. 查看特定Container日志: yarn logs -applicationId app_id -containerId container_id
47. 终止YARN应用: yarn application -kill application_123456789_0001
48. 查看所有YARN节点状态: yarn node -list -all
49. 查看集群队列信息: yarn queue -status default
(查看default
队列状态)50. 查看YARN集群资源使用概况: yarn top
(类似Linuxtop
,动态查看队列/用户资源使用)51. 刷新YARN节点管理器: yarn rmadmin -refreshNodes
(使新增或移除的NodeManager生效)52. 查看ResourceManager HA状态: yarn rmadmin -getServiceState rm1
(查看RMrm1
是Active还是Standby)53. 查看MapReduce作业历史列表: mapred job -list all
(列出历史服务器记录的所有作业)54. 查看特定MapReduce作业详情: mapred job -history output_dir
(查看作业输出目录中记录的历史信息) 或mapred job -status job_id
55. 查看MapReduce作业计数器: mapred job -counters job_id
(查看作业运行时的计数器信息)56. 终止MapReduce作业: mapred job -kill job_id
(旧API作业,新API作业用yarn application -kill
)57. 查看集群调度器信息: yarn scheduler -dump
(输出调度器内部状态信息,用于诊断)58. 处理小文件 (HAR): hadoop archive -archiveName data.har -p /input /output
(将/input
下文件归档到/output/data.har
)59. 查看归档文件内容: hdfs dfs -ls har:///output/data.har
60. 查看HDFS慢节点: hdfs dfsadmin -report
(关注报告中Last contact
时间过长的节点可能为慢节点) 结合yarn node -list
查看NodeManager健康状况。
关键提示:
1. 监控是核心: 定期使用 hdfs dfsadmin -report
,yarn node -list
,yarn top
等命令监控集群健康度和资源使用。结合Ganglia, Ambari, Cloudera Manager等监控平台更佳。2. 日志是金矿: yarn logs -applicationId
是排查作业失败的第一入口。确保YARN日志聚合已开启且配置正确。3. 安全操作: 对 -rm -r
,-skipTrash
,-failover
,-kill
等破坏性操作保持高度警惕,确认目标路径或应用ID无误。善用回收站(fs.trash.interval
)。4. 容量规划: 定期使用 hdfs dfs -du -s -h
监控关键目录容量,利用配额(-setSpaceQuota
)管理用户/项目空间,避免单目录撑爆集群。5. 维护窗口: 涉及NameNode切换、滚动升级、节点下线等操作,务必在维护窗口进行,并使用 -safemode
等机制保证元数据安全。6. DistCp最佳实践: 跨集群迁移大数据时,优先使用DistCp。注意带宽限制( -bandwidth
)、任务并行度(-m
)、更新覆盖(-update
/-overwrite
)和原子提交(-atomic
)等参数选择。7. 小文件治理: HAR文件是解决小文件问题的一种方式,但HBase、ORC/Parquet合并、SequenceFile等也是常见方案,需根据场景选择。 8. 版本兼容: 注意命令在不同Hadoop版本(如2.x vs 3.x)间的细微差异,参考对应版本的官方文档。