1. 利用Hadoop自带监控工具
Hadoop提供了内置的Web界面和命令行工具,可快速查看集群基础状态:
- Hadoop Admin UI:通过浏览器访问集群管理界面,直观了解整体运行状态、节点列表及资源概览;
- ResourceManager Web UI(默认端口8088):监控YARN资源分配、作业提交与执行状态,查看集群内存、CPU使用情况及活跃应用;
- NameNode Web UI(默认端口50070):查看HDFS健康状况、DataNode节点列表、存储容量及数据块分布;
- 常用命令行工具:
hdfs dfsadmin -report:生成HDFS详细报告,包括DataNode数量、存储使用率、数据块健康状态;
yarn node -list:列出ResourceManager管理的所有NodeManager及其状态(活跃/不活跃);
yarn application -list:查看集群中正在运行、等待或已完成的应用程序,包括应用ID、名称、状态;
jps:查看Hadoop核心组件(NameNode、DataNode、ResourceManager、NodeManager)是否正常运行。
2. 第三方监控工具集成
对于大规模集群,建议使用专业第三方工具实现集中化、可视化监控:
- Apache Ambari:支持Hadoop组件(HDFS、YARN、MapReduce等)的集中部署与管理,提供实时监控仪表盘、告警功能及历史数据查询,界面友好且易于扩展;
- Ganglia+Grafana:Ganglia作为分布式监控系统收集集群性能指标(CPU、内存、磁盘I/O、网络流量),Grafana负责数据可视化,可自定义仪表盘展示关键指标趋势;
- Prometheus+Zabbix:Prometheus通过Hadoop JMX接口采集性能指标(如JVM内存使用、GC次数),Zabbix作为企业级监控平台实现告警(阈值设置、邮件/短信通知)与可视化,两者结合可覆盖集群全维度监控。
3. 自定义监控脚本开发
通过编写Shell或Python脚本,定期采集集群指标并输出到日志或监控系统:
- 示例脚本(检查Hadoop进程):
jps | grep -E 'NameNode|DataNode|ResourceManager|NodeManager' || echo "Hadoop process down";
- 示例脚本(检查HDFS存储使用率):
hdfs dfsadmin -report | grep 'Live datanodes' | awk '{print $3}';
- 将脚本添加到cron定时任务(如每5分钟执行一次),并将结果写入日志文件,便于后续分析。
4. 配置告警机制
为关键指标设置告警阈值,及时发现异常:
- JMX告警:通过Zabbix等工具配置JMX监控,采集Hadoop组件的JVM指标(如内存使用率、线程数),当超过阈值时触发告警;
- 日志告警:使用ELK Stack(Elasticsearch、Logstash、Kibana)集中管理Hadoop日志,通过Kibana设置关键字告警(如"ERROR"、“Exception”),快速定位问题;
- 第三方工具告警:Ambari、Nagios等工具支持自定义告警规则(如NodeManager宕机、磁盘空间不足),通过邮件、短信或钉钉发送通知。