TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 开启 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • 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集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 开启 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • 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集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 通用部分

    • not set for current OS

      • 解读-不支持操作系统解读
      • 解决-增加系统支持范围(一)
      • 解决-增加系统支持范围(二)
        • 一、前情回顾
        • 二、源码文件结构与加载机制
        • 三、完整文件示例
        • 四、修改说明与结构解析
        • 五、为什么不直接放进 redhat 段落?
          • 1. RedHat 段落是核心定义区
          • 2. Kylin 是国产化延展系统
          • 推荐写法
        • 六、安装中的问题
      • 解决-增加系统支持范围(三)
      • 解决-增加系统支持范围(四)
    • 解决-TLS1.3导致依赖下载失败终极办法
  • SYS-Kylin V10
  • 通用部分
  • not set for current OS
JaneTTR
2025-10-14
目录

解决-增加系统支持范围(二)

os_family 专题

本章节的修改位置如下:

ambari-common/src/main/python/ambari_commons/resources/os_family.json

# 一、前情回顾 从 OSCheck 继续

在上一节中,我们扩展了 os_check.py,让 Ambari 能够正确识别出系统类型为 Kylin。
但仅仅识别出系统名称还不够 —— Ambari 仍然不知道 Kylin 属于哪个系统家族(Family)。

而 Ambari 的系统兼容性判断依托于一份“家族定义文件”:

os_family.json
它是系统识别的第二个核心组件,用来确定“当前系统属于哪个家族”,
例如:

  • Rocky 属于 RedHat 家族;
  • OpenEuler 属于 RedHat 家族;
  • Debian 属于 Ubuntu 家族。

因此,为了让 Ambari 能够顺利在 Kylin 上初始化和部署,我们需要在该文件中增加映射定义。

# 二、源码文件结构与加载机制

文件路径如下:

ambari-common/src/main/python/ambari_commons/resources/os_family.json
1

Ambari 启动时,会通过 OSConst.initialize_data() 方法加载此文件, 并生成以下内部数据结构:

名称 含义 来源
OS_FAMILY_COLLECTION 系统家族集合 mapping 中的每个家族定义
OS_COLLECTION 所有发行版标识集合 各家族中的 distro 数组
FAMILY_COLLECTION 家族名称集合 顶层 mapping 键名
OS_TYPE_ALIASES 系统别名映射 文件中的 aliases 节点

这些数据被 OSCheck.is_in_family() 和 OSCheck.is_redhat_family() 调用,用于判定继承关系。

小结

os_check.py 负责识别类型, 而 os_family.json 则负责建立家族血统关系。 两者结合才能让 Ambari 判断:某系统是否“属于” RedHat。

# 三、完整文件示例 完整版参考

{
  "mapping": {
    "redhat": {
      "distro": [
        "redhat",
        "rhel",
        "centos",
        "oraclelinux",
        "ascendos",
        "xenserver",
        "oel",
        "ovs",
        "cloudlinux",
        "slc",
        "scientific",
        "psbm",
        "centos linux",
        "rocky"
      ],
      "versions": [
        6,
        7,
        8,
        9
      ]
    },
    "redhat-ppc": {
      "extends": "redhat",
      "distro": [
        "redhat-ppc",
        "centos-ppc"
      ],
      "versions": [
        6,
        7
      ]
    },
    "openeuler": {
      "extends": "redhat",
      "distro": [
        "openeuler"
      ],
      "versions": [
        22
      ]
    },
    "fedora": {
      "extends": "redhat",
      "distro": [
        "fedora"
      ],
      "versions": [
        36,
        38
      ]
    },
    "amazonlinux": {
      "extends": "redhat",
      "distro": [
        "amazonlinux"
      ],
      "versions": [
        2
      ]
    },
    "debian": {
      "extends": "ubuntu",
      "distro": [
        "debian"
      ],
      "versions": [
        10,
        11
      ]
    },
    "ubuntu": {
      "distro": [
        "ubuntu"
      ],
      "versions": [
        20,
        22
      ]
    },
    "suse": {
      "distro": [
        "sles",
        "sled",
        "opensuse",
        "suse"
      ],
      "versions": [
        11,
        12
      ]
    },
    "winsrv": {
      "distro": [
        "win2008server",
        "win2008serverr2",
        "win2012server",
        "win2012serverr2"
      ],
      "versions": [
        6
      ]
    },
    "kylin": {
      "extends": "redhat",
      "distro": [
        "kylin"
      ],
      "versions": [
        10
      ]
    }
  },
  "aliases": {
    "suse11sp3": "suse11"
  }
}
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

# 四、修改说明与结构解析

image-20251015152551985

在原始文件中,我们仅需在 "mapping" 节点下增加如下内容:

"kylin": {
"extends": "redhat",
"distro": ["kylin"],
"versions": [10]
}
1
2
3
4
5
字段名 含义 示例
extends 继承的父系统家族 "redhat"
distro /etc/os-release 中的发行版标识 "kylin"
versions 可识别版本号列表 [10]

为什么要这样写?

这段定义让 Ambari 理解「Kylin 属于 RedHat 家族」, 从而在执行包管理、模板渲染、脚本生成等阶段自动复用 RedHat 的逻辑。

# 五、为什么不直接放进 redhat 段落?

很多人第一反应是:

“既然 Kylin 兼容 RHEL,直接在 redhat 的 distro 里加一个 ‘kylin’ 不就好了?”

但这样做会造成识别逻辑上的混乱。原因如下👇

# 1. RedHat 段落是核心定义区

"redhat": {
"distro": ["redhat", "rhel", "centos", "rocky"],
"versions": [6, 7, 8, 9]
}
1
2
3
4

这里是 RedHat 官方系的核心分支,不适合混入衍生系统。

# 2. Kylin 是国产化延展系统

  • 底层兼容 RHEL 8;
  • 在内核、包签名、工具链等层面均做过深度定制;
  • Kylin SP3 甚至基于 OpenEuler 20.03。

因此,它既“像 RedHat”,又不完全相同。 这时就应该单独成族,通过 extends 明确继承关系。

# 推荐写法

"kylin": {
"extends": "redhat",
"distro": ["kylin"],
"versions": [10]
}
1
2
3
4
5

# 六、安装中的问题

当修改完成后,重新启动 Ambari 并进入安装向导, 即可在“操作系统选择”界面中看到新增的 Kylin 10 选项:

image-20251015164929781

界面变化

新增的 Kylin 10 表示该系统族群已被识别, 可以在界面中为其单独配置仓库镜像源。

下一节预告

接下来我们将讲解 镜像源如何植入。

#Ambari#Kylin V10#OSCheck#os_family.json#系统识别#源码修复
解决-增加系统支持范围(一)
解决-增加系统支持范围(三)

← 解决-增加系统支持范围(一) 解决-增加系统支持范围(三)→

最近更新
01
Ambari开启Kerberos认证加密类型错误 Kylin V10
11-05
02
KERBEROS SERVICE CHECK 报错
11-04
03
Test Kerberos Client报错:Failed to kinit
11-04
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式