TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 试读&介绍

  • Ambari-Metrics解读【简写AMS】

    • 源码下载及环境初始化
    • 项目目录及模块解读
    • AMS-Collector剖析

      • Ambari启动视角剖析执行逻辑
      • 启动脚本链接Python&Java
      • [主启动类] — 执行逻辑梳理
      • [主启动类] — AMSApplication初始化职责
        • 一、上节回忆
        • 二、主类入口:main 方法
        • 三、init 的执行逻辑
        • 四、AMSApplicationServer — 配置文件初始化
          • 1. 配置加载源码
          • 2. 图示说明
        • 五、HBaseTimelineMetricsService — 库表初始化
          • 1. 类继承关系
          • 2. 关键职责
        • 六、职责对比
      • [主启动类] — HBaseTimeline初始化职责
      • [主启动类] — AMSApplication的Web启动
    • AMS-Collector表结构实战

    • AMS-Collector接口实战

    • AMS-Monitor剖析

  • Metrics2协议解读

  • Hadoop-SINK剖析

  • Hbase-SINK剖析

  • Kafka-SINK剖析

  • 自定义组件接入监控

  • 其他监控方案

  • GOD-Ambari-Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector剖析
JaneTTR
2025-09-02
目录

[主启动类] — AMSApplication初始化职责

# 一、上节回忆

提出疑问

我们为什么可以快速梳理 Collector 的启动链路?
原因就在于:只要掌握 代码加载的过程,就能清晰地看出职责划分。

在上节中我们已经走到 main → launchAMSApplicationServer,最终落在:

amsApplicationServer.init(conf);
amsApplicationServer.start();
1
2

其中,init 与 start 是整个启动的两大核心。本节我们专注于 init 阶段。

# 二、主类入口:main 方法

下图展示了主启动类的 main 方法:

image-20250903154211140

它会流转到 launchAMSApplicationServer 这个静态方法:

image-20250903155148045

这里 new 出了一个 AMSApplicationServer,依次调用了 init() 和 start()。 整个过程可以简化为:

两步走

  1. 初始化(init):加载配置 + 初始化依赖服务
  2. 启动(start):挂载 Web 控制器,提供 API

# 三、init 的执行逻辑

我们来看 init(conf) 的真实调用链:

image-20250903160122519

可以看到:

amsApplicationServer.init(conf);  
// 实际调用了 AbstractService 的 init 方法
// 方法内部再回调子类的 serviceInit()
1
2
3

关键点

init() 其实是 父类 AbstractService 的模板逻辑,真正的业务初始化被延迟到 子类 serviceInit()。

因此,init 阶段的核心是两个子类:

  • AMSApplicationServer.serviceInit()
  • HBaseTimelineMetricsService.serviceInit()

# 四、AMSApplicationServer — 配置文件初始化

进入 AMSApplicationServer.serviceInit,首先执行:

image-20250903163305636

核心调用:

metricConfiguration.initialize();
1

# 1. 配置加载源码

URL hbaseResUrl = classLoader.getResource(HBASE_SITE_CONFIGURATION_FILE);
URL amsResUrl   = classLoader.getResource(METRICS_SITE_CONFIGURATION_FILE);

hbaseConf   = new Configuration(true);
hbaseConf.addResource(hbaseResUrl.toURI().toURL());

metricsConf = new Configuration(true);
metricsConf.addResource(amsResUrl.toURI().toURL());
1
2
3
4
5
6
7
8

加载结果

  • hbase-site.xml → 提供 HBase 存储层配置
  • ams-site.xml → 提供 Collector 服务端配置
  • ams-ssl-server.xml(可选)→ HTTPS 环境下加载

# 2. 图示说明

配置文件加载

这里加载的全是 Key-Value 配置项,最终形成 hbaseConf 与 metricsConf 对象。

注意

如果缺少 hbase-site.xml 或 ams-site.xml,初始化会直接抛出异常,Collector 将无法启动。

# 五、HBaseTimelineMetricsService — 库表初始化

配置文件加载完成后,serviceInit 会继续执行:

timelineMetricStore = createTimelineMetricStore(conf);
1

对应的是 HBaseTimelineMetricsService。

image-20250904093021610

# 1. 类继承关系

HBaseTimelineMetricsService 同样继承 AbstractService,意味着它拥有独立的生命周期。

继承关系

# 2. 关键职责

友情提醒

本节不深入讲解 HBaseTimelineMetricsService ,将在下一节详细赘述

image-20250904093136567

  • 校验 HBase 环境可用性
  • 初始化 METRIC_* 表结构
  • 负责持久化存储的准备工作

# 六、职责对比

我们可以将 init 阶段的分工总结为下表:

类名 职责定位 关键方法/逻辑
AMSApplicationServer 配置加载 metricConfiguration.initialize()
HBaseTimelineMetricsService 存储初始化 createTimelineMetricStore() → 建立 METRIC 表

重点回顾

  • AMSApplicationServer:相当于“准备地基”,加载配置文件,构建运行环境。
  • HBaseTimelineMetricsService:相当于“搭建框架”,基于配置完成表模型初始化。
#Ambari#Ambari-Metrics#Collector#TimelineService#启动脚本#Java主类
[主启动类] — 执行逻辑梳理
[主启动类] — HBaseTimeline初始化职责

← [主启动类] — 执行逻辑梳理 [主启动类] — HBaseTimeline初始化职责→

最近更新
01
[/metrics/metadata] — 元数据查询和使用 GET
09-12
02
[/metrics/metadata] — 请求完整链路解读
09-12
03
[/metrics/metadata] — 缓存数据装载 Phoenix
09-12
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式