TT Bigdata TT Bigdata
首页
  • 产品中心

    • 当前版本
    • 版本矩阵与下载
  • 安装与使用

    • Ambari Plus 安装
      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
      • 安装部署
        • 初始化集群
    • 组件安装
      • 组件安装总览
      • Solr 安装
      • Ranger 安装
      • Knox 安装
      • HDFS 安装
      • YARN 安装
      • MapReduce2 安装
      • Tez 安装
      • Hive 安装
      • Sqoop 安装
      • HBase 安装
      • Kafka 安装
      • Flink 安装
      • Spark 安装
      • Hue 安装
      • Livy 安装
      • Zeppelin 安装
      • DolphinScheduler 安装
      • Doris 安装
      • Celeborn 安装
      • Ozone 安装
      • Impala 安装
      • Trino 安装
      • Paimon 安装
      • Hudi 安装
      • Atlas 安装
      • Superset 安装
      • Alluxio 安装
    • 开启高可用
      • 开启高可用总览
      • HDFS 开启 HA
      • YARN 开启 HA
    • 权限与审计
      • 权限与审计总览
      • Kerberos 认证启用
      • LDAP 目录接入
    • Ambari Plus Monitor
      • IoTDB 安装与部署
      • 必须 ambari plus monitor 数据库初始化文件
      • Monitor 安装
      • 监控与告警使用
    • 常见问题
      • 安装使用常见问题
  • 发布与支持

    • 更新日志
    • 服务说明
    • 优惠政策
    • 合作共建
    • 蓝图愿景
    • 历史版本
      • 更新日志 · v2.2.3
      • 更新日志 · v2.2.2
      • 更新日志 · v2.2.1
      • 更新日志 · v2.2.0
      • 更新日志 · v2.1.0
      • 更新日志 · v2.0.0
      • 更新日志 · v1.0.7
      • 更新日志 · v1.0.6
      • 更新日志 · v1.0.5
      • 更新日志 · v1.0.4
      • 更新日志 · v1.0.3
      • 更新日志 · v1.0.2
      • 更新日志 · v1.0.1
      • 更新日志 · v1.0.0
  • 会员与访问

    • 专属内容解锁
  • Ambari 安装

    • 常规安装
      • 适用于Ambari3.0.0-kylin V10-aarch64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK-Bisheng
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-kylin V10-x86_64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK17与JDK1.8
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-ubuntu22.04
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地apt源
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el7
        • Step0—源码包下载
        • Step3—安装JDK17(Ambari 3.0专用)
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el8
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari2.8.0-el7
        • Step1—基础环境准备
        • Step2—免密登陆认证
        • Step3—安装JDK
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web Ui 初始化安装
    • 一键部署
      • Ambari快速部署—3.0.0
        • 【Kylin V10 aarch64】强力卸载脚本
        • 【Kylin V10 aarch64】自动安装脚本
        • 【Kylin V10 x86_64】强力卸载脚本
        • 【Kylin V10 x86_64】自动安装脚本
        • 【Ubuntu22】强力卸载脚本
        • 【Ubuntu22】自动安装脚本
        • 【Rocky8.10】强力卸载脚本
        • 【Rocky8.10】自动安装脚本
        • 【Centos7.9】自动安装脚本
      • Ambari快速部署—2.8.0
        • 【Centos7.9】自动安装脚本
        • 【Centos7.9】强力卸载脚本
      • 数据库环境
        • PostgreSQL 快速安装脚本
      • JDK环境
        • 安装JDK1.8
        • 安装JDK 17
        • 安装JDK1.8-aarch64
        • 安装JDK 17-aarch64
      • MAVEN环境
        • 安装Maven3.8.4
        • 安装Maven3.9.9
      • GRADLE环境
        • 安装Gradle5.6.4
      • CONDA环境
        • 安装Miniconda2
        • 编译Ambari2.8.0——Miniconda3
      • R环境
        • 【Kylin V10 x86_64】安装R 4.4.2
        • 【Ubuntu22】安装R 4.4.2
        • 【Rocky8.10】安装R 4.4.2
        • 【CentOS7】安装R 4.4.2
  • 组件安装

    • 安装指导
    • 魔改分享
      • Phoenix-JDK17下编译的二进制包适用于Datagrip
        • Q: 高版本 DataGrip 无法使用 Phoenix 驱动
        • A: Phoenix - JDK17 制作&下载
    • 最小化安装(简单)
      • Zookeeper 安装
      • Hadoop 安装
      • Yarn安装
      • Hive 安装
      • Spark 安装
      • HBase 安装
      • Kafka 安装
      • Sqoop 安装
      • Flink 安装
      • DolphinScheduler 安装
      • Zeppelin 安装
      • Redis 安装
      • Doris安装
      • Celeborn安装
      • Ozone安装
      • Impala安装
      • Cloudbeaver 安装
      • Ambari Metrics安装
      • Solr安装
      • Ranger 安装
      • Trino安装
      • Paimon安装
      • Hudi安装
      • Atlas 安装
      • Superset 安装
      • Livy 安装
      • Alluxio 安装
      • Hue 安装
      • Knox 安装
    • 进阶安装技巧(需开启Kerberos)
      • Ambari Metrics 进阶安装技巧
      • Atlas 进阶安装技巧
    • 高可用安装(有难度)
      • Zookeeper
      • Hadoop-Namenode
      • Yarn-ResourceManager
      • Hive
      • Hbase
      • Kafka
      • DolphinScheduler
      • Redis
      • Doris
      • Celeborn
      • Ozone
      • Ranger
  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos
      • KDC服务初始化安装
        • KDC服务初始化安装(RHEL篇)
        • KDC服务初始化安装(Ubuntu篇)
      • 开启Kerberos认证
        • Ambari 中开启 Kerberos 认证流程详解
        • [不看会报错]-Atlas开启准备工作
        • [不看会报错]-Zeppelin开启准备工作
        • [不看会报错]-Impala开启准备工作
        • [不看会报错]-Trino开启准备工作
      • 关闭Kerberos认证
        • Ambari 中关闭 Kerberos 认证流程详解
    • FreeIPA 认证
      • FreeIPA服务端初始化
        • FreeIPA Server 安装指导
      • FreeIPA客户端初始化及Ambari开启IPA认证
        • [Step1]-FreeIPA Client 安装与入域实战
        • [Step2]-FreeIPA 初始化核心用户
        • [Step3]-Ambari 中开启 Kerberos 认证流程详解
        • [Step3-1]-krb5-conf template调整
      • 部分踩坑-问题发现
        • Ambari Server 启动失败:no valid keystore
        • FreeIPA Client 导致 Ambari 权限异常问题排查
      • 部分踩坑-完美解决
        • Ambari Server 启动失败:no valid keystore
      • 辅助测试
        • FreeIPA Client 调试安装速记
        • Ambari Server 证书调试安装速记
    • 其他优化技巧
      • Atlas-Ranger-StringUtils缺失
      • Atlas-Ranger-commons-compress缺失
    • 部分组件踩坑合集
      • Test Kerberos Client报错:Failed to kinit
      • KERBEROS SERVICE CHECK 报错
      • Ambari开启Kerberos认证加密类型错误
      • [开启Kerberos]-Solr启动失败处理
      • [开启Kerberos]-Kafka启动失败处理
      • [开启Kerberos]-Atlas启动-Hbase权限异常
      • [开启Kerberos]-Atlas启动-Solr权限异常
      • [开启Kerberos]-Atlas启动-Kafka权限异常
      • [开启Kerberos]-Hive服务检查异常处理
      • [开启Kerberos]-Trino启动-配置文件处理
      • [开启Kerberos]-Trino启动-缺失PEM证书处理
      • [开启Kerberos]-Trino启动-连接Hive失败
      • [关闭 Kerberos]-Kafka 注销异常
      • [关闭 Kerberos]-Hive 注销异常
      • Kerberos 客户端模板渲染异常处理(临时处理)
      • Kafka 启动兼容 Kerberos 源码级修改
      • Kerberos 客户端模板渲染异常处理(源码修改)
    • 实战技巧
      • Knox 接入 Trino web-ui 解决方案
      • [开启Kerberos]-Trino启动-配置模板
      • [Knox适配]-Trino-474-转发规则魔改
    • 其他技巧
      • Ambari Security 开启步骤
  • Ranger 旧版专题

    • 实战 Ranger
    • Ranger HA 旧发行版
      • 环境准备
        • [Step1] Haproxy 规划与环境安装
      • Kerberos准备
        • [Step2] 统一访问域名的 Kerberos 票据生成
        • [Step3] 调整 Kerberos Client 配置
      • 安装指导
        • [Step4] Ambari页面开启 Ranger Admin 高可用
        • [Step5] 对齐 Ranger HA 的凭证处理
    • Ranger HA ttr-release
      • [Step2] Ranger Admin HA 自动化安装
    • FreeIPA 与 LDAP
      • [Step1] Ambari 安装 Ranger 并配置 FreeIPA + LDAP
      • [Step2] 制作 Ranger Usersync 证书并应用组件
      • [Step3] 制作 Ranger Admin 证书并应用组件
      • [Step4]Ranger HDFS Repository 创建失败修复
      • [Step5]Ranger HBase Repository 创建失败修复
    • 踩坑汇总
      • 调用 Ranger API 返回 403 问题
      • Ranger Admin LDAP 认证报 Bad credentials 分析
    • 解决方案
      • Ranger Admin LDAP 认证报 Bad credentials 处理
      • Ranger HA 虚拟域名 Principal 缺失修复
      • Ranger Usersync 证书快速导入脚本(LDAPS)
      • Ranger Admin 证书快速导入脚本
      • Ranger HDFS Repository 快速处理
      • Ranger HBase / Yarn Repository 快速处理
  • 开发环境

    • Ambari-Env
      • 环境准备
      • 开始使用
    • 工具与镜像
      • Maven镜像加速
      • Gradle镜像加速
      • Node.js 多版本共存方案
      • Npm镜像加速
      • Bower镜像加速
      • R环境安装+一键安装脚本
      • PostgreSQL 快速安装
  • Ambari 编译

    • Ambari 源码编译
    • 前端开发
    • 后端开发
    • Ambari Web本地启动
  • Bigtop 编译

    • 官方组件编译
    • 扩展组件编译
    • 工具与镜像
      • Ivy配置私有镜像仓库
      • APT仓库增量更新
      • Temurin JDK 23快速安装
  • Ambari 深度专题

    • Ambari Server 原理
    • Ambari Metrics 解读
  • Bigtop 方法论

    • Bigtop 深度专题
  • 自定义集成

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 各组件代码
    • 通用代码模板
  • 报错解决

    • Ambari 报错
      • Ambari Views
        • MDEP-187 从根因到修复
        • Loading node labels问题解决
      • Ambari
        • phantomjs下载失败问题
        • 编译问题:GCC 安装与配置
        • bower CERT_HAS_EXPIRED 错误问题
        • Ambari-admin包出现bower install错误
        • Cannot run program "rpmbuild"
        • Python: No such file or directory
        • Yarn解压报错EOFException排查与解决
        • Rpm-maven-plugin与shebang兼容性报错
        • Rpm-maven-plugin 最佳实践
        • Bower install拉取失败解决
        • 缺少 python3 报错解决
        • Python(>=2.6) but is not installed
        • SSL_ERROR_SYSCALL 的修复方法
      • Ambari-infra
        • org.apache.commons.io does not exist
        • maven-compiler-plugin:3.3:compile
        • java.security.InvalidAlgorithmParameterException
        • ambari-infra-solr-plugin依赖报错解决方案
      • Ambari-metrics
        • psutil 缺失与 archive_util 导入错误
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
    • Bigtop 报错
      • Hadoop
        • /usr/bin/env: python3: No such file or directory 问题
        • error [email protected]: The engine "node" is incompatible with this module 错误
        • CMake 3.1 or higher is required. You are running version 2.8.12.2 错误
        • fuse is needed by hadoop_3_2_0-3.3.4-1.el7.x86_64 错误
        • Cyrus SASL/GSASL 缺失解决
        • Protobuf PROTOC LIBRARY NOTFOUND
        • EVP CIPHER CTX block size 报错
        • TIRPC_INCLUDE_DIRS NOTFOUND解决
        • 缺失 redhat-rpm-config 报错
      • Spark
        • evaluate,httr2,knitr 包不存在解决办法
        • Pandoc 缺失导致 SparkR 构建失败
      • Trino
        • Trino requires Temurin or Oracle JDK for development
        • GLIBC 与 GLIBCXX 版本过低
      • Hudi
        • javax.annotation.Nullable 缺失
        • 缺失 everit-json-schema 依赖
      • Paimon
        • 缺失 Jindo 依赖
      • Livy
        • apache-incubator-disclaimer-resource-bundle 缺失
      • Flink
        • .git can't be found during `prepare`
        • Angular CLI requires Node >=14.15
        • npm run ci-check 报错退出码 3
        • TypeScript 类型声明错误
      • Atlas
        • Atlas 集成 JanusGraph 启动时报 Solr6Index 实例化失败解决
      • Superset
        • urllib3 v2 only supports OpenSSL 1.1.1+
      • Jsvc
        • jsvc 依赖缺失导致 rpm 构建失败
      • Zookeeper
        • ZooKeeper 构建(缺少 hostname 命令)
        • cppunit-devel 依赖缺失解决方案
      • Hive
        • org.apache.logging.slf4j.Log4j.Marker is not public 解决方案
      • Sqoop
        • xmlto is needed by 解决方法
        • lsb_release、rsync 缺失导致构建中断
        • asciidoc 警告与 relnotes.py 语法不兼容分析
      • Cloudbeaver
        • SelectExpressionItem cannot be resolved 报错分析
      • Bigtop-select
        • bigtop-select 打包缺 compat 报错修复
        • bigtop-select 打包缺 control 文件报错修复
      • Knox
        • xmlsectool 依赖缺失问题解析
        • webhdfs-test 依赖收敛冲突问题处理
        • Invalid keystore format 问题处理
        • Knox is not allowed to impersonate admin
        • X-Forwarded-For 406 错误的原因与处理
      • Hue
        • Hue 访问 Hadoop 权限问题
        • Hue 访问 Yarn 权限问题
        • Hue 访问 Impala 时间格式问题
        • requests-kerberos 兼容性问题
        • libmariadb.so.3 缺失导致 syncdb 失败
        • 生产环境下解决方案——Hue/query_api.py
  • 系统适配

    • Kylin V10系列
      • 通用部分
        • not set for current OS
          • 解读-不支持操作系统解读
          • 解决-增加系统支持范围(一)
          • 解决-增加系统支持范围(二)
          • 解决-增加系统支持范围(三)
          • 解决-增加系统支持范围(四)
        • 解决-TLS1.3导致依赖下载失败终极办法
    • Rocky系列
      • 案例-Ambari重启失败
        • 解读-Ambari3.0.0重启失败问题
        • 解决-追加日志锚点
        • 解决-进一步分析与改造[一]
        • 解决-进一步分析与改造[二]
      • 案例-数据库连接问题
        • 解读-安装完毕后出现Unable to load version data from server
      • 案例-日志级别控制问题
        • 解读-Ambari3.0.0无法调整日志输出级别
        • 解决-临时处理日志级别不生效
        • 解决-源码级处理日志不生效
      • 案例-找不到snappy-devel
        • 解决-HDFS报snappy-devel包缺失现象
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Ubuntu系列
      • 案例-首次编译环境处理
        • 解决-dpkg-buildpackage依赖缺失
        • 解决-devscripts依赖缺失
        • 首次编译-环境初始化
      • 案例-Bigtop适配Debian
        • 解读-bigtop-select支持deb
        • 解决-Step1-解除限制拥抱deb
        • 解决-Step2-补全代码结构
      • 案例-安装中遇到的问题
        • 解读-APT私有镜像验证失败剖析
        • 解决-快速处理APT私有镜像验证失败问题
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Centos系列
    • OpenEuler系列
  • 监控与调优

    • Ambari-Metrics插件
    • Infinity插件
      • 准备工作
        • Ambari-Metrics插件失效原因
        • Infinity 插件选择与安装小技巧
        • Grafana9.3.2+Infinity2.3.1
          • Grafana快速安装Infinity插件
        • Grafana11.5.2+Infinity3.4.1
          • Grafana快速安装Infinity插件
      • 创建最简DEMO
        • Grafana9.3.2+Infinity2.3.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
        • Grafana11.5.2+Infinity3.4.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
    • 组件配置调优
      • HDFS
        • [0001]访问 HDFS Web UI Logs Unauthorized 失败
        • [0001]>>>>>>Hadoop管理员配置优化
      • RANGER
        • [0002]Ranger 审计日志时间与系统时间不一致调整
        • [0002]>>>>>日期统一规则调优
        • [0001]Resource lookup fail 线程池超时优化
        • [0001]>>>>>>线程池与超时参数调优
    • 组件调优指南
    • 1v1指导调优
  • BUG临时处理

    • 版本-v2.2.2-以前
      • [22213]Ambari 3.0.0 滚动重启只执行一台主机修复
      • [22213]解决办法
      • [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
      • [22212]解决办法
      • [22211]Atlas 缺失 __AtlasUserProfile
      • [22211]解决办法
      • [22210]Atlas Hook 无权限访问 Kafka Topic
      • [22210]解决办法
      • [22209]Ranger Kafka Lookup 缺少 JAAS 配置
      • [22209]解决办法
      • [22208]Atlas Hook 消费 Kafka 报错
      • [22208]解决办法
      • [22207]Hue 内访问 SparkSql 失败
      • [22207]解决办法
      • [22206]Ranger 调用 Knox Topologies 失败
      • [22206]解决办法
      • [22205]Ranger Admin 轮刷ZK 缺失 JAAS
      • [22205]解决办法
      • [22204]KNOX policymgr-ssl 启动告警
      • [22204]解决办法
      • [22203]Hue 服务启动后秒退
      • [22203]解决办法
      • [22202]Hue 启动失败: hadoop 用户不存在
      • [22202]解决办法
      • [22201]Hive 使用 Tez 引擎插入数据失败
      • [22201]解决办法
    • 版本-v2.1.0-以前
      • Sqlline 启动卡死问题处理
  • 实验室

    • VIEW插件
      • CAPACITY-SCHEDULER-VIEW
        • Ambari CAPACITY-SCHEDULER 插件安装详解
      • FILE-VIEW
        • Ambari FILE-VIEW 插件安装详解
    • JIRA速查
    • 虚拟环境思路
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 产品中心

    • 当前版本
    • 版本矩阵与下载
  • 安装与使用

    • Ambari Plus 安装
      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
      • 安装部署
        • 初始化集群
    • 组件安装
      • 组件安装总览
      • Solr 安装
      • Ranger 安装
      • Knox 安装
      • HDFS 安装
      • YARN 安装
      • MapReduce2 安装
      • Tez 安装
      • Hive 安装
      • Sqoop 安装
      • HBase 安装
      • Kafka 安装
      • Flink 安装
      • Spark 安装
      • Hue 安装
      • Livy 安装
      • Zeppelin 安装
      • DolphinScheduler 安装
      • Doris 安装
      • Celeborn 安装
      • Ozone 安装
      • Impala 安装
      • Trino 安装
      • Paimon 安装
      • Hudi 安装
      • Atlas 安装
      • Superset 安装
      • Alluxio 安装
    • 开启高可用
      • 开启高可用总览
      • HDFS 开启 HA
      • YARN 开启 HA
    • 权限与审计
      • 权限与审计总览
      • Kerberos 认证启用
      • LDAP 目录接入
    • Ambari Plus Monitor
      • IoTDB 安装与部署
      • 必须 ambari plus monitor 数据库初始化文件
      • Monitor 安装
      • 监控与告警使用
    • 常见问题
      • 安装使用常见问题
  • 发布与支持

    • 更新日志
    • 服务说明
    • 优惠政策
    • 合作共建
    • 蓝图愿景
    • 历史版本
      • 更新日志 · v2.2.3
      • 更新日志 · v2.2.2
      • 更新日志 · v2.2.1
      • 更新日志 · v2.2.0
      • 更新日志 · v2.1.0
      • 更新日志 · v2.0.0
      • 更新日志 · v1.0.7
      • 更新日志 · v1.0.6
      • 更新日志 · v1.0.5
      • 更新日志 · v1.0.4
      • 更新日志 · v1.0.3
      • 更新日志 · v1.0.2
      • 更新日志 · v1.0.1
      • 更新日志 · v1.0.0
  • 会员与访问

    • 专属内容解锁
  • Ambari 安装

    • 常规安装
      • 适用于Ambari3.0.0-kylin V10-aarch64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK-Bisheng
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-kylin V10-x86_64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK17与JDK1.8
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-ubuntu22.04
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地apt源
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el7
        • Step0—源码包下载
        • Step3—安装JDK17(Ambari 3.0专用)
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el8
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari2.8.0-el7
        • Step1—基础环境准备
        • Step2—免密登陆认证
        • Step3—安装JDK
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web Ui 初始化安装
    • 一键部署
      • Ambari快速部署—3.0.0
        • 【Kylin V10 aarch64】强力卸载脚本
        • 【Kylin V10 aarch64】自动安装脚本
        • 【Kylin V10 x86_64】强力卸载脚本
        • 【Kylin V10 x86_64】自动安装脚本
        • 【Ubuntu22】强力卸载脚本
        • 【Ubuntu22】自动安装脚本
        • 【Rocky8.10】强力卸载脚本
        • 【Rocky8.10】自动安装脚本
        • 【Centos7.9】自动安装脚本
      • Ambari快速部署—2.8.0
        • 【Centos7.9】自动安装脚本
        • 【Centos7.9】强力卸载脚本
      • 数据库环境
        • PostgreSQL 快速安装脚本
      • JDK环境
        • 安装JDK1.8
        • 安装JDK 17
        • 安装JDK1.8-aarch64
        • 安装JDK 17-aarch64
      • MAVEN环境
        • 安装Maven3.8.4
        • 安装Maven3.9.9
      • GRADLE环境
        • 安装Gradle5.6.4
      • CONDA环境
        • 安装Miniconda2
        • 编译Ambari2.8.0——Miniconda3
      • R环境
        • 【Kylin V10 x86_64】安装R 4.4.2
        • 【Ubuntu22】安装R 4.4.2
        • 【Rocky8.10】安装R 4.4.2
        • 【CentOS7】安装R 4.4.2
  • 组件安装

    • 安装指导
    • 魔改分享
      • Phoenix-JDK17下编译的二进制包适用于Datagrip
        • Q: 高版本 DataGrip 无法使用 Phoenix 驱动
        • A: Phoenix - JDK17 制作&下载
    • 最小化安装(简单)
      • Zookeeper 安装
      • Hadoop 安装
      • Yarn安装
      • Hive 安装
      • Spark 安装
      • HBase 安装
      • Kafka 安装
      • Sqoop 安装
      • Flink 安装
      • DolphinScheduler 安装
      • Zeppelin 安装
      • Redis 安装
      • Doris安装
      • Celeborn安装
      • Ozone安装
      • Impala安装
      • Cloudbeaver 安装
      • Ambari Metrics安装
      • Solr安装
      • Ranger 安装
      • Trino安装
      • Paimon安装
      • Hudi安装
      • Atlas 安装
      • Superset 安装
      • Livy 安装
      • Alluxio 安装
      • Hue 安装
      • Knox 安装
    • 进阶安装技巧(需开启Kerberos)
      • Ambari Metrics 进阶安装技巧
      • Atlas 进阶安装技巧
    • 高可用安装(有难度)
      • Zookeeper
      • Hadoop-Namenode
      • Yarn-ResourceManager
      • Hive
      • Hbase
      • Kafka
      • DolphinScheduler
      • Redis
      • Doris
      • Celeborn
      • Ozone
      • Ranger
  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos
      • KDC服务初始化安装
        • KDC服务初始化安装(RHEL篇)
        • KDC服务初始化安装(Ubuntu篇)
      • 开启Kerberos认证
        • Ambari 中开启 Kerberos 认证流程详解
        • [不看会报错]-Atlas开启准备工作
        • [不看会报错]-Zeppelin开启准备工作
        • [不看会报错]-Impala开启准备工作
        • [不看会报错]-Trino开启准备工作
      • 关闭Kerberos认证
        • Ambari 中关闭 Kerberos 认证流程详解
    • FreeIPA 认证
      • FreeIPA服务端初始化
        • FreeIPA Server 安装指导
      • FreeIPA客户端初始化及Ambari开启IPA认证
        • [Step1]-FreeIPA Client 安装与入域实战
        • [Step2]-FreeIPA 初始化核心用户
        • [Step3]-Ambari 中开启 Kerberos 认证流程详解
        • [Step3-1]-krb5-conf template调整
      • 部分踩坑-问题发现
        • Ambari Server 启动失败:no valid keystore
        • FreeIPA Client 导致 Ambari 权限异常问题排查
      • 部分踩坑-完美解决
        • Ambari Server 启动失败:no valid keystore
      • 辅助测试
        • FreeIPA Client 调试安装速记
        • Ambari Server 证书调试安装速记
    • 其他优化技巧
      • Atlas-Ranger-StringUtils缺失
      • Atlas-Ranger-commons-compress缺失
    • 部分组件踩坑合集
      • Test Kerberos Client报错:Failed to kinit
      • KERBEROS SERVICE CHECK 报错
      • Ambari开启Kerberos认证加密类型错误
      • [开启Kerberos]-Solr启动失败处理
      • [开启Kerberos]-Kafka启动失败处理
      • [开启Kerberos]-Atlas启动-Hbase权限异常
      • [开启Kerberos]-Atlas启动-Solr权限异常
      • [开启Kerberos]-Atlas启动-Kafka权限异常
      • [开启Kerberos]-Hive服务检查异常处理
      • [开启Kerberos]-Trino启动-配置文件处理
      • [开启Kerberos]-Trino启动-缺失PEM证书处理
      • [开启Kerberos]-Trino启动-连接Hive失败
      • [关闭 Kerberos]-Kafka 注销异常
      • [关闭 Kerberos]-Hive 注销异常
      • Kerberos 客户端模板渲染异常处理(临时处理)
      • Kafka 启动兼容 Kerberos 源码级修改
      • Kerberos 客户端模板渲染异常处理(源码修改)
    • 实战技巧
      • Knox 接入 Trino web-ui 解决方案
      • [开启Kerberos]-Trino启动-配置模板
      • [Knox适配]-Trino-474-转发规则魔改
    • 其他技巧
      • Ambari Security 开启步骤
  • Ranger 旧版专题

    • 实战 Ranger
    • Ranger HA 旧发行版
      • 环境准备
        • [Step1] Haproxy 规划与环境安装
      • Kerberos准备
        • [Step2] 统一访问域名的 Kerberos 票据生成
        • [Step3] 调整 Kerberos Client 配置
      • 安装指导
        • [Step4] Ambari页面开启 Ranger Admin 高可用
        • [Step5] 对齐 Ranger HA 的凭证处理
    • Ranger HA ttr-release
      • [Step2] Ranger Admin HA 自动化安装
    • FreeIPA 与 LDAP
      • [Step1] Ambari 安装 Ranger 并配置 FreeIPA + LDAP
      • [Step2] 制作 Ranger Usersync 证书并应用组件
      • [Step3] 制作 Ranger Admin 证书并应用组件
      • [Step4]Ranger HDFS Repository 创建失败修复
      • [Step5]Ranger HBase Repository 创建失败修复
    • 踩坑汇总
      • 调用 Ranger API 返回 403 问题
      • Ranger Admin LDAP 认证报 Bad credentials 分析
    • 解决方案
      • Ranger Admin LDAP 认证报 Bad credentials 处理
      • Ranger HA 虚拟域名 Principal 缺失修复
      • Ranger Usersync 证书快速导入脚本(LDAPS)
      • Ranger Admin 证书快速导入脚本
      • Ranger HDFS Repository 快速处理
      • Ranger HBase / Yarn Repository 快速处理
  • 开发环境

    • Ambari-Env
      • 环境准备
      • 开始使用
    • 工具与镜像
      • Maven镜像加速
      • Gradle镜像加速
      • Node.js 多版本共存方案
      • Npm镜像加速
      • Bower镜像加速
      • R环境安装+一键安装脚本
      • PostgreSQL 快速安装
  • Ambari 编译

    • Ambari 源码编译
    • 前端开发
    • 后端开发
    • Ambari Web本地启动
  • Bigtop 编译

    • 官方组件编译
    • 扩展组件编译
    • 工具与镜像
      • Ivy配置私有镜像仓库
      • APT仓库增量更新
      • Temurin JDK 23快速安装
  • Ambari 深度专题

    • Ambari Server 原理
    • Ambari Metrics 解读
  • Bigtop 方法论

    • Bigtop 深度专题
  • 自定义集成

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 各组件代码
    • 通用代码模板
  • 报错解决

    • Ambari 报错
      • Ambari Views
        • MDEP-187 从根因到修复
        • Loading node labels问题解决
      • Ambari
        • phantomjs下载失败问题
        • 编译问题:GCC 安装与配置
        • bower CERT_HAS_EXPIRED 错误问题
        • Ambari-admin包出现bower install错误
        • Cannot run program "rpmbuild"
        • Python: No such file or directory
        • Yarn解压报错EOFException排查与解决
        • Rpm-maven-plugin与shebang兼容性报错
        • Rpm-maven-plugin 最佳实践
        • Bower install拉取失败解决
        • 缺少 python3 报错解决
        • Python(>=2.6) but is not installed
        • SSL_ERROR_SYSCALL 的修复方法
      • Ambari-infra
        • org.apache.commons.io does not exist
        • maven-compiler-plugin:3.3:compile
        • java.security.InvalidAlgorithmParameterException
        • ambari-infra-solr-plugin依赖报错解决方案
      • Ambari-metrics
        • psutil 缺失与 archive_util 导入错误
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
    • Bigtop 报错
      • Hadoop
        • /usr/bin/env: python3: No such file or directory 问题
        • error [email protected]: The engine "node" is incompatible with this module 错误
        • CMake 3.1 or higher is required. You are running version 2.8.12.2 错误
        • fuse is needed by hadoop_3_2_0-3.3.4-1.el7.x86_64 错误
        • Cyrus SASL/GSASL 缺失解决
        • Protobuf PROTOC LIBRARY NOTFOUND
        • EVP CIPHER CTX block size 报错
        • TIRPC_INCLUDE_DIRS NOTFOUND解决
        • 缺失 redhat-rpm-config 报错
      • Spark
        • evaluate,httr2,knitr 包不存在解决办法
        • Pandoc 缺失导致 SparkR 构建失败
      • Trino
        • Trino requires Temurin or Oracle JDK for development
        • GLIBC 与 GLIBCXX 版本过低
      • Hudi
        • javax.annotation.Nullable 缺失
        • 缺失 everit-json-schema 依赖
      • Paimon
        • 缺失 Jindo 依赖
      • Livy
        • apache-incubator-disclaimer-resource-bundle 缺失
      • Flink
        • .git can't be found during `prepare`
        • Angular CLI requires Node >=14.15
        • npm run ci-check 报错退出码 3
        • TypeScript 类型声明错误
      • Atlas
        • Atlas 集成 JanusGraph 启动时报 Solr6Index 实例化失败解决
      • Superset
        • urllib3 v2 only supports OpenSSL 1.1.1+
      • Jsvc
        • jsvc 依赖缺失导致 rpm 构建失败
      • Zookeeper
        • ZooKeeper 构建(缺少 hostname 命令)
        • cppunit-devel 依赖缺失解决方案
      • Hive
        • org.apache.logging.slf4j.Log4j.Marker is not public 解决方案
      • Sqoop
        • xmlto is needed by 解决方法
        • lsb_release、rsync 缺失导致构建中断
        • asciidoc 警告与 relnotes.py 语法不兼容分析
      • Cloudbeaver
        • SelectExpressionItem cannot be resolved 报错分析
      • Bigtop-select
        • bigtop-select 打包缺 compat 报错修复
        • bigtop-select 打包缺 control 文件报错修复
      • Knox
        • xmlsectool 依赖缺失问题解析
        • webhdfs-test 依赖收敛冲突问题处理
        • Invalid keystore format 问题处理
        • Knox is not allowed to impersonate admin
        • X-Forwarded-For 406 错误的原因与处理
      • Hue
        • Hue 访问 Hadoop 权限问题
        • Hue 访问 Yarn 权限问题
        • Hue 访问 Impala 时间格式问题
        • requests-kerberos 兼容性问题
        • libmariadb.so.3 缺失导致 syncdb 失败
        • 生产环境下解决方案——Hue/query_api.py
  • 系统适配

    • Kylin V10系列
      • 通用部分
        • not set for current OS
          • 解读-不支持操作系统解读
          • 解决-增加系统支持范围(一)
          • 解决-增加系统支持范围(二)
          • 解决-增加系统支持范围(三)
          • 解决-增加系统支持范围(四)
        • 解决-TLS1.3导致依赖下载失败终极办法
    • Rocky系列
      • 案例-Ambari重启失败
        • 解读-Ambari3.0.0重启失败问题
        • 解决-追加日志锚点
        • 解决-进一步分析与改造[一]
        • 解决-进一步分析与改造[二]
      • 案例-数据库连接问题
        • 解读-安装完毕后出现Unable to load version data from server
      • 案例-日志级别控制问题
        • 解读-Ambari3.0.0无法调整日志输出级别
        • 解决-临时处理日志级别不生效
        • 解决-源码级处理日志不生效
      • 案例-找不到snappy-devel
        • 解决-HDFS报snappy-devel包缺失现象
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Ubuntu系列
      • 案例-首次编译环境处理
        • 解决-dpkg-buildpackage依赖缺失
        • 解决-devscripts依赖缺失
        • 首次编译-环境初始化
      • 案例-Bigtop适配Debian
        • 解读-bigtop-select支持deb
        • 解决-Step1-解除限制拥抱deb
        • 解决-Step2-补全代码结构
      • 案例-安装中遇到的问题
        • 解读-APT私有镜像验证失败剖析
        • 解决-快速处理APT私有镜像验证失败问题
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Centos系列
    • OpenEuler系列
  • 监控与调优

    • Ambari-Metrics插件
    • Infinity插件
      • 准备工作
        • Ambari-Metrics插件失效原因
        • Infinity 插件选择与安装小技巧
        • Grafana9.3.2+Infinity2.3.1
          • Grafana快速安装Infinity插件
        • Grafana11.5.2+Infinity3.4.1
          • Grafana快速安装Infinity插件
      • 创建最简DEMO
        • Grafana9.3.2+Infinity2.3.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
        • Grafana11.5.2+Infinity3.4.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
    • 组件配置调优
      • HDFS
        • [0001]访问 HDFS Web UI Logs Unauthorized 失败
        • [0001]>>>>>>Hadoop管理员配置优化
      • RANGER
        • [0002]Ranger 审计日志时间与系统时间不一致调整
        • [0002]>>>>>日期统一规则调优
        • [0001]Resource lookup fail 线程池超时优化
        • [0001]>>>>>>线程池与超时参数调优
    • 组件调优指南
    • 1v1指导调优
  • BUG临时处理

    • 版本-v2.2.2-以前
      • [22213]Ambari 3.0.0 滚动重启只执行一台主机修复
      • [22213]解决办法
      • [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
      • [22212]解决办法
      • [22211]Atlas 缺失 __AtlasUserProfile
      • [22211]解决办法
      • [22210]Atlas Hook 无权限访问 Kafka Topic
      • [22210]解决办法
      • [22209]Ranger Kafka Lookup 缺少 JAAS 配置
      • [22209]解决办法
      • [22208]Atlas Hook 消费 Kafka 报错
      • [22208]解决办法
      • [22207]Hue 内访问 SparkSql 失败
      • [22207]解决办法
      • [22206]Ranger 调用 Knox Topologies 失败
      • [22206]解决办法
      • [22205]Ranger Admin 轮刷ZK 缺失 JAAS
      • [22205]解决办法
      • [22204]KNOX policymgr-ssl 启动告警
      • [22204]解决办法
      • [22203]Hue 服务启动后秒退
      • [22203]解决办法
      • [22202]Hue 启动失败: hadoop 用户不存在
      • [22202]解决办法
      • [22201]Hive 使用 Tez 引擎插入数据失败
      • [22201]解决办法
    • 版本-v2.1.0-以前
      • Sqlline 启动卡死问题处理
  • 实验室

    • VIEW插件
      • CAPACITY-SCHEDULER-VIEW
        • Ambari CAPACITY-SCHEDULER 插件安装详解
      • FILE-VIEW
        • Ambari FILE-VIEW 插件安装详解
    • JIRA速查
    • 虚拟环境思路
GitHub (opens new window)
  • Ambari 深度专题

  • Bigtop 方法论

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

    • 试读&介绍

    • Ambari-Metrics解读【简写AMS】

      • 源码下载及环境初始化
      • 项目目录及模块解读
      • AMS-Collector剖析

      • AMS-Collector表结构实战

        • [监控表] — 基础表结构梳理
        • [监控表] — 业务表结构梳理
        • [监控表] — 基础表和业务表关联关系
          • 一、整体概览
          • 二、基础表
          • 三、业务数据表
          • 四、UUID 的实现与验证 —— 探究表间关系纽带
            • 4.1 源码层面
            • 4.2 表结构层面
            • 4.3 Java 端解析 hostId
            • ① 按主机分组 —— 一台主机上的多个指标
            • ② 按指标分组 —— 一个指标跨多台主机
            • ③ 更多典型组合
        • [监控表] — Java代码验证表关系
        • [监控表] — 建表切分策略
        • [监控表] — Master组件和Slave组件判别
        • [监控表] — Uuid 16 位构成全解析
      • AMS-Collector-元数据-接口实战

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

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

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

  • Redis集成实战

  • 通用代码模板

  • 各组件代码

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

[监控表] — 基础表和业务表关联关系

# 一、整体概览

AMS 的存储表分为 基础表 和 业务数据表。
二者之间的纽带,就是拼装后的 UUID(16b + 4b = 20b)。

表类别 表名示例 UUID 长度 作用说明
基础表 HOSTED_APPS_METADATA_UUID、METRICS_METADATA_UUID 4b / 16b 存放主机 ID 与指标 ID 的元数据映射
业务表 METRIC_RECORD_UUID、METRIC_AGGREGATE_UUID 等 20b / 16b 承载监控时序数据,依赖拼装的 UUID 唯一标识

提示

核心公式:
业务表 UUID = 指标 UUID (16b) + 主机 UUID (4b) = 20b

# 二、基础表

HOSTED_APPS_METADATA_UUID   # 主机信息(uuid=4b)
METRICS_METADATA_UUID       # 指标信息(uuid=16b)
INSTANCE_HOST_METADATA      # 没数据,可忽略
1
2
3
  • 4b 主机 ID → 唯一标识 host
  • 16b 指标 ID → 唯一标识 metric

这些基础表相当于字典表,为业务数据的 UUID 拼接提供元信息。

# 三、业务数据表

业务表用于存放监控时序数据,按照粒度不同分为:

粒度 表名示例 UUID 长度 说明
Cluster 聚合 METRIC_AGGREGATE_DAILY_UUID
METRIC_AGGREGATE_HOURLY_UUID 等
16b 聚合层数据,不区分主机
Host 明细 METRIC_RECORD_UUID
METRIC_RECORD_DAILY_UUID 等
20b 主机级监控,UUID = 16b+4b

其中 METRIC_TRANSIENT 用于 Collector 内部缓存,避免短时间写入延迟。

# 四、UUID 的实现与验证 —— 探究表间关系纽带

UUID 的拼装与解析,是基础表和业务表之间联系的桥梁。下面从源码、表结构和 Java 层面逐一说明。

# 4.1 源码层面

在源码中,metricsUuid 与 hostUuid 被组合成业务表的 20b 主键:

UUID 拼装逻辑

  • 前 16 字节:指标 ID(来自 METRICS_METADATA_UUID)
  • 后 4 字节:主机 ID(来自 HOSTED_APPS_METADATA_UUID)

通过这种拼接方式,一个指标在不同主机上的监控数据就能被唯一标识。换句话说,16b 与 4b 的合并正是表间关系的核心纽带。

👌 可以的,这一段可以更“丰满”,不仅要写出表结构和 GET_BYTE 的限制,还要回答 为什么会出现这种情况:

  1. Phoenix 基于 HBase 的二进制存储,本身没有字符串的截取函数来处理 BINARY 类型;
  2. UUID 在 AMS 中就是用 二进制存储的,节省空间、加速对比,但代价是查询时只能逐字节;
  3. 这也是 Phoenix 的设计选择 —— 优化写入/存储,而不是查询时的直观性。

我帮你重写并扩展一下 4.2 表结构层面:

# 4.2 表结构层面

通过 !describe 命令,可以直观看到表定义:

!describe METRIC_RECORD_UUID
!describe METRICS_METADATA_UUID
1
2

其中,METRICS_METADATA_UUID 存放了 指标名称 ↔ 应用 ID 的映射; 而 METRIC_RECORD_UUID 的 前 16 字节,正是依赖这些指标元数据来解码。

表结构截图

为什么会这样设计?

  1. 存储上的考虑

    • AMS 中的 UUID 全部以 BINARY 格式保存,而不是 VARCHAR。
    • 这样做能大幅节省存储空间(16b/20b 定长)并提高写入速度(避免字符串解析)。
    • 对于 HBase 这种面向高并发写入的场景,这是更合理的选择。
  2. 查询上的限制

    • Phoenix 的 SQL 层面对 BINARY 类型支持有限,没有像字符串那样的 substring 或 split 函数。
    • 因此在表 Join 时,无法直接“截取” UUID 的前 16 字节来对比,只能用 逐字节比对。
  3. 二进制拼接的副作用

    • 我们的 UUID 实际是由 metaUuid (16b) + hostId (4b) 拼出来的。
    • Phoenix 并不知道这 20b 里面的“前 16b”是指标、“后 4b”是主机,只能把它当成一个纯粹的二进制串。
    • 所以查询时只能靠 GET_BYTE 手工把前 16 个字节一个个拿出来匹配。

测试脚本验证

SELECT m.METRIC_NAME, COUNT(*) AS c
FROM METRIC_RECORD_UUID r
JOIN METRICS_METADATA_UUID m
  ON  GET_BYTE(r.UUID,  1)=GET_BYTE(m.UUID,  1)
 AND GET_BYTE(r.UUID,  2)=GET_BYTE(m.UUID,  2)
 AND GET_BYTE(r.UUID,  3)=GET_BYTE(m.UUID,  3)
 AND GET_BYTE(r.UUID,  4)=GET_BYTE(m.UUID,  4)
 AND GET_BYTE(r.UUID,  5)=GET_BYTE(m.UUID,  5)
 AND GET_BYTE(r.UUID,  6)=GET_BYTE(m.UUID,  6)
 AND GET_BYTE(r.UUID,  7)=GET_BYTE(m.UUID,  7)
 AND GET_BYTE(r.UUID,  8)=GET_BYTE(m.UUID,  8)
 AND GET_BYTE(r.UUID,  9)=GET_BYTE(m.UUID,  9)
 AND GET_BYTE(r.UUID, 10)=GET_BYTE(m.UUID, 10)
 AND GET_BYTE(r.UUID, 11)=GET_BYTE(m.UUID, 11)
 AND GET_BYTE(r.UUID, 12)=GET_BYTE(m.UUID, 12)
 AND GET_BYTE(r.UUID, 13)=GET_BYTE(m.UUID, 13)
 AND GET_BYTE(r.UUID, 14)=GET_BYTE(m.UUID, 14)
 AND GET_BYTE(r.UUID, 15)=GET_BYTE(m.UUID, 15)
 AND GET_BYTE(r.UUID, 16)=GET_BYTE(m.UUID, 16)
GROUP BY m.METRIC_NAME
ORDER BY c DESC
LIMIT 100;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

SQL Join 结果

执行结果表明:只有逐字节比对,才能把 METRIC_RECORD_UUID 中的数据正确关联回 METRICS_METADATA_UUID 中的指标元数据。

直观理解

下图展示了这种匹配的逻辑:

  • 左边是业务表 METRIC_RECORD_UUID 的 UUID(20b);
  • 右边是基础表 METRICS_METADATA_UUID 的 UUID(16b);
  • Phoenix Join 时只能一位一位比对,直到前 16b 全部匹配为止:

匹配逻辑截图

# 4.3 Java 端解析 hostId

Collector 在 Java 端通常不会走复杂的 SQL Join,而是直接解析 UUID 的后 4 字节,快速得到 hostId。
相比 SQL 中冗长的 GET_BYTE 逐位匹配,Java 解析的方式更直观高效,也便于后续做分组与聚合。

Java HostId 解析

我们通过实际运行结果,分别从 按主机分组 和 按指标分组 两个角度来观察 UUID 的效果。

运行结果示例:

metric=dfs.datanode.DataNodeActiveXceiversCount (app=datanode), metaUuid=8C8A97EA31104CD70427BCB95FD50720, hostId=9CDC8F97, count=1198
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.SEQUENCE_metric_checkAndPutTime_mean (app=hbase), metaUuid=8C9E2D277CC4C1EAFCEFF8C908562F20, hostId=6ED2F093, count=1233
metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC4A3D7D4F42479F7FE2968784, hostId=2D31224D, count=1211
metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC4A3D7D4F42479F7FE2968784, hostId=6ED2F093, count=1203
metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC4A3D7D4F42479F7FE2968784, hostId=9CDC8F97, count=1201
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.TASK_metric_deleteBatchTime_mean (app=hbase), metaUuid=8CC6B1BE74960BFE21E4185D67DA05B8, hostId=6ED2F093, count=1233
metric=regionserver.Server.Replay_min (app=ams-hbase), metaUuid=8CFB3174AB9BC6ABFCD6955B52DD91D0, hostId=6ED2F093, count=1163
metric=phoenix.PhoenixIndexer.PostOpenTime_98th_percentile (app=hbase), metaUuid=8D04CFF61638F8067AE2B00F5E785B7F, hostId=6ED2F093, count=1180
metric=regionserver.Server.blockCacheSize (app=hbase), metaUuid=8D089CB0CB2DE45450CEC5C1800DDBCB, hostId=6ED2F093, count=1189
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.CATALOG_metric_incrementTime_25th_percentile (app=hbase), metaUuid=8D39F4C1C42F08A1F4D9047EFEBD04F9, hostId=6ED2F093, count=1233
metric=regionserver.Server.Append_max (app=ams-hbase), metaUuid=8D5B6A674D3DCEBBE338790A79B0CADA, hostId=6ED2F093, count=1163
metric=regionserver.TableLatencies.Namespace_hbase_table_namespace_metric_scanTime_max (app=hbase), metaUuid=8D7FBF47E25AD6D2BC1D8358FEEC71B6, hostId=6ED2F093, count=1233
metric=master.Quotas.QuotaObserverChoreTime_99th_percentile (app=hbase), metaUuid=8D89DBFEC623FB1F1620D15208CD3226, hostId=6ED2F093, count=1188
metric=metricssystem.MetricsSystem.NumAllSinks (app=namenode), metaUuid=8D8DE4AE88EDB3AF6A6FBA38DA95A3D1, hostId=6ED2F093, count=1184
metric=yarn.PartitionQueueMetrics.AggregateVcoreSecondsPreempted (app=resourcemanager), metaUuid=8D955D8AB6C994198ADF34B73624F32B, hostId=6ED2F093, count=1194
metric=dfs.FSNamesystem.CapacityUsedNonDFS (app=namenode), metaUuid=8DAEB959CCD2BE3CA28BF81512F10AC7, hostId=6ED2F093, count=1180
metric=regionserver.RegionServer.RequestSize_75th_percentile (app=hbase), metaUuid=8DCEF9B4897F847BA5D4A20958851D5E, hostId=6ED2F093, count=1182
metric=ugi.UgiMetrics.RenewalFailuresTotal (app=datanode), metaUuid=8DCF5C725EBC0C9319B40737AD2F8911, hostId=2D31224D, count=1212
metric=ugi.UgiMetrics.RenewalFailuresTotal (app=datanode), metaUuid=8DCF5C725EBC0C9319B40737AD2F8911, hostId=6ED2F093, count=1212
metric=ugi.UgiMetrics.RenewalFailuresTotal (app=datanode), metaUuid=8DCF5C725EBC0C9319B40737AD2F8911, hostId=9CDC8F97, count=1214
metric=regionserver.Memory.IncreaseMemStoreSize_98th_percentile (app=hbase), metaUuid=8DD077F512E9C8F48805A2C003B27303, hostId=6ED2F093, count=1180
metric=yarn.QueueMetrics.Queue=root.default.AMResourceLimitVCores (app=resourcemanager), metaUuid=8DDFBC12B1BABF42434881873CA956ED, hostId=6ED2F093, count=1192
metric=phoenix.PhoenixIndexer.PreIndexUpdateFailureTime_95th_percentile (app=hbase), metaUuid=8DEBB338B13CC6FDD820FF4474AF099D, hostId=6ED2F093, count=1180
metric=rpc.rpc.client.NumDroppedConnections (app=namenode), metaUuid=8E156C74A6FE937E8DDB2FE600B3FA20, hostId=6ED2F093, count=1194
metric=jvm.JvmMetrics.ThreadsNew (app=datanode), metaUuid=8E1F69B81159897124FEDBFD01CFCAB8, hostId=2D31224D, count=1211
metric=jvm.JvmMetrics.ThreadsNew (app=datanode), metaUuid=8E1F69B81159897124FEDBFD01CFCAB8, hostId=6ED2F093, count=1204
metric=jvm.JvmMetrics.ThreadsNew (app=datanode), metaUuid=8E1F69B81159897124FEDBFD01CFCAB8, hostId=9CDC8F97, count=1204
metric=master.Master.numActiveHandler (app=hbase), metaUuid=8E21CFCD37DB0D2D50FFBD303FD07A90, hostId=6ED2F093, count=1196
metric=dfs.NNTopUserOpCounts.windowMs=60000.op=mkdirs.TotalCount (app=namenode), metaUuid=8E36FA66764338BDAF654605E1230D22, hostId=6ED2F093, count=117
metric=sdisk_sda2_write_count (app=HOST), metaUuid=8E45326A5DEA52D0637A34C848C4179A, hostId=2D31224D, count=1439
metric=sdisk_sda2_write_count (app=HOST), metaUuid=8E45326A5DEA52D0637A34C848C4179A, hostId=6ED2F093, count=1439
metric=sdisk_sda2_write_count (app=HOST), metaUuid=8E45326A5DEA52D0637A34C848C4179A, hostId=9CDC8F97, count=1439
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.CATALOG_metric_putTime_max (app=hbase), metaUuid=8E54BAF1FBD8DC9A5129C52420C8A8CE, hostId=6ED2F093, count=1233
metric=master.FileSystem.HlogSplitTime_75th_percentile (app=hbase), metaUuid=8E7CB80155BFD5D6F8A608D76F05AAD5, hostId=6ED2F093, count=1189
metric=thrift-one.Thrift.PauseTimeWithoutGc_99.9th_percentile (app=hbase), metaUuid=8E89C49C9537E4BB6B98452848B27AF4, hostId=6ED2F093, count=1197
metric=master.Quotas.SnapshotObserverSizeComputationTime_mean (app=hbase), metaUuid=8E9BBAB1173C348BDEE21697C62F3680, hostId=6ED2F093, count=1188
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.TASK_metric_appendTime_98th_percentile (app=hbase), metaUuid=8EA0348AFA823B4A97B889CF7C8484E5, hostId=6ED2F093, count=1233
metric=dfs.namenode.FilesRenamed (app=namenode), metaUuid=8EA2335848F98698EBDD6842EB520381, hostId=6ED2F093, count=1195
metric=phoenix.PhoenixIndexer.PostPutTime_75th_percentile (app=hbase), metaUuid=8EB422ECF212AF4852CB3526CEDA6A6E, hostId=6ED2F093, count=1180
metric=thrift-one.Thrift.TimeInQueue_max (app=hbase), metaUuid=8EB75D0FC721C1DF1D7990845E5D5B0B, hostId=6ED2F093, count=1197
metric=dfs.namenode.TransactionsBatchedInSync (app=namenode), metaUuid=8EC7390910605EB7F96A90BD7AF418AC, hostId=6ED2F093, count=1195
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.TASK_metric_checkAndPutTime_98th_percentile (app=hbase), metaUuid=8EEA2F5181FD70DA46B5CFDD7F115282, hostId=6ED2F093, count=1233
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.CATALOG_metric_getTime_25th_percentile (app=hbase), metaUuid=8EF9069C6F5E702FB4BC801E8BD10C58, hostId=6ED2F093, count=1233
metric=master.AssignmentManager.RitDuration_median (app=hbase), metaUuid=8F012B0361F7E9F5D1C016CD18269D03, hostId=6ED2F093, count=1186
metric=regionserver.TableLatencies.Namespace_hbase_table_namespace_metric_getTime_max (app=hbase), metaUuid=8F230CD08B98C9F5BACCCC919E08EF37, hostId=6ED2F093, count=1233
metric=master.AssignmentManager.SplitTime_99th_percentile (app=hbase), metaUuid=8F387A4935D1BFD8B70671A03574DA08, hostId=6ED2F093, count=1186
metric=dfs.namenode.CreateFileOps (app=namenode), metaUuid=8F4CB37CAF3D248D1B9E818A3A9A4DB9, hostId=6ED2F093, count=1195
metric=master.AssignmentManager.SplitTime_25th_percentile (app=hbase), metaUuid=8F5FE8D990752BB0FE5838716F8CF2A8, hostId=6ED2F093, count=1186
metric=regionserver.TableLatencies.Namespace_hbase_table_meta_metric_tableWriteQueryPerSecond_mean_rate (app=hbase), metaUuid=8F6026DF55E178E6003A14EB76F5FDE1, hostId=6ED2F093, count=1233
metric=Phoenix,sub=CLIENT.PHOENIX.COUNT_RPC_CALLS (app=hbase), metaUuid=8F67FABD8ED5925001451CE038CC737E, hostId=6ED2F093, count=1181
metric=jvm.JvmMetrics.MemNonHeapCommittedM (app=jobhistoryserver), metaUuid=8F9B3D1E8283A0B97314CCCC0F5E81E6, hostId=9CDC8F97, count=1201
metric=regionserver.Server.Get_median (app=hbase), metaUuid=8F9D64CAB70C7167F94C81F45C62D855, hostId=6ED2F093, count=1189
metric=regionserver.Server.Append_75th_percentile (app=hbase), metaUuid=8FC32CBF667B48B5EDF336EFA3CAD0A7, hostId=6ED2F093, count=1189
metric=regionserver.Replication.source.shippedKBs (app=hbase), metaUuid=8FFFF6592ABA165802547C415FCF0EF2, hostId=6ED2F093, count=1282
metric=dfs.datanode.WriteBlockOpAvgTime (app=datanode), metaUuid=902AE34E673D88EF6058F71C8B807283, hostId=2D31224D, count=1206
metric=dfs.datanode.WriteBlockOpAvgTime (app=datanode), metaUuid=902AE34E673D88EF6058F71C8B807283, hostId=6ED2F093, count=1200
metric=dfs.datanode.WriteBlockOpAvgTime (app=datanode), metaUuid=902AE34E673D88EF6058F71C8B807283, hostId=9CDC8F97, count=1198
metric=master.Quotas.SnapshotObserverSizeComputationTime_99th_percentile (app=hbase), metaUuid=902B2D799CE3A99664F540CD9BD0C166, hostId=6ED2F093, count=1188
metric=regionserver.Memory.UnblockedFlushes_75th_percentile (app=hbase), metaUuid=9045848B27281E7533E6619F37C4073A, hostId=6ED2F093, count=1180
metric=regionserver.TableLatencies.Namespace_hbase_table_namespace_metric_putTime_99th_percentile (app=hbase), metaUuid=9056CA638E1B1C16BA4C63B2DA9FA1D1, hostId=6ED2F093, count=1233
metric=phoenix.PhoenixIndexer.PreIndexUpdateFailureTime_min (app=hbase), metaUuid=907C47967137447E2A7378A9798E5E3B, hostId=6ED2F093, count=1180
metric=regionserver.RegionServer.RequestSize_95th_percentile (app=hbase), metaUuid=90B09D0918D9F253ECEF36D0A13C3EC4, hostId=6ED2F093, count=1182
metric=master.FileSystem.MetaHlogSplitSize_median (app=hbase), metaUuid=90D15E688DABE90DCF48BA352B99B1D5, hostId=6ED2F093, count=1189
metric=rpcdetailed.rpcdetailed.client.DeleteNumOps (app=namenode), metaUuid=910706EE8C42C053FE515374D3111073, hostId=6ED2F093, count=1197
metric=regionserver.RegionServer.authenticationSuccesses (app=hbase), metaUuid=917DF5CB20E7E390DB2C228595C7D70B, hostId=6ED2F093, count=1182
metric=metricssystem.MetricsSystem.Sink_timelineNumOps (app=namenode), metaUuid=9189EA9D6FF8DF2C54E55041A9F5BAAD, hostId=6ED2F093, count=1184
metric=default.StartupProgress.LoadingFsImageElapsedTime (app=namenode), metaUuid=91A71853173028B621AD0AC5D667641E, hostId=6ED2F093, count=1194
metric=thrift-one.Thrift.PauseTimeWithGc_25th_percentile (app=hbase), metaUuid=91B6289FC72894F529D073BA50B561BC, hostId=6ED2F093, count=1197
metric=regionserver.Server.CompactionOutputSize_median (app=hbase), metaUuid=91C34FCAF4C1ECE868FFB9B46515D488, hostId=6ED2F093, count=1189
metric=regionserver.TableLatencies.Namespace_hbase_table_namespace_metric_checkAndDeleteTime_99th_percentile (app=hbase), metaUuid=91C866A2A040465E233C9DF9B1125C37, hostId=6ED2F093, count=1233
metric=dfs.FSNamesystem.NumInServiceLiveDataNodes (app=namenode), metaUuid=91DBACACE69DB70033479CF0D625C2D4, hostId=6ED2F093, count=1180
metric=regionserver.WAL.SyncTime_95th_percentile (app=hbase), metaUuid=91E88EEEB234566CF69986D7ED8A6269, hostId=6ED2F093, count=2435
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.TASK_metric_scanTime_99.9th_percentile (app=hbase), metaUuid=91F64A35CFAEC3CB6EAA3EF9880D3EDB, hostId=6ED2F093, count=1233
metric=regionserver.TableLatencies.Namespace_hbase_table_namespace_metric_appendTime_mean (app=hbase), metaUuid=91F8367D711A164D11AA1F28CAEF91E5, hostId=6ED2F093, count=1233
metric=yarn.PartitionQueueMetrics.Queue=root.default.ActiveApplications (app=resourcemanager), metaUuid=920ED0E8A036792D70F4B75AE8D5CCDB, hostId=6ED2F093, count=1192
metric=jvm.JvmMetrics.ThreadsRunnable (app=hbase), metaUuid=9213810464DDC0D7B4A9205AB3EEC762, hostId=6ED2F093, count=3688
metric=regionserver.Memory.UnblockedFlushes_99th_percentile (app=hbase), metaUuid=92197BC9219F0091BBD4FECAED3AEB1B, hostId=6ED2F093, count=1180
metric=ugi.UgiMetrics.LoginSuccessAvgTime (app=hbase), metaUuid=922D24BF58C4859B5A7FEC87C2B6A0E8, hostId=6ED2F093, count=3579
metric=master.AssignmentManager.MergeTime_25th_percentile (app=hbase), metaUuid=9234FCAC86AADFBCA9A2AE282022DFC9, hostId=6ED2F093, count=1186
metric=sdisk_loop0_write_time (app=HOST), metaUuid=92430B7C874FF94C00480DB5B624482B, hostId=2D31224D, count=1439
metric=sdisk_loop0_write_time (app=HOST), metaUuid=92430B7C874FF94C00480DB5B624482B, hostId=6ED2F093, count=1439
metric=sdisk_loop0_write_time (app=HOST), metaUuid=92430B7C874FF94C00480DB5B624482B, hostId=9CDC8F97, count=1439

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# ① 按主机分组 —— 一台主机上的多个指标

以 hostId=6ED2F093 为例,这台主机同时运行了 HBase RegionServer 和 NameNode 相关组件。
同一个 hostId 下可以找到多个不同的指标:

metric=regionserver.Server.blockCacheSize (app=hbase), metaUuid=8D089CB0..., hostId=6ED2F093
metric=regionserver.Memory.IncreaseMemStoreSize_98th_percentile (app=hbase), metaUuid=8DD077F5..., hostId=6ED2F093
metric=regionserver.TableLatencies.Namespace_default_table_SYSTEM.SEQUENCE_metric_checkAndPutTime_mean (app=hbase), metaUuid=8C9E2D27..., hostId=6ED2F093
metric=dfs.FSNamesystem.CapacityUsedNonDFS (app=namenode), metaUuid=8DAEB959..., hostId=6ED2F093
metric=rpc.rpc.client.NumDroppedConnections (app=namenode), metaUuid=8E156C74..., hostId=6ED2F093
1
2
3
4
5

可以看到:

  • RegionServer 部分关注表延迟、缓存大小、MemStore 内存;
  • NameNode 部分则记录了存储用量、RPC 连接情况;
  • 但它们共享同一个 hostId,说明都属于同一台物理/逻辑主机。

👉 这里体现了 “一个 hostId 对应多个 metaUuid” 的逻辑。

# ② 按指标分组 —— 一个指标跨多台主机

再看另一个场景:同一个指标在多台主机上都有采集。 以 dfs.FsVolume.TotalDataFileIos 为例:

metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC..., hostId=2D31224D
metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC..., hostId=6ED2F093
metric=dfs.FsVolume.TotalDataFileIos (app=datanode), metaUuid=8CA477CC..., hostId=9CDC8F97
1
2
3

这里:

  • metaUuid 相同 → 说明是同一个指标定义(磁盘 IO 次数);
  • hostId 不同 → 说明该指标在三台 DataNode 主机上都有上报;
  • 最终形成了“一指标,多主机”的监控数据集合。

👉 这里体现了 “一个 metaUuid 对应多个 hostId” 的逻辑。

# ③ 更多典型组合

为了更直观,我们再看几个常见指标:

指标名称 metaUuid 主机分布 (hostId) 说明
jvm.JvmMetrics.ThreadsNew 8E1F69B8... 2D31224D / 6ED2F093 / 9CDC8F97 JVM 新建线程数,三台 DataNode 都有
ugi.UgiMetrics.RenewalFailuresTotal 8DCF5C72... 2D31224D / 6ED2F093 / 9CDC8F97 UGI 认证失败次数,分布在多台主机
regionserver.Server.blockCacheSize 8D089CB0... 6ED2F093 HBase 缓存大小,仅出现在 RegionServer 节点

通过这些案例,我们能更清晰地看到:

  • JVM 和 UGI 类指标,属于通用型 → 所有 DataNode 主机都会上报;
  • RegionServer 缓存指标则只存在于 RegionServer 节点 → 因此只有单个 hostId。
#Ambari-Metrics#源码解析#Ambari#HBase#Phoenix
[监控表] — 业务表结构梳理
[监控表] — Java代码验证表关系

← [监控表] — 业务表结构梳理 [监控表] — Java代码验证表关系→

最近更新
01
当前版本 2026/06
06-05
02
Step7—Mariadb初始化
03-23
03
【Kylin V10 aarch64】强力卸载脚本 aarch64
03-22
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式