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、METRICS_METADATA_UUID
          • 2、HOSTED_APPS_METADATA_UUID
          • 3、INSTANCE_HOST_METADATA
      • [监控表] — 业务表结构梳理
      • [监控表] — 基础表和业务表关联关系
      • [监控表] — 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
目录

[监控表] — 基础表结构梳理

# 一、准备工作

在正式分析表结构之前,我们需要确认工具准备。

工具选择

  1. DataGrip
    可视化体验好,适合快速查看 Phoenix 表。
    👉 但注意 高版本与 Phoenix 驱动兼容性问题 ,可参考 Q: 高版本 DataGrip 无法使用 Phoenix 驱动

  2. Sqlline
    命令行工具,轻量快捷。
    👉 如果遇到卡死问题,可参考 Sqlline 启动卡死问题处理

# 二、入口解读

Collector 启动时,会调用:

metricMetadataManager.initializeMetadata();
1

对应实现类是 TimelineMetricMetadataManager。 下图是调用位置:

入口源码

其内部依次执行了三条 Phoenix SQL,用于初始化三张核心表:

String metadataSql = String.format(CREATE_METRICS_METADATA_TABLE_SQL, encoding, compression);
stmt.executeUpdate(metadataSql);

String hostedAppSql = String.format(CREATE_HOSTED_APPS_METADATA_TABLE_SQL, encoding, compression);
stmt.executeUpdate(hostedAppSql);

String hostedInstancesSql = String.format(CREATE_INSTANCE_HOST_TABLE_SQL, encoding, compression);
stmt.executeUpdate(hostedInstancesSql);
1
2
3
4
5
6
7
8
常量名 表名 主键 作用
CREATE_
METRICS_METADATA_
TABLE_SQL
METRICS_METADATA_UUID (METRIC_NAME, APP_ID, INSTANCE_ID) 存放指标与 UUID 对应关系
CREATE_
HOSTED_APPS_METADATA_
TABLE_SQL
HOSTED_APPS_METADATA_UUID HOSTNAME 存放主机与组件映射
CREATE_
INSTANCE_HOST_
TABLE_SQL
INSTANCE_HOST_METADATA (INSTANCE_ID, HOSTNAME) 存放实例与主机关联

# 三、表结构探究

# 1、METRICS_METADATA_UUID

CREATE TABLE IF NOT EXISTS METRICS_METADATA_UUID (
  METRIC_NAME VARCHAR,
  APP_ID VARCHAR,
  INSTANCE_ID VARCHAR,
  UUID BINARY(16),
  UNITS CHAR(20),
  TYPE CHAR(20),
  START_TIME UNSIGNED_LONG,
  SUPPORTS_AGGREGATION BOOLEAN,
  IS_WHITELISTED BOOLEAN
  CONSTRAINT pk PRIMARY KEY (METRIC_NAME, APP_ID, INSTANCE_ID)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5
6
7
8
9
10
11
12

metrics_metadata

字段解析

  • UUID:为每个 (METRIC_NAME, APP_ID, INSTANCE_ID) 生成唯一 ID
  • SUPPORTS_AGGREGATION:是否支持聚合,影响 Collector 聚合性能
  • IS_WHITELISTED:是否在白名单中,通常控制 UI 展示

📊 每个组件的指标数量分布如下:

指标统计

# 2、HOSTED_APPS_METADATA_UUID

CREATE TABLE IF NOT EXISTS HOSTED_APPS_METADATA_UUID (
  HOSTNAME VARCHAR,
  UUID BINARY(4),
  APP_IDS VARCHAR,
  CONSTRAINT pk PRIMARY KEY (HOSTNAME)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5
6

hosted_apps

字段解析

  • HOSTNAME:节点名
  • APP_IDS:该主机运行的组件 ID 列表
  • UUID:压缩存储用的短 ID

# 3、INSTANCE_HOST_METADATA

CREATE TABLE IF NOT EXISTS INSTANCE_HOST_METADATA (
  INSTANCE_ID VARCHAR,
  HOSTNAME VARCHAR,
  CONSTRAINT pk PRIMARY KEY (INSTANCE_ID, HOSTNAME)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5

instance_host

注意

  • 用于维护 实例 ↔ 主机 映射关系
#Ambari#Ambari-Metrics#Collector#TimelineService#HBase#Phoenix#表模型初始化#Java主类
[主启动类] — AMSApplication的Web启动
[监控表] — 业务表结构梳理

← [主启动类] — AMSApplication的Web启动 [监控表] — 业务表结构梳理→

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