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剖析

    • AMS-Collector表结构实战

    • AMS-Collector-元数据-接口实战

    • AMS-Collector-指标查询-接口实战

    • AMS-Collector-普通指标写入-接口实战

    • AMS-Collector-聚合指标写入-接口实战

      • [/metrics/aggregated] — 反向分析接口参数
      • [/metrics/aggregated] — 聚合指标触发逻辑溯源
      • [/metrics/aggregated] — 分时日表数据溯源
      • [/metrics/aggregated] — 聚合数据范围
        • 一、背景与结论(时间窗源头交代)
        • 二、调用链路总览(从入口到落点)
          • 1、入口到 CheckpointManager
        • 三、聚合器命名与分区(避免串用检查点)
        • 四、ZK PropertyStore 落点(优先来源)
        • 五、本地 checkpoint 回退(何时会用到)
  • GOD-Ambari-Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector-聚合指标写入-接口实战
JaneTTR
2025-09-19
目录

[/metrics/aggregated] — 聚合数据范围检查点

# 一、背景与结论(时间窗源头交代)

你将获得

  • 聚合时间窗的取值来源;
  • 优先级:ZK PropertyStore 优先,本地文件为回退;
  • 定位方法:如何按聚合器名称在 ZK 中找到对应检查点节点。

入口代码非常直接,所有窗口计算都依赖它的返回值:

long lastCheckPointTime = readLastCheckpointSavingOnFirstRun(currentTime);
1

这句决定“从哪里开始聚”。下面按调用链 → 存储落点 → 回退策略来验证。

# 二、调用链路总览(从入口到落点)

image-20250922200353656

# 1、入口到 CheckpointManager

AbstractTimelineAggregator.readLastCheckpointSavingOnFirstRun()
  └─▶ AbstractTimelineAggregator.readCheckPoint()
      └─▶ CheckpointManager.readCheckpoint(aggregatorName)
          └─▶ CheckpointManager.getCheckpointZKPath(...)
1
2
3
4

关键点

  • aggregatorName 唯一标识一个聚合器(分钟/小时/天、Host/Cluster 等), 因此每类聚合器在 ZK 中都有独立的检查点键,互不干扰。

# 三、聚合器命名与分区(避免串用检查点)

public enum AGGREGATOR_NAME {
  METRIC_RECORD_MINUTE, METRIC_RECORD_HOURLY, METRIC_RECORD_DAILY,
  METRIC_AGGREGATE_SECOND, METRIC_AGGREGATE_MINUTE,
  METRIC_AGGREGATE_HOURLY, METRIC_AGGREGATE_DAILY,
}

static {
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_RECORD_MINUTE, "TimelineMetricHostAggregatorMinute");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_RECORD_HOURLY, "TimelineMetricHostAggregatorHourly");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_RECORD_DAILY, "TimelineMetricHostAggregatorDaily");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_AGGREGATE_SECOND, "TimelineClusterAggregatorSecond");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_AGGREGATE_MINUTE, "TimelineClusterAggregatorMinute");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_AGGREGATE_HOURLY, "TimelineClusterAggregatorHourly");
  ACTUAL_AGGREGATOR_NAMES.put(METRIC_AGGREGATE_DAILY, "TimelineClusterAggregatorDaily");

  PARTITION_AGGREGATION_TYPES.put(MetricCollectorHAController.METRIC_AGGREGATORS + "_0",
      TimelineMetricAggregator.AGGREGATOR_TYPE.CLUSTER);
  PARTITION_AGGREGATION_TYPES.put(MetricCollectorHAController.METRIC_AGGREGATORS + "_1",
      TimelineMetricAggregator.AGGREGATOR_TYPE.HOST);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
逻辑名 实际名称 分区类型(示意) 说明
METRIC_AGGREGATE_MINUTE TimelineClusterAggregatorMinute CLUSTER(…_0) 集群分钟聚合
METRIC_RECORD_MINUTE TimelineMetricHostAggregatorMinute HOST(…_1) 主机分钟聚合
其他 同上 同上 小时/天粒度同理

结论

检查点键名 = 实际聚合器名称。从键名就能反推出窗口粒度与归属。

# 四、ZK PropertyStore 落点(优先来源)

聚合任务以 Helix Participant 身份加入集群,并在初始化阶段创建 CheckpointManager:

manager = HelixManagerFactory.getZKHelixManager(clusterName, instanceName, PARTICIPANT, zkAddress);
manager.connect();
checkpointManager = new CheckpointManager(manager.getHelixPropertyStore());
1
2
3

getHelixPropertyStore() 依赖 PropertyPathConfig 拼装前缀路径:

addEntry(PropertyType.PROPERTYSTORE, 1, "/{clusterName}/PROPERTYSTORE");
1

实拍两张图帮助定位:

image-20250922202233437

image-20250922202310437

操作建议

  1. 进入 ZK:定位 /<ams-cluster>/PROPERTYSTORE/;
  2. 按实际聚合器名(如 TimelineClusterAggregatorMinute)查找子节点;
  3. 节点值通常是毫秒时间戳,用于下一轮窗口起点。

# 五、本地 checkpoint 回退(何时会用到)

在没有 Helix/HA 或降级场景下,会回退到本地文件读取:

protected long readCheckPoint() {
  if (taskRunner != null) {
    return taskRunner.getCheckpointManager().readCheckpoint(aggregatorName);
  }
  try {
    File checkpoint = new File(getCheckpointLocation());
    if (checkpoint.exists()) {
      String contents = FileUtils.readFileToString(checkpoint);
      if (contents != null && !contents.isEmpty()) {
        return Long.parseLong(contents);
      }
    }
  } catch (IOException io) {
    LOG.debug("", io);
  }
  return -1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

该目录由 ams-site.xml 配置:

image-20250922202753346

timeline.metrics.aggregator.checkpoint.dir
1

实际环境中的默认目录示例:

image-20250922203004309

说明

如果你在 /var/lib/ambari-metrics-collector/checkpoint 没有看到文件, 通常意味着系统正优先使用 ZK PropertyStore 保存检查点,这是正常现象。

#Ambari#Ambari-Metrics#TimelineService#Aggregated#Phoenix#AbstractTimelineAggregator#GroupByAggregator#HBaseTimelineMetricsService
[/metrics/aggregated] — 分时日表数据溯源

← [/metrics/aggregated] — 分时日表数据溯源

最近更新
01
[/metrics] — 反向分析接口参数 请求抓包
09-17
02
[/metrics] — 普通指标写入方法 POST
09-17
03
[/metrics] — 验证写入逻辑规则
09-17
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式