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表结构实战

      • [监控表] — 基础表结构梳理
      • [监控表] — 业务表结构梳理
        • 一、初始化入口
        • 二、业务表族分类
          • 1.表族一览
          • 2.补充说明
        • 三、核心表结构
          • 1. Host Level — 原始明细表
          • 2. Host Level — 聚合表
          • 3. Cluster Level — 秒级全局聚合
          • 4. Cluster Level — 分/时/天聚合
          • 5. Transient — 瞬时指标
          • 6. Container — 容器指标表
      • [监控表] — 基础表和业务表关联关系
      • [监控表] — Java代码验证表关系
      • [监控表] — 建表切分策略
      • [监控表] — Master组件和Slave组件判别
      • [监控表] — Uuid 16 位构成全解析
    • AMS-Collector接口实战

    • AMS-Monitor剖析

  • Metrics2协议解读

  • Hadoop-SINK剖析

  • Hbase-SINK剖析

  • Kafka-SINK剖析

  • 自定义组件接入监控

  • 其他监控方案

  • GOD-Ambari-Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector表结构实战
JaneTTR
2025-09-09
目录

[监控表] — 业务表结构梳理

# 一、初始化入口

Collector 在启动阶段会调用:

hBaseAccessor.initMetricSchema();
1

这里集中执行所有建表语句,并结合 TimelineMetricSplitPointComputer 生成 Split Points。

# 二、业务表族分类

Collector 初始化时,最核心的就是创建承载时序数据的业务表。
整体上分为 Host Level 与 Cluster Level 两大类,二者的区别在于 是否携带主机维度:

  • Host Level 表:携带主机信息,UUID 长度为 20B(指标 16B + 主机 4B),用于存储单机级别的明细和聚合;
  • Cluster Level 表:聚合到集群层面,UUID 长度为 16B(仅指标 16B),主要存放全局聚合结果。

此外,还有两张 辅助表,分别用于短期指标存储和容器级监控。

# 1.表族一览

分层 表名 粒度 / 用途 UUID 设计
Host Level METRIC_RECORD_UUID 秒级原始明细,Collector 写入最繁忙,带 Split BINARY(20) = 指标16B + 主机4B
METRIC_RECORD_MINUTE_UUID 主机维度分钟聚合,带 Split BINARY(20)
METRIC_RECORD_HOURLY_UUID 主机维度小时聚合 BINARY(20)
METRIC_RECORD_DAILY_UUID 主机维度天聚合 BINARY(20)
Cluster Level METRIC_AGGREGATE_UUID 秒级全局聚合(含 HOSTS_COUNT 字段),带 Split BINARY(16)(仅指标维度)
METRIC_AGGREGATE_MINUTE_UUID 分钟全局聚合(含 METRIC_COUNT 字段) BINARY(16)
METRIC_AGGREGATE_HOURLY_UUID 小时全局聚合 BINARY(16)
METRIC_AGGREGATE_DAILY_UUID 天全局聚合 BINARY(16)
辅助 METRIC_TRANSIENT 瞬时 / 实验性指标(按需创建,不做长期存储) 无 UUID(直接用原始维度作主键)
辅助 CONTAINER_METRICS 容器级指标(生命周期 / 资源消耗追踪) 主键 APP_ID + CONTAINER_ID

业务表族关系

# 2.补充说明

Host Level 表

  • 面向单机维度,数据量巨大。
  • 秒级明细表写入量最高,必须依赖 Split 分区;
  • 分钟/小时/天聚合表则逐级降低数据量,用于查询趋势和可视化。

Cluster Level 表

  • 面向集群维度,去掉主机位,UUID 长度缩减为 16B。
  • 秒级表包含 HOSTS_COUNT 字段,用于统计参与聚合的主机数;
  • 分/时/天聚合表则使用 METRIC_COUNT,表示样本数量。

辅助表

  • Transient 表:仅在配置了 transient.patterns 时才会创建,不走 UUID,适合存放心跳或实验性数据,TTL 很短;
  • Container 表:专门用于记录 YARN 容器的生命周期与资源使用情况,例如启动耗时、退出状态、内存申请与实际使用。

# 三、核心表结构

# 1. Host Level — 原始明细表

