温馨提示×

Hadoop在Linux系统中如何监控

小樊
31
2025-12-28 08:09:58
栏目: 智能运维

Linux下Hadoop监控实操指南

一 快速巡检与命令行工具

  • 进程存活检查:使用jps确认关键进程是否存在(如:NameNode、DataNode、ResourceManager、NodeManager)。
  • HDFS状态:执行hdfs dfsadmin -report,查看总容量、已用空间、DataNode列表与健康状况
  • YARN节点与资源:执行yarn node -list -all,查看各NodeManager状态与资源;yarn application -list -appStates ALL查看所有应用(含完成/失败)。
  • MapReduce作业:执行mapred job -list(适用于仍使用MRv1的作业)。
  • 高可用状态:执行hdfs haadmin -getServiceState nn1查看NameNode主备;yarn rmadmin -getServiceState rm1查看ResourceManager主备。
  • HDFS健康:执行hadoop fsck /检查块丢失、副本不足等一致性问题。
  • 日志定位:组件日志默认在**$HADOOP_HOME/logs**,可用tail -f实时查看,或用**grep -i “error”**快速检索异常关键字。

二 Web界面与端口速查

组件 访问地址 主要用途
NameNode http://:9870(Hadoop 3.x)或 http://:50070(Hadoop 2.x) 查看HDFS存储使用、DataNode列表、FSImage/EditLog
ResourceManager http://:8088 查看集群资源、队列、运行/历史应用
DataNode http://:9864(Hadoop 3.x)或 http://:50075(Hadoop 2.x) 查看单节点存储、心跳、块报告
NodeManager http://:8042 查看节点资源使用、容器运行
  • 提示:将**替换为实际主机名或IP;若启用了Kerberos/Security**,需先完成认证再访问。

三 第三方监控与可视化

  • Apache Ambari / Cloudera Manager:提供集中式部署、配置、监控与告警,适合大规模集群的一体化管理。
  • Prometheus + Grafana:通过HDFS/YARN ExporterJMX Exporter采集指标,Grafana构建可视化仪表盘并设置阈值告警
  • Ganglia / Zabbix / Nagios:用于节点资源(CPU、内存、磁盘、网络)服务存活监控,可与Hadoop插件或Exporter集成。

四 JMX与日志深度监控

  • JMX监控:
    • yarn-site.xml / hdfs-site.xml中为目标进程开启JMX远程端口(如:yarn.nodemanager.jmx-port=9999),必要时配置SSL/认证
    • 使用JConsole / VisualVM直连JMX端口做线程、GC、内存池等深入分析;或在Prometheus侧通过JMX Exporter暴露指标供统一采集。
  • 日志监控:
    • 实时查看:tail -f $HADOOP_HOME/logs/hadoop--namenode-.log
    • 关键字检索:grep -i “exception|error” $HADOOP_HOME/logs/*.log
    • 集中化方案:采用ELK(Elasticsearch + Logstash + Kibana)进行日志收集、检索、可视化与告警

五 告警与自动化巡检脚本示例

  • 端口存活探测(示例:检查8088
    • 命令:nc -z 8088 && echo “RM OK” || echo “RM DOWN”
  • JMX健康检查(示例:NameNode)
    • 命令:curl -s “http://:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo” | grep -q ‘“HeapMemoryUsage”’; if [ $? -eq 0 ]; then echo “NN JMX OK”; else echo “NN JMX ERROR”; fi
  • 巡检脚本骨架(可加入邮件/钉钉/企业微信通知)
    • 建议每5分钟执行一次(crontab),对进程、端口、JMX、HDFS/DataNode数量、应用失败数设阈值并告警。
  • 关键告警建议
    • NameNode/ResourceManager进程或HTTP端口不可达
    • DataNode心跳缺失HDFS可用空间低于阈值
    • YARN应用失败/长时间运行
    • JVM Full GC频繁GC时间过长

0