Hadoop JMX监控和预警

2022-09-16 00:00:00 集群 参数 返回 信息 获取

Hadoop slave node会定期发出一些metrics信息来反映服务的健康状况,服务团队可以通过查看这些metrics来了解服务是否处于健康状态,并回溯了解历史表现。一些典型的用例是:

  1. 对HBase集群中RegionServer(堆使用情况)、RPC处理metrics和region有效性等预先警告
  2. 通过metrics历史dashboard进行故障排除
  3. 来自客户端的NameNode RPC流量非常高,确定客户端的来源,并从审核日志中grep用户
  4. 用户可以灵活地为每个监控的metric设置阈值,并在不重写或从头创建策略的情况下获取警报通知
  5. 关于生成异常RPC流量的HDFS客户端的通知
  6. 提取RPC处理时间异常的DN/RS列表

Metrics收集器和Agent

通常我们获取Hadoop集群 metrics信息,主要通过两种方式进行:

1.在每个节点中部署一个独立的JMX client

以HBase集群为例,监控HBase集群服务器堆使用情况、RegionServer的RPC处理metrics等。那么可以在每个从属节点(或者是选定的一个节点集)部署JMX client。

2.在Hadoop的metrics系统中添加JMX sink

JMX sink需要根据Hadoop的metrics接口开发,并嵌入Hadoop运行时环境中。

对于通过构建JMX client来收集JMX metrics,那么好有一个agent(代理)来监控JMX client是否工作良好,否则如果有些JMX client停止工作,可能会出现一些JMX数据丢失。

如果我们使用JMX sink收集数据,则JMX client不需要代理,毕竟数据收集生命周期与守护程序生命周期相同。

对于收集的metrics数据,建议先写入Kafka,作为一个"分布式缓存层",以将JMX client和metrics终的存储系统解偶,避免JMX数据的存储延迟。




JMX监控和预警

目前Hadoop集群监控的方式很多,比如Restful API,具体Hadoop组件内置的API、JMX等。但具体采取哪种方式,则取决于我们的实际生产需求。

Hadoop的JMX提供了诸如Cluster、NameNode、JVM、FSQueue等Metrics信息,而且获取它也是非常地方便。比如想获取NameNode相关的JMX,我们可以直接请求ip:50070/jmx(ip为HDFS集群中active NameNode所在节点IP地址)获取JMX信息(如果想获取Yarn的JMX,则将ip换为active ResourceManager节点所在节点地址,端口改为8088请求即可)。

JMX相关信息的接口是在类org.apache.hadoop.jmx.JMXJsonServlet中实现的,返回的信息是json结构。示例:

http://bigdatalearnshare01.com:50070/jmx

相关文章