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

      • [监控表] — 基础表结构梳理
      • [监控表] — 业务表结构梳理
      • [监控表] — 基础表和业务表关联关系
      • [监控表] — Java代码验证表关系
      • [监控表] — 建表切分策略
      • [监控表] — Master组件和Slave组件判别
        • 一、前序章节回忆
        • 二、源码溯源:参数从哪里来?
          • 1、入口代码截图
          • 2、Ambari 侧分类逻辑长什么样?
          • 3、关键代码片段(节选)
          • 4、常见 key 与组件名对照
        • 三、clusterHostInfo 的来源与现场定位
          • 1、它就藏在 command-*.json
          • 2、命令文件里的典型示例
        • 四、写入 ams-site.xml:分类结果如何落地?
          • 1、配置文件截图
          • 2、典型落地片段
      • [监控表] — 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
目录

[监控表] — Master组件和Slave组件判别

# 一、前序章节回忆 铺垫

还记得上一讲我们提到的 masterComponents 和 slaveComponents 吗? 在监控表的存储设计中,split on 切分是否均匀、Region 是否热点、扩容后负载是否重新均衡,都与 appId 属于 Master 还是 Slave 组件密切相关。 本章就沿着“谁来判别 → 如何落地 → 为什么影响切分”这条线,把机制讲透、把验证方法给全、把坑点列清。

读前导览

  • 先看“源码溯源”,搞清 分类结果从何而来;
  • 再看“落地配置”,知道 它被写到哪里;

# 二、源码溯源:参数从哪里来? 链路定位

# 1、入口代码截图

image-20250911141001902

这张图展示了我们在 ambari-metrics 代码里定位 masterComponents / slaveComponents 的过程: 它们不是 Collector 内部计算出来的,而是 通过 properties 注入 的。 提示很明确——真正的来源在 Ambari Server 下发的配置。

# 2、Ambari 侧分类逻辑长什么样?

image-20250911141337017

在 ams 的 Python 脚本中,会遍历 clusterHostInfoDict,根据 known_slave_components 白名单 把组件拆成 Master 与 Slave,最后写回 ams-site.xml。这一步决定了 初始分类结果。

# 3、关键代码片段(节选)

if params.clusterHostInfoDict:
  master_components = []
  slave_components = []
  components = dict(params.clusterHostInfoDict).keys()
  known_slave_components = [
    "nodemanager", "metrics_monitor", "datanode", "hbase_regionserver",
  ]
  for component in components:
    if component and component.endswith("_hosts"):
      component_name = component[:-6]
    elif component and component.endswith("_host"):
      component_name = component[:-5]
    else:
      continue
    if component_name in known_slave_components:
      slave_components.insert(0, component_name)
    else:
      master_components.insert(0, component_name)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

判别规则小结

  • Key 名识别:以 _hosts / _host 结尾的 key,去后缀即组件名;
  • 白名单归类:命中 known_slave_components → Slave;
  • 兜底策略:其余默认 Master;
  • 附加处理:ambari_server 会被插入 Master,并在入库前统一排序。

# 4、常见 key 与组件名对照

clusterHostInfo 的 key 解析后的组件名 默认归类
namenode_hosts namenode Master
resourcemanager_hosts resourcemanager Master
zookeeper_server_hosts zookeeper_server Master
datanode_hosts datanode Slave
nodemanager_hosts nodemanager Slave
hbase_master_hosts hbasemaster Master
hbase_regionserver_hosts hbase_regionserver Slave
metrics_monitor_hosts metrics_monitor Slave

易混点

自定义服务有时会出现 xxx_host 单数;解析时同样会去掉 _host。命名不规范(大小写、下划线)会导致分类异常,后文给出校验方法。

# 三、clusterHostInfo 的来源与现场定位 命令快照

# 1、它就藏在 command-*.json

如下图所示,config['clusterHostInfo'] 就是组件分布快照的载体:

image-20250911142543034

Ambari Agent 会把 Server 下发的命令(含配置、主机映射等)保存为 command-*.json。

温馨提醒

command-*.json为什么是Server下发,我们在Ambari成神之路讲过。他的执行逻辑以及参数绑定,请自行查阅

在 Agent 机器上可直接定位(路径视安装而定):

# 常见路径
ls -ltr /var/lib/ambari-agent/data/ | tail -n 3
1
2

# 2、命令文件里的典型示例

8f355a71151bcce55e68523bfb616223

0de47c4ee02f1f2f6a611a0cdc48b24e

"clusterHostInfo": {
"namenode_hosts": ["dev1"],
"secondary_namenode_hosts": ["dev2"],
"zookeeper_server_hosts": ["dev1", "dev3", "dev2"],
"datanode_hosts": ["dev1", "dev3", "dev2"],
"hbase_master_hosts": ["dev1"],
"hbase_regionserver_hosts": ["dev1"]
}
1
2
3
4
5
6
7
8

# 四、写入 ams-site.xml:分类结果如何落地? 配置注入

分类完成后,结果会被更新到 Collector 的配置文件:

/etc/ambari-metrics-collector/conf/ams-site.xml
1

# 1、配置文件截图

e0343bc065f1217a49f9c4e112eb140a

可见两个关键属性:

  • timeline.metrics.initial.configured.master.components
  • timeline.metrics.initial.configured.slave.components

# 2、典型落地片段


<property>
    <name>timeline.metrics.initial.configured.master.components</name>
    <value>ambari_server,hbasemaster,historyserver,namenode,resourcemanager,zookeeper_server</value>
</property>
<property>
<name>timeline.metrics.initial.configured.slave.components</name>
<value>datanode,hbase_regionserver,nodemanager,metrics_monitor</value>
</property>
1
2
3
4
5
6
7
8
9

这些值会被何时读取?

Collector 初始化(init())阶段会加载 ams-site.xml,把上述组件集合作为 初始分类 进入内存; 后续扩容/缩容如有变化,建议 重新部署配置 + 重启 AMS,以确保内存视图与磁盘配置一致。

#Ambari#Ambari-Metrics#TimelineService#HBase#Phoenix#Master/Slave判别#组件分类#ams-site.xml#clusterHostInfo#热点规避#切分策略
[监控表] — 建表切分策略
[监控表] — Uuid 16 位构成全解析

← [监控表] — 建表切分策略 [监控表] — Uuid 16 位构成全解析→

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