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 /newname16. 删除HDFS文件: hdfs dfs -rm /user/hadoop/tempfile.tmp17. 删除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 get31. 进入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/project39. 设置目录命名空间配额: 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 /output42. 查看所有正在运行的YARN应用: yarn application -list43. 根据应用名查找应用ID: yarn application -list | grep "MyAppName"44. 查看特定YARN应用详情: yarn application -status application_123456789_000145. 查看YARN应用日志: yarn logs -applicationId application_123456789_0001(重要!查看作业Stdout/Stderr和Container日志聚合)46. 查看特定Container日志: yarn logs -applicationId app_id -containerId container_id47. 终止YARN应用: yarn application -kill application_123456789_000148. 查看所有YARN节点状态: yarn node -list -all49. 查看集群队列信息: 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_id55. 查看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.har60. 查看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)间的细微差异,参考对应版本的官方文档。