首页主机资讯Ubuntu如何监控HDFS集群状态

Ubuntu如何监控HDFS集群状态

时间2025-11-17 09:49:04发布访客分类主机资讯浏览1229
导读:Ubuntu监控HDFS集群状态 一 命令行快速巡检 进程存活检查:使用jps确认关键进程是否存在(如:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager)。 集...

Ubuntu监控HDFS集群状态

一 命令行快速巡检

  • 进程存活检查:使用jps确认关键进程是否存在(如:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager)。
  • 集群容量与节点:执行hdfs dfsadmin -report,查看总容量、已用、剩余、DataNode数量与状态等关键指标。
  • 文件系统健康:执行hdfs fsck /,检查损坏块、缺失块、副本不足等问题;必要时使用hdfs fsck / -delete清理损坏块(谨慎操作)。
  • 安全模式:使用hdfs dfsadmin -safemode get/enter/leave查看或控制安全模式,避免维护期误判。
  • 数据均衡:执行start-balancer.sh触发HDFS Balancer,均衡各DataNode磁盘使用。
  • 日志排查:实时查看NameNode/DataNode日志,定位异常堆栈与告警:
    tail -f $HADOOP_HOME/logs/hadoop--namenode-.log
    tail -f $HADOOP_HOME/logs/hadoop--datanode-.log

二 Web UI可视化监控

  • NameNode Web UI:Hadoop 3.x 默认端口 9870(Hadoop 2.x 为 50070),可查看集群健康、DataNode列表、存储使用、启动时间等。
  • ResourceManager Web UI:默认端口8088,用于查看YARN资源与作业运行情况(与HDFS健康联动)。
  • DataNode Web UI:默认端口50075(Hadoop 2.x),用于查看单节点存储、块报告等。
  • 访问方式:在浏览器打开http://:9870(或50070)与http://:8088

三 第三方监控与可视化

  • Prometheus + Grafana:通过Hadoop Exporter/JMX Exporter暴露JMX指标,Prometheus抓取并存储,Grafana构建容量、使用率、块健康等面板并设置告警。
  • Zabbix:使用JMX 监控项或自定义脚本采集dfsadmin -report等指标,配置触发器实现阈值告警与可视化。
  • Ambari / Cloudera Manager:适用于CDH/HDP发行版,提供一站式部署、监控、告警与诊断能力。
  • Ganglia / ELK(Elasticsearch, Logstash, Kibana):Ganglia做时间序列监控;ELK用于日志采集、检索与可视化
  • Datadog / New Relic:商业化平台,支持HDFS与基础设施监控与APM联动。

四 自动化巡检与告警脚本示例

  • 目标:定时采集集群容量、DataNode存活数、安全模式、不健康块数,异常时输出非零状态码并接入告警系统(如Zabbix、Nagios)。
  • 示例脚本(保存为check_hdfs.sh,按需调整阈值与告警方式):
    #!/usr/bin/env bash
    set -o pipefail
    
    NN_HOST="namenode.example.com"
    HADOOP_HOME="/usr/local/hadoop-3.3.6"   # 按实际路径修改
    PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    # 1) 进程存活
    if ! jps | grep -qE "NameNode|DataNode";
         then
      echo "CRITICAL: HDFS进程(NameNode/DataNode)未运行"
      exit 2
    fi
    
    # 2) 安全模式
    SAFEMODE=$(hdfs dfsadmin -safemode get 2>
    /dev/null | awk '{
    print $NF}
        ')
    if [[ "$SAFEMODE" != "OFF" ]];
         then
      echo "WARNING: HDFS处于安全模式: $SAFEMODE"
      exit 1
    fi
    
    # 3) 集群报告
    REPORT=$(hdfs dfsadmin -report 2>
    /dev/null)
    LIVE_DN=$(echo "$REPORT" | awk -F: '/Live datanodes/{
        gsub(/ /,"",$2);
         print $2;
     exit}
    ')
    CAP_TOTAL=$(echo "$REPORT" | awk '/Configured Capacity/{
        gsub(/,/,"",$3);
         print $3;
     exit}
    ')
    CAP_USED=$(echo "$REPORT" | awk '/DFS Used/{
        gsub(/,/,"",$3);
         print $3;
     exit}
    ')
    CAP_REMAINING=$(echo "$REPORT" | awk '/DFS Remaining/{
        gsub(/,/,"",$3);
         print $3;
     exit}
    ')
    UNDER_REPLICATED=$(echo "$REPORT" | awk '/Under replicated blocks/{
        print $4;
     exit}
    ')
    MISSING_BLOCKS=$(echo "$REPORT" | awk '/Missing blocks/{
        print $3;
     exit}
    ')
    
    echo "OK: LiveDataNodes=$LIVE_DN CapacityTotal=${
    CAP_TOTAL}
     Used=${
    CAP_USED}
     Remaining=${
    CAP_REMAINING}
     UnderReplicated=${
    UNDER_REPLICATED}
     Missing=${
    MISSING_BLOCKS}
        "
    
    # 阈值示例:可用容量低于10GB或存在不健康块即告警
    if (( $(echo "$CAP_REMAINING <
         10737418240" | bc -l) ));
         then
      echo "CRITICAL: 可用容量不足10GB"
      exit 2
    fi
    if [[ "$UNDER_REPLICATED" != "0" || "$MISSING_BLOCKS" != "0" ]];
         then
      echo "CRITICAL: 存在不健康块(UnderReplicated=$UNDER_REPLICATED Missing=$MISSING_BLOCKS)"
      exit 2
    fi
    
    exit 0
    
  • 使用方式:
    • 赋权并测试:chmod +x check_hdfs.sh & & ./check_hdfs.sh
    • 接入Zabbix:将脚本作为UserParameter;接入Nagios:作为check_command;接入Prometheus:改为Exporter输出**/metrics**。
  • 提示:脚本依赖bc做浮点比较,如未安装可执行:sudo apt-get install -y bc。

五 运维要点与常见问题

  • 版本差异:Hadoop 3.x2.xWeb UI端口不同(如9870 vs 50070),告警与监控规则需按版本适配。
  • 网络与防火墙:确保NameNode、DataNode、ResourceManager等节点间端口(如9870、8088、50075)与SSH互通,避免因防火墙导致采集失败
  • 日志与诊断:优先查看**$HADOOP_HOME/logs/下的NameNode/DataNode日志,结合fsckdfsadmin -report**交叉验证。
  • 数据均衡:磁盘使用差异较大时运行start-balancer.sh,并观察Balancer日志与带宽占用,避免影响业务。
  • 安全模式:启动或恢复期间可能短暂进入安全模式,属正常行为;长时间不退出需排查块报告DataNode连通性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu如何监控HDFS集群状态
本文地址: https://pptw.com/jishu/748661.html
Ubuntu文件管理中如何恢复误删除的文件 Ubuntu文件管理如何保护系统文件不被修改

游客 回复需填写必要信息