Hadoop运维实战宝典:60个核心命令玩转集群管理与数据处理!

2025-07-29 09:02:47 RAIZ

 

高效运维Hadoop集群是保障大数据平台稳定运行的基石。掌握核心命令行工具,不仅能快速执行日常操作,更是深入排查问题、优化性能的必备技能。本文系统梳理了Hadoop生态中60个高频、实用且关键的命令,覆盖HDFS文件管理、YARN资源调度、MapReduce作业控制、集群监控与基础运维。每条命令均经过实践验证,解释清晰、参数明确,助你从零上手或精进技能,真正做到运筹帷幄,掌控集群。

使用须知:

  1. 1. 环境变量: 确保 HADOOP_HOMEHADOOP_CONF_DIRJAVA_HOME 等环境变量配置正确。
  2. 2. 权限: 执行命令的用户需具备相应的HDFS/YARN权限(如HDFS超级用户hdfs或普通用户,YARN用户)。
  3. 3. Kerberos: 若集群启用Kerberos认证,执行命令前需先kinit获取有效票据。
  4. 4. 命令位置: 大部分命令位于 $HADOOP_HOME/bin 目录下。
  5. 5. 帮助: 任何命令后加 -help 可查看详细帮助(如 hdfs dfs -help)。

一、HDFS 文件系统基础操作 (hdfs dfs / hadoop fs)

  1. 1. 列出目录内容: hdfs dfs -ls /user/hadoop (查看 /user/hadoop 下文件/目录)
  2. 2. 递归列出目录内容: hdfs dfs -ls -R /data (递归列出 /data 下所有内容)
  3. 3. 创建目录: hdfs dfs -mkdir /user/newuser (创建 /user/newuser 目录)
  4. 4. 创建多级目录: hdfs dfs -mkdir -p /project/2023/raw (-p 确保父目录存在)
  5. 5. 上传本地文件到HDFS: hdfs dfs -put localfile.txt /user/hadoop/input/ (上传 localfile.txt)
  6. 6. 上传本地目录到HDFS: hdfs dfs -put localdir/ /user/hadoop/data/ (上传整个 localdir)
  7. 7. 从HDFS下载文件到本地: hdfs dfs -get /user/hadoop/output/result.csv ./ (下载到当前目录)
  8. 8. 从HDFS下载目录到本地: hdfs dfs -get /user/hadoop/output/ ./backup/ (下载到 backup 目录)
  9. 9. 查看HDFS文件内容: hdfs dfs -cat /user/hadoop/logs/app.log (显示文件全部内容)
  10. 10. 查看HDFS文件尾部内容: hdfs dfs -tail /user/hadoop/logs/app.log (类似Linux tail)
  11. 11. 查看HDFS文件头部内容: hdfs dfs -head /user/hadoop/data/sample.txt (类似Linux head)
  12. 12. 查看HDFS文件大小: hdfs dfs -du -h /user/hadoop/largefile.dat (-h 人类可读格式, -du 显示大小)
  13. 13. 查看目录总大小: hdfs dfs -du -s -h /user/hadoop/project (-s 汇总显示)
  14. 14. 复制HDFS内文件/目录: hdfs dfs -cp /source/file /destination/
  15. 15. 移动/重命名HDFS文件/目录: hdfs dfs -mv /oldname /newname
  16. 16. 删除HDFS文件: hdfs dfs -rm /user/hadoop/tempfile.tmp
  17. 17. 删除HDFS目录及其内容: hdfs dfs -rm -r /user/hadoop/olddir (慎用!)
  18. 18. 跳过回收站直接删除: hdfs dfs -rm -r -skipTrash /path/to/delete (极其慎用!)
  19. 19. 设置文件/目录副本数: hdfs dfs -setrep -w 2 /user/hadoop/importantfile (-w 等待操作完成, 设置副本数为2)
  20. 20. 查看文件/目录权限与属性: hdfs dfs -ls -d /user/hadoop (-d 查看目录本身属性)

二、HDFS 高级操作与集群管理 (hdfs 命令)

  1. 21. 检查HDFS文件系统健康状态: hdfs fsck / (检查根目录下所有块的健康状况)
  2. 22. 定位文件块信息: hdfs fsck /path/to/file -files -blocks -locations (查看文件块及其所在DataNode)
  3. 23. 均衡集群磁盘使用: hdfs balancer (启动均衡器,通常在新增/移除节点后运行)
  4. 24. 手动触发SecondaryNameNode Checkpoint: hdfs dfsadmin -safemode enter; hdfs dfsadmin -saveNamespace; hdfs dfsadmin -safemode leave (旧版本手动合并FsImage和EditLog)
  5. 25. 查看NameNode状态: hdfs haadmin -getServiceState nn1 (查看名为 nn1 的NameNode是Active还是Standby)
  6. 26. 手动切换Active NameNode: hdfs haadmin -failover --forceactive nn1 nn2 (将Active从 nn1 切换到 nn2--forceactive 需谨慎)
  7. 27. 查看HDFS整体状态摘要: hdfs dfsadmin -report (核心命令,显示Live/Dead/Decommissioning节点数,容量,使用率等)
  8. 28. 查看DataNode存储详情: hdfs dfsadmin -report -live (仅显示Live节点的详细存储信息)
  9. 29. 使DataNode进入维护/下线状态: hdfs dfsadmin -refreshNodes (需先更新 exclude 文件)
  10. 30. 查看当前SafeMode状态: hdfs dfsadmin -safemode get
  11. 31. 进入SafeMode: hdfs dfsadmin -safemode enter (只读模式,常用于维护)
  12. 32. 退出SafeMode: hdfs dfsadmin -safemode leave (恢复正常读写)
  13. 33. 升级HDFS元数据: hdfs dfsadmin -finalizeUpgrade (在滚动升级完成后执行)
  14. 34. 跨集群复制数据 (DistCp): hadoop distcp hdfs://cluster1:8020/source hdfs://cluster2:8020/destination (高效大规模数据迁移工具)
  15. 35. 带带宽限制的DistCp: hadoop distcp -bandwidth 100 hdfs://src /dest (-bandwidth 限制为100MB/s)
  16. 36. 查看HDFS配额: hdfs dfs -count -q /user/hadoop (显示目录的命名空间配额和空间配额使用情况)
  17. 37. 设置目录空间配额: hdfs dfsadmin -setSpaceQuota 1T /user/project (限制 /user/project 最多使用1TB空间)
  18. 38. 清除目录空间配额: hdfs dfsadmin -clrSpaceQuota /user/project
  19. 39. 设置目录命名空间配额: hdfs dfsadmin -setQuota 10000 /user/hadoop/files (限制该目录下最多10000个文件/目录)
  20. 40. 清除目录命名空间配额: hdfs dfsadmin -clrQuota /user/hadoop/files