CREATE TABLE IF NOT EXISTS METRIC_RECORD_UUID (
  UUID BINARY(20) NOT NULL,
  SERVER_TIME BIGINT NOT NULL,
  METRIC_SUM DOUBLE,
  METRIC_COUNT UNSIGNED_INT,
  METRIC_MAX DOUBLE,
  METRIC_MIN DOUBLE,
  METRICS VARCHAR,
  CONSTRAINT pk PRIMARY KEY (UUID, SERVER_TIME ROW_TIMESTAMP)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10
11
  • UUID 20B = 指标 16B + 主机 4B
  • SERVER_TIME:行键二级维度,范围查询高效
  • METRICS:样本值(秒级还原曲线)

明细表写入

# 2. Host Level — 聚合表

CREATE TABLE IF NOT EXISTS METRIC_RECORD_MINUTE_UUID (
  UUID BINARY(20) NOT NULL,
  SERVER_TIME BIGINT NOT NULL,
  METRIC_SUM DOUBLE,
  METRIC_COUNT UNSIGNED_INT,
  METRIC_MAX DOUBLE,
  METRIC_MIN DOUBLE,
  CONSTRAINT pk PRIMARY KEY (UUID, SERVER_TIME ROW_TIMESTAMP)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10

同类还有:

  • METRIC_RECORD_HOURLY_UUID
  • METRIC_RECORD_DAILY_UUID

image-20250910003656120

查询建议

分钟表 → 高频查询 & 可视化 小时/天表 → 长期趋势对比

# 3. Cluster Level — 秒级全局聚合

CREATE TABLE IF NOT EXISTS METRIC_AGGREGATE_UUID (
  UUID BINARY(16) NOT NULL,
  SERVER_TIME BIGINT NOT NULL,
  METRIC_SUM DOUBLE,
  HOSTS_COUNT UNSIGNED_INT,
  METRIC_MAX DOUBLE,
  METRIC_MIN DOUBLE,
  CONSTRAINT pk PRIMARY KEY (UUID, SERVER_TIME ROW_TIMESTAMP)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10
  • UUID 16B:不含主机位
  • HOSTS_COUNT:参与聚合的主机数

常用于:全局秒级波动 → 快速监控集群负载

image-20250910003747700

# 4. Cluster Level — 分/时/天聚合

CREATE TABLE IF NOT EXISTS METRIC_AGGREGATE_MINUTE_UUID (
  UUID BINARY(16) NOT NULL,
  SERVER_TIME BIGINT NOT NULL,
  METRIC_SUM DOUBLE,
  METRIC_COUNT UNSIGNED_INT,
  METRIC_MAX DOUBLE,
  METRIC_MIN DOUBLE,
  CONSTRAINT pk PRIMARY KEY (UUID, SERVER_TIME ROW_TIMESTAMP)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10

同类还有:

  • METRIC_AGGREGATE_HOURLY_UUID
  • METRIC_AGGREGATE_DAILY_UUID

字段差异

  • 秒级表:HOSTS_COUNT
  • 分/时/天:METRIC_COUNT

# 5. Transient — 瞬时指标

CREATE TABLE IF NOT EXISTS METRIC_TRANSIENT (
  METRIC_NAME VARCHAR,
  HOSTNAME VARCHAR,
  SERVER_TIME BIGINT NOT NULL,
  APP_ID VARCHAR,
  INSTANCE_ID VARCHAR,
  UNITS CHAR(20),
  METRIC_SUM DOUBLE,
  METRIC_COUNT UNSIGNED_INT,
  METRIC_MAX DOUBLE,
  METRIC_MIN DOUBLE,
  METRICS VARCHAR,
  CONSTRAINT pk PRIMARY KEY (METRIC_NAME, HOSTNAME, SERVER_TIME ROW_TIMESTAMP, APP_ID, INSTANCE_ID)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  • 不分配 UUID,用原始维度做主键
  • TTL 短,适合心跳/实验性指标

image-20250910004044175

# 6. Container — 容器指标表

CREATE TABLE IF NOT EXISTS CONTAINER_METRICS (
  APP_ID VARCHAR,
  CONTAINER_ID VARCHAR,
  START_TIME TIMESTAMP,
  FINISH_TIME TIMESTAMP,
  DURATION BIGINT,
  HOSTNAME VARCHAR,
  EXIT_CODE INTEGER,
  LOCALIZATION_DURATION BIGINT,
  LAUNCH_DURATION BIGINT,
  MEM_REQUESTED_GB DOUBLE,
  MEM_REQUESTED_GB_MILLIS DOUBLE,
  MEM_VIRTUAL_GB DOUBLE,
  MEM_USED_GB_MIN DOUBLE,
  MEM_USED_GB_MAX DOUBLE,
  MEM_USED_GB_AVG DOUBLE,
  MEM_USED_GB_50_PCT DOUBLE,
  MEM_USED_GB_75_PCT DOUBLE,
  MEM_USED_GB_90_PCT DOUBLE,
  MEM_USED_GB_95_PCT DOUBLE,
  MEM_USED_GB_99_PCT DOUBLE,
  MEM_UNUSED_GB DOUBLE,
  MEM_UNUSED_GB_MILLIS DOUBLE,
  CONSTRAINT pk PRIMARY KEY(APP_ID, CONTAINER_ID)
) DATA_BLOCK_ENCODING='FAST_DIFF',
  IMMUTABLE_ROWS=true, TTL=..., COMPRESSION='SNAPPY';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  • 记录容器生命周期(启动/结束/耗时)
  • 跟踪内存请求 vs 实际使用
  • 常与 Spark/Flink 作业诊断联动

image-20250910004128559

#Ambari#Ambari-Metrics#Collector#TimelineService#HBase#Phoenix#表模型初始化#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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式