Debian系统下Hadoop性能监控方法
Hadoop自身提供了一系列内置监控工具,无需额外安装,适合快速查看集群基础状态:
9870):查看HDFS文件系统健康状况、数据块分布、节点列表及存储使用情况;8088):监控YARN资源分配(CPU、内存)、作业提交与运行状态、队列使用情况;19888):查看历史MapReduce作业的执行详情(如输入输出数据量、耗时、失败任务)。hdfs dfsadmin -report:列出所有数据节点的状态(如IP地址、存储容量、剩余空间、心跳状态);yarn node -list:查看集群中所有YARN节点的信息(如节点ID、状态、资源容量);yarn application -list:显示当前正在运行的YARN应用程序(如作业ID、名称、状态、提交时间);yarn logs -applicationId <application_id>:获取指定作业的详细日志(用于排查任务失败问题)。第三方工具提供更全面的监控能力(如实时可视化、告警、历史数据分析),适合生产环境:
通过编写脚本定期采集和处理监控指标,适合个性化需求(如特定业务指标监控、自定义告警逻辑):
#!/bin/bash
echo "===== Hadoop Cluster Status =====" >> /var/log/hadoop_monitor.log
hdfs dfsadmin -report | grep "Live datanodes" >> /var/log/hadoop_monitor.log
yarn node -list | wc -l >> /var/log/hadoop_monitor.log
requests库解析JSON数据,实现更复杂的逻辑(如指标计算、趋势分析)。例如,获取HDFS数据块总数的Python脚本:import requests
from requests.auth import HTTPBasicAuth
jmx_url = "http://namenode-host:9981/jolokia/read/Hadoop:service=NameNode,name=FSNamesystem"
response = requests.get(jmx_url, auth=HTTPBasicAuth('username', 'password'))
blocks_total = response.json()['value']['BlocksTotal']
print(f"Total Blocks: {blocks_total}")
无论使用哪种监控方法,合理的配置是确保监控有效的关键:
hadoop-env.sh或组件配置文件(如yarn-site.xml),添加JMX相关配置(如端口、认证方式),以便监控系统收集详细指标。例如,在hadoop-env.sh中添加:export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9981 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
hadoop_exporter的地址);