三、YARN 资源管理与 MapReduce 作业控制 (yarnmapred)

  1. 41. 提交MapReduce作业 (Jar包): yarn jar hadoop-mapreduce-examples.jar wordcount /input /output
  2. 42. 查看所有正在运行的YARN应用: yarn application -list
  3. 43. 根据应用名查找应用ID: yarn application -list | grep "MyAppName"
  4. 44. 查看特定YARN应用详情: yarn application -status application_123456789_0001
  5. 45. 查看YARN应用日志: yarn logs -applicationId application_123456789_0001 (重要!查看作业Stdout/Stderr和Container日志聚合)
  6. 46. 查看特定Container日志: yarn logs -applicationId app_id -containerId container_id
  7. 47. 终止YARN应用: yarn application -kill application_123456789_0001
  8. 48. 查看所有YARN节点状态: yarn node -list -all
  9. 49. 查看集群队列信息: yarn queue -status default (查看 default 队列状态)
  10. 50. 查看YARN集群资源使用概况: yarn top (类似Linux top,动态查看队列/用户资源使用)
  11. 51. 刷新YARN节点管理器: yarn rmadmin -refreshNodes (使新增或移除的NodeManager生效)
  12. 52. 查看ResourceManager HA状态: yarn rmadmin -getServiceState rm1 (查看RM rm1 是Active还是Standby)
  13. 53. 查看MapReduce作业历史列表: mapred job -list all (列出历史服务器记录的所有作业)
  14. 54. 查看特定MapReduce作业详情: mapred job -history output_dir (查看作业输出目录中记录的历史信息) 或 mapred job -status job_id
  15. 55. 查看MapReduce作业计数器: mapred job -counters job_id (查看作业运行时的计数器信息)
  16. 56. 终止MapReduce作业: mapred job -kill job_id (旧API作业,新API作业用 yarn application -kill)
  17. 57. 查看集群调度器信息: yarn scheduler -dump (输出调度器内部状态信息,用于诊断)
  18. 58. 处理小文件 (HAR): hadoop archive -archiveName data.har -p /input /output (将 /input 下文件归档到 /output/data.har)
  19. 59. 查看归档文件内容: hdfs dfs -ls har:///output/data.har
  20. 60. 查看HDFS慢节点: hdfs dfsadmin -report (关注报告中 Last contact 时间过长的节点可能为慢节点) 结合 yarn node -list 查看NodeManager健康状况。

关键提示:

  1. 1. 监控是核心: 定期使用 hdfs dfsadmin -reportyarn node -listyarn top 等命令监控集群健康度和资源使用。结合Ganglia, Ambari, Cloudera Manager等监控平台更佳。
  2. 2. 日志是金矿: yarn logs -applicationId 是排查作业失败的第一入口。确保YARN日志聚合已开启且配置正确。
  3. 3. 安全操作: 对 -rm -r-skipTrash-failover-kill 等破坏性操作保持高度警惕,确认目标路径或应用ID无误。善用回收站(fs.trash.interval)。
  4. 4. 容量规划: 定期使用 hdfs dfs -du -s -h 监控关键目录容量,利用配额(-setSpaceQuota)管理用户/项目空间,避免单目录撑爆集群。
  5. 5. 维护窗口: 涉及NameNode切换、滚动升级、节点下线等操作,务必在维护窗口进行,并使用 -safemode 等机制保证元数据安全。
  6. 6. DistCp最佳实践: 跨集群迁移大数据时,优先使用DistCp。注意带宽限制(-bandwidth)、任务并行度(-m)、更新覆盖(-update/-overwrite)和原子提交(-atomic)等参数选择。
  7. 7. 小文件治理: HAR文件是解决小文件问题的一种方式,但HBase、ORC/Parquet合并、SequenceFile等也是常见方案,需根据场景选择。
  8. 8. 版本兼容: 注意命令在不同Hadoop版本(如2.x vs 3.x)间的细微差异,参考对应版本的官方文档。

 


我要咨询