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启动视角剖析执行逻辑
        • 一、模块定位
        • 二、执行链路总览
          • 2.1 三层分工
          • 2.2 设计思路
        • 三、服务定义与脚本入口
          • 3.1 服务目录
          • 3.2 metainfo 的作用
        • 四、“启动动作 → Java 命令”的四步链路
          • 4.1 四步拆解
          • 4.2 职责表
        • 五、执行日志与权限
          • 5.1 日志回溯
          • 5.2 权限说明
      • 启动脚本链接Python&Java
      • [主启动类] — 执行逻辑梳理
      • [主启动类] — AMSApplication初始化职责
      • [主启动类] — 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
目录

Ambari启动视角剖析执行逻辑

# 一、模块定位

TimelineService(Collector)

TimelineService 是 Ambari-Metrics 的核心模块,在架构中承担三大职能:

  • 指标接收:对接 Host-Monitor 与 Hadoop Sink 上报的监控数据;
  • 数据存储:落盘到 HBase,形成时序数据库;
  • API 提供:通过 REST / WebSocket 接口对外提供查询和聚合能力。

⚡️ 特别说明:Collector 虽然是一个 Java 进程,但在 Ambari 的世界里,它必须遵循统一的链路:
Server → Agent → Python 脚本 → Java 命令

# 二、执行链路总览

# 2.1 三层分工

执行逻辑可分为三层:

  1. Server 层:生成 Command JSON,下发启动动作;
  2. Agent 层:解析 JSON,调用对应 Python 脚本(metrics_collector.py);
  3. 脚本层:渲染参数,拼接并调用最终 Java 命令。

图 1 从“启动动作”到“Java 命令”的链路演进 启动触发逻辑

# 2.2 设计思路

  • 解耦:Server 不直接运行命令,只传递“意图”;
  • 灵活:Agent 脚本二次解析,兼容跨平台与版本差异;
  • 健壮:命令由脚本动态拼接,避免硬编码带来的兼容问题。

👉 想进一步理解,可阅读 Ambari成神之路 章节,掌握 Server / Agent / Provider 的整体设计哲学。

# 三、服务定义与脚本入口

# 3.1 服务目录

Ambari-Metrics 的服务定义不在 bigtop stacks,而在 Ambari 的 common-services 目录:

  • 定义文件:common-services/AMBARI_METRICS/<ver>/metainfo.xml
  • 脚本目录:.../package/scripts/metrics_collector.py、ams_service.py
  • 配置模板:.../configuration/*

图 2 服务目录与脚本入口(metainfo.xml → metrics_collector.py) 服务目录

# 3.2 metainfo 的作用

metainfo.xml 是服务的“蓝图”,定义了:

  • 服务名、版本号、依赖关系;
  • 启动 / 停止 / 重启动作的脚本路径;
  • 关键配置文件与环境变量。

依赖它,Ambari 能保证 Collector 在不同系统和环境下,都能按统一逻辑被启动。

# 四、“启动动作 → Java 命令”的四步链路

# 4.1 四步拆解

  1. 入口:metrics_collector.py 的 start() 方法接收 Agent 指令;
  2. 分发:进入 ams_service.py 的 collector 分支;
  3. 渲染:参数由 params 渲染为命令行片段,如 --config、--distributed;
  4. 执行:拼接成最终启动命令,并由 Execute() 调用:
/usr/sbin/ambari-metrics-collector \
  --config /etc/ambari-metrics-collector/conf \
  --distributed start
1
2
3

# 4.2 职责表

层级/文件 关键点 作用说明
metrics_collector.py start() 接收 Agent 指令,进入启动链路
ams_service.py collector 调度 Collector 与 Monitor 分支
参数体系(params) 渲染参数 将 metainfo/配置文件映射为命令行
最终命令 Execute 执行 Java 进程

图 3 四步链路示意(从 Python 脚本到 Java 进程) 启动链路

# 五、执行日志与权限

# 5.1 日志回溯

在 Agent 日志中可以清晰看到 Collector 的执行记录:

Agent日志

Execute['/usr/sbin/ambari-metrics-collector --config /etc/ambari-metrics-collector/conf --distributed start'] {'user': 'ams'}
1

# 5.2 权限说明

  • Collector 进程由 ams 用户 启动;

  • ams 属于 hadoop 组,可访问 HDFS、HBase 路径;

  • 这样实现了:

    • 服务级安全隔离(不同服务对应不同用户);
    • 统一权限治理(保证 Hadoop 生态间访问顺畅)。

下一节预告

Collector 已经顺利启动,但问题来了:
这个 Java 进程究竟是在哪里被拉起来的? 别急,我们会在下一节为你详细剖析!

#Ambari#Ambari-Metrics#Collector#TimelineService#请求触发器#架构剖析
项目目录及模块解读
启动脚本链接Python&Java

← 项目目录及模块解读 启动脚本链接Python&Java→

最近更新
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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式