TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 深度专题

  • Bigtop 方法论

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

    • 试读&介绍

    • 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-Collector-指标查询-接口实战

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

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

  • Ambari Plus 思考

  • Redis集成实战

  • 通用代码模板

  • 各组件代码

  • 技术专题
  • Ambari Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector表结构实战
JaneTTR
2025-09-09
目录
一、准备工作
二、入口解读
三、表结构探究
1、METRICS_METADATA_UUID
2、HOSTED_APPS_METADATA_UUID
3、INSTANCE_HOST_METADATA

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

# 一、准备工作

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

工具选择

  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-Metrics#源码解析#Ambari#HBase#Phoenix
[主启动类] — AMSApplication的Web启动
[监控表] — 业务表结构梳理

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

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式