阅读量:2
Linux系统下Hadoop资源监控方法
1. Hadoop自带监控工具
1.1 Hadoop命令行工具
Hadoop提供了一系列命令行工具,可直接获取集群资源状态:
jps:查看Hadoop关键进程(NameNode、DataNode、ResourceManager、NodeManager等)是否运行。若进程缺失,需排查启动脚本或日志。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的存储使用情况、连接状态。yarn node -list:列出YARN集群中所有NodeManager的状态(RUNNING/UNHEALTHY等)、HTTP地址及资源分配情况。yarn application -list:查看当前运行的YARN应用程序列表,包括应用ID、状态(RUNNING/FAILED/FINISHED)、提交用户、队列及资源使用情况。yarn top:实时显示集群各节点的CPU、内存利用率及各应用程序的资源占用排名。
1.2 Hadoop Web UI
Hadoop各组件提供可视化Web界面,直观展示资源状态:
- NameNode Web UI:默认端口50070(Hadoop 2.x)或9870(Hadoop 3.x),可查看HDFS集群概览(总容量、节点数)、DataNode列表及各节点存储使用情况。
- ResourceManager Web UI:默认端口8088,可查看集群总资源(CPU、内存)、节点列表(NodeManager状态)、运行中的应用列表及调度器(Capacity Scheduler/Fair Scheduler)使用率。
- NodeManager Web UI:默认端口8042,可查看节点上运行的容器列表、资源使用率(CPU、内存)、容器日志(stdout/stderr)及本地目录健康状态。
2. 第三方监控工具
2.1 Prometheus + Grafana
- Prometheus:开源时间序列数据库,通过Hadoop Exporter(如Hadoop Metrics2 Exporter)采集集群指标(如HDFS存储、YARN资源使用率)。
- Grafana:数据可视化平台,对接Prometheus数据源,创建仪表盘展示关键指标(如HDFS剩余空间趋势、YARN内存利用率),并设置告警规则(如内存超过阈值触发邮件通知)。
2.2 Apache Ambari
- 面向Hadoop集群的集中式管理工具,支持HDFS、YARN、Spark等组件的监控、管理和生命周期操作。通过Web界面可查看集群健康状态、资源使用率、组件日志,并支持自动修复部分故障。
2.3 Ganglia
- 分布式监控系统,适用于大规模Hadoop集群,可监控节点CPU、内存、磁盘、网络等指标。常与Grafana结合,实现数据的可视化展示。
2.4 ELK Stack(Elasticsearch+Logstash+Kibana)
- Elasticsearch:存储Hadoop组件日志(如NameNode、DataNode、ResourceManager日志)。
- Logstash:收集、解析日志数据,转换为结构化格式存储到Elasticsearch。
- Kibana:可视化日志数据,通过 dashboard 展示日志关键词(如“OutOfMemoryError”“Container killed”),快速定位资源瓶颈或故障。
3. 日志监控
Hadoop组件日志默认存储在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-)。通过以下方式监控日志:
tail -f命令:实时查看日志尾部内容,例如tail -f $HADOOP_HOME/logs/hadoop-,快速发现异常信息。-namenode- .log grep命令:过滤关键错误信息,例如grep "OutOfMemoryError" $HADOOP_HOME/logs/*.log,定位内存溢出问题。
4. 自定义脚本监控
编写Shell或Python脚本,结合Linux命令(如top、df、curl)定期检查Hadoop资源状态,并通过邮件或短信发送告警:
- 示例脚本(检查NameNode和ResourceManager状态):
#!/bin/bash
# 获取NameNode状态
namenode_status=$(curl -s http://:50070/dfshealth.html | grep "Healthy")
# 获取ResourceManager状态
resourcemanager_status=$(curl -s http://:8088/cluster | grep "State")
# 发送告警(若状态异常)
if [[ "$namenode_status" != *"Healthy"* ]]; then
echo "NameNode is not healthy!" | mail -s "Hadoop Alert" admin@example.com
fi
if [[ "$resourcemanager_status" != *"RUNNING"* ]]; then
echo "ResourceManager is not running!" | mail -s "Hadoop Alert" admin@example.com
fi
- 脚本可扩展为定期检查磁盘空间、内存使用率、任务Pending数量等指标,实现自动化监控。
以上就是关于“Linux系统里Hadoop资源如何监控”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm