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
的地址);