Ubuntu下监控Hadoop的方法与工具
Hadoop自身提供了一系列Web界面和命令行工具,适合快速查看集群基础状态:
http://ResourceManager-IP:8088,可监控集群资源使用情况(如CPU、内存)、作业提交与执行状态、队列信息等。http://NameNode-IP:50070(Hadoop 3.x版本可能为50070或更高),用于查看HDFS的命名空间信息、数据节点状态、存储容量及文件系统健康状况。hdfs dfsadmin -report:生成HDFS健康报告,包含数据节点列表、存储使用率、块数量等关键信息;yarn node -list:列出ResourceManager管理的所有NodeManager节点及其状态(如活跃/失效);yarn application -list:查看当前集群中正在运行的作业,包括作业ID、名称、状态(RUNNING/FINISHED/FAILED)及资源占用情况。Ambari是针对Hadoop生态设计的集中化管理平台,支持HDFS、YARN、Hive、Spark等组件的统一监控与配置。
echo "[ambari-ambari-2.7.5-centos7]" >> /etc/yum.repos.d/ambari.repo(需替换为Ubuntu对应的仓库地址);sudo apt install ambari-server(Ubuntu需调整包管理工具);sudo ambari-server setup(按提示配置数据库、主机名等),sudo ambari-server start。Ganglia是轻量级分布式监控系统,擅长收集集群节点的性能指标(CPU、内存、磁盘I/O、网络流量);Grafana则用于数据可视化,将Ganglia收集的指标转化为直观的仪表盘。
ganglia-monitor:sudo apt install ganglia-monitor;ganglia-webfrontend和gmetad:sudo apt install ganglia-webfrontend gmetad;/etc/ganglia/gmond.conf:设置集群名称(如hadoop-cluster)、数据发送间隔(如send_interval = 15s)及主节点IP;/etc/ganglia/gmetad.conf:指定数据源(如data_source "hadoop-cluster" hadoop-node1-ip hadoop-node2-ip);sudo systemctl restart ganglia-monitor gmetad apache2;http://gmetad-ip:8651/ganglia),导入Hadoop监控模板(如Grafana社区提供的“Hadoop Cluster Monitoring”模板)。Prometheus是开源指标收集系统,通过Hadoop的JMX接口获取性能指标(如JVM堆内存使用、GC次数、MapReduce任务执行时间);Grafana负责可视化展示。
hadoop-env.sh,添加export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false";jmx_prometheus_javaagent.jar,创建配置文件hadoop.yml(定义要收集的指标路径,如- pattern: '.*');hadoop-daemon.sh),添加JVM参数:-javaagent:/path/to/jmx_prometheus_javaagent.jar=12345:/path/to/hadoop.yml;prometheus.yml中添加Hadoop节点作为抓取目标(targets: ['hadoop-node1-ip:12345']);Zabbix是企业级监控解决方案,支持Hadoop集群的全方位监控(包括节点状态、JVM性能、HDFS存储、YARN资源),并提供告警功能(如邮件、短信通知)。
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-java-gateway;zabbix_java_gateway.conf,设置LISTEN_IP="0.0.0.0"、LISTEN_PORT=10052;zabbix_server.conf,添加JavaGateway=java-gateway-ip、JavaGatewayPort=10052;hadoop-env.sh中配置JMX参数(如端口号、认证方式)。hadoop.yml、Zabbix的JMX Gateway)。