Ambari源码分析之Collector模块分析

Ambari源码分析之Collector模块分析

目录

Ambari源码分析之Collector模块分析

1、Collector介绍

2、metrics collector和metrics system区别

3、Ambari-Metrics代码结构介绍

4、ambari的metrics collector创建流程

   4.1、配置TimelineMetric端口  

   4.2、启动Atimeline server,该方法在timeline server生命周期中只被启动一次

    4.3、创建YarnRPC连接,建立client与timeline server(ApplicationHistoryServer功能更少)的连接,默认端口10200    

4.4、 serviceStart方法流程分析

                            5、ambari的metrics collector初始化流程

6、metrics collector 启动


1、Collector介绍

Ambari中的Collector是其内置的角色,主要提供两个功能,一方面将 Metrics Monitor 和 Metrics Sink 汇报上来的监控信息存储到 HBase 中,另一方面提供监控信息查询接口,供 Ambari Server 进行查询。    其角色功能在Ambari设计中的功能如下图:

2、metrics collector和metrics system区别


        Metrics Collector:如上所述,主要提供两个功能,一方面将 Metrics Monitor 和 Metrics Sink 汇报上来的监控信息存储到 HBase 中,另一方面提供监控信息查询接口,供 Ambari Server 进行查询。
        Ambari Metrics System (“AMS”):
                            The built-in metrics collection system for Ambari.,意为Ambari内置的指标系统

      metrics system 每个Hadoop的进程也都内置这么一个metrics system角色,主要是收集指标数据并转发等处理,ambari中的MetricsSystem主要作用是用于接收Hadoop等sink发送的数据,具体Hadoop中的sink和Ambari的MetricsSystem的关联关系,会专门再写一篇进行介绍。

3、Ambari-Metrics代码结构介绍


        ambari-metrics主要处理metric获取。
        ambari-metrics-host-monitoring 主要负责主机监控,通过python实现,主要 psutil库    
        ambari-metrics-grafana Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器。主要处理图标显示。
        ambari-metrics-hadoop-sink 主要处理hadoop的数据采集,并将采集的数据发送给collector。
        ambari-metrics-timelineservice 主要负责数据聚合,数据存储,数据查询,为总入口。                    

4、ambari的metrics collector创建流程

   4.1、配置TimelineMetric端口  

org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration#getWebappAddress

   4.2、启动Atimeline server,该方法在timeline server生命周期中只被启动一次

org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryClientService#serviceStart 

    4.3、创建YarnRPC连接,建立client与timeline server(ApplicationHistoryServer功能更少)的连接,默认端口10200
    


        之前application history 服务器的mapreduce任务会完全支持这项特性。timeline server引入之后,application history server变成了timeline server中的一项用途。

    org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryManagerImpl#serviceStart    
    
       

4.4、 serviceStart方法流程分析

serviceStart方法主要做以下事情:
            4.4.1、初始化Hadoop的MetricsSystem,MetricsSystem主要做的是负责初始化配置文件,并负责Source和sink的注册,创建一个定时器定时(scheduleWithFixedDelay)
    定时从Source中拉取数据,并输出到Sink中
            4.4.2、JvmMetrics单例初始化,主要做的是JvmMetrics注册到MetricsSystem,提供内存使用情况、GC情况、线程使用情况、事件统计等数据的采集功能
            

org.apache.hadoop.metrics2.source.JvmMetrics#getMetrics
                `@Override
                  public void getMetrics(MetricsCollector collector, boolean all) {
                    MetricsRecordBuilder rb = collector.addRecord(JvmMetrics)
                        .setContext("jvm").tag(ProcessName, processName)
                        .tag(SessionId, sessionId);
                    getMemoryUsage(rb);
                    getGcUsage(rb);
                    getThreadUsage(rb);
                    getEventCounters(rb);
                  }`
            #启动applicationhistory,启动jetty服务器,端口没有指定"timeline.metrics.service.webapp.address"的话为6188
            
            org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer#startWebApp
        org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer#serviceStart
            org.apache.hadoop.metrics2.lib.DefaultMetricsSystem#initialize
            org.apache.hadoop.metrics2.lib.DefaultMetricsSystem#init
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#init
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#start
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#configure
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#configureSinks
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#configureSinks
                org.apache.hadoop.metrics2.impl.MetricsSystemImpl#newSink(java.lang.String, java.lang.String, org.apache.hadoop.metrics2.impl.MetricsConfig)
                        org.apache.hadoop.metrics2.impl.MetricsSystemImpl#newSink(java.lang.String, java.lang.String, org.apache.hadoop.metrics2.MetricsSink, org.apache.hadoop.metrics2.impl.MetricsConfig)
                        newSink(name, desc, (MetricsSink) conf.getPlugin(""), conf);
                        org.apache.hadoop.metrics2.impl.MetricsConfig#getPlugin


                            
5、ambari的metrics collector初始化流程


    org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink#init
    3.4.1、获取hostname
    通过MetricCollectorHAHelper 根据集群的存储模式,选择zk里保存的collector链接
    3.4.2、获取serviceName
    LOG.info("Identified hostname = " + hostName + ", serviceName = " + serviceName);
    3.4. 3、初始化collector写入策略
    3.4.4、加载collector配置(协议、主机、端口)
    3.4.5、判断主机是否为空
            判断协议是否https,是的话加载相应认证配置
            构造collectorUri和containerMetricsUri
            打印地址
    3.4.6、读取metricsCache配置并构造metricsCache
    3.4.7、读取tag配置并过滤对应的key
            如果有指定rpc端口进行设定
            


6、metrics collector 启动


    启动startWebApp(实际是一个jetty的http server)
    

org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer#startWebApp


    
    
 

猜你喜欢

转载自blog.csdn.net/JacksonKing/article/details/89479330
今日推荐