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

JaneTTR

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

  • 安装与使用

    • Ambari Plus 安装

      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
          • 必须 ambari plus 数据库初始化文件
          • 导入方式
          • 初始化 SQL
      • 安装部署
    • 组件安装

    • 开启高可用

    • 权限与安全专题

    • Ambari Plus Monitor

    • 常见问题

  • 发布与支持

  • 会员与访问

目录
必须 ambari plus 数据库初始化文件
导入方式
初始化 SQL

必须 ambari plus 数据库初始化文件

必须ambari plus 数据库初始化文件

Ambari Plus 3.0.0 在官方 Ambari 数据库上增加了租户、用户归属、权限绑定、审计总账和默认集群归属等表。新装环境里,官方 Ambari DDL 只能创建原生表;如果少了这份增量 DDL,服务可以启动,但进入权限控制面、租户管理或欢迎语相关页面时就会出现数据缺失。

必需

这一步必须和官方 Ambari DDL 使用同一个数据库。本文示例库名是 ambari,不要单独创建 ambari_plus 库,也不要把这份 SQL 导入到 Hive、Ranger 或其他组件库里。

# 导入方式

如果前面已经按 Step9 创建了 ambari 库和 ambari 用户,把本文 SQL 保存为 Ambari-Plus-DDL-MySQL-CREATE.sql,然后在核心节点执行:

mysql -uambari -p ambari < Ambari-Plus-DDL-MySQL-CREATE.sql
1

导入后建议马上查两个结果:第一,关键表是否存在;第二,内置 root 租户是否已经写入。

mysql -uambari -p -D ambari -N -e "SHOW TABLES LIKE 'ambari_plus_tenant';"
mysql -uambari -p -D ambari -e "SELECT tenant_key,status FROM ambari_plus_tenant;"
1
2

能看到 ambari_plus_tenant,并且 root 租户状态是 ACTIVE,这份增量 DDL 就算落库成功。

# 初始化 SQL

下面这份 SQL 保留建表、索引和基线数据,不依赖表注释元数据,适合 MySQL / MariaDB 新装环境初始化使用。


-- Ambari Plus 租户控制面、默认集群归属与租户审计表结构。
-- 3.0.3 新装初始化 CREATE SQL。Ambari 基础库初始化完成后执行一次。
-- 每个数据库目录只保留一个 CREATE 文件,后续字段直接并入本文件。

-- 表:ambari_plus_tenant
-- 租户主表。用于初始化内置 root 租户,不改变 Ambari 登录流程。
CREATE TABLE IF NOT EXISTS ambari_plus_tenant(
  tenant_key VARCHAR(100) NOT NULL COMMENT '租户标识,默认 root,可用于租户上下文',
  display_name VARCHAR(255) NOT NULL COMMENT '租户展示名称',
  description VARCHAR(1024) COMMENT '租户说明',
  status VARCHAR(32) NOT NULL COMMENT '租户状态,如 ACTIVE、DISABLED',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_tenant PRIMARY KEY (tenant_key)
) COMMENT='租户主表,用于初始化内置 root 租户,不改变 Ambari 登录流程';

-- 表:ambari_plus_user
-- 平台用户主表。按集群身份域保存租户归属需要的用户标识,不保存密码。
CREATE TABLE IF NOT EXISTS ambari_plus_user(
  user_key VARCHAR(512) NOT NULL COMMENT '平台用户主键,格式为 clusterName::userName',
  cluster_name VARCHAR(255) NOT NULL COMMENT 'Ambari 集群名称,也是用户所属 LDAP 身份域',
  user_name VARCHAR(255) NOT NULL COMMENT '平台用户名,对应该集群 LDAP 用户名',
  display_name VARCHAR(255) NOT NULL COMMENT '用户展示名称',
  auth_source VARCHAR(32) NOT NULL COMMENT '认证来源,如 AMBARI、LDAP',
  status VARCHAR(32) NOT NULL COMMENT '用户状态,如 ACTIVE、DISABLED',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_user PRIMARY KEY (user_key)
) COMMENT='平台用户主表,按集群身份域保存租户归属需要的用户标识,不保存密码';

-- 表:ambari_plus_user_checkin
-- 登录欢迎语用户访问节奏表。记录最近登录和上次登录,不保存凭据。
CREATE TABLE IF NOT EXISTS ambari_plus_user_checkin(
  user_name VARCHAR(255) NOT NULL COMMENT 'Ambari 登录用户名',
  display_name VARCHAR(255) COMMENT '用户展示名称',
  previous_login_time BIGINT COMMENT '本次登录前的最近一次登录时间,Unix 毫秒',
  last_login_time BIGINT COMMENT '最近一次登录时间,Unix 毫秒',
  last_active_time BIGINT COMMENT '最近一次活跃时间,Unix 毫秒',
  login_count BIGINT NOT NULL DEFAULT 0 COMMENT '累计登录次数',
  created_time BIGINT NOT NULL COMMENT '记录创建时间,Unix 毫秒',
  updated_time BIGINT NOT NULL COMMENT '记录最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_user_checkin PRIMARY KEY (user_name)
) COMMENT='登录欢迎语用户访问节奏表,记录最近登录和上次登录,不保存凭据';

-- 表:ambari_plus_tenant_member
-- 租户成员关系表。按集群身份域支持一个用户归属多个租户。
CREATE TABLE IF NOT EXISTS ambari_plus_tenant_member(
  membership_key VARCHAR(128) NOT NULL COMMENT '成员关系唯一标识,由集群、租户和用户组合生成',
  tenant_key VARCHAR(100) NOT NULL COMMENT '租户标识',
  cluster_name VARCHAR(255) NOT NULL COMMENT 'Ambari 集群名称,也是成员所属 LDAP 身份域',
  user_name VARCHAR(255) NOT NULL COMMENT '平台用户名,对应该集群 LDAP 用户名',
  member_role VARCHAR(64) NOT NULL COMMENT '租户内成员角色,如 OWNER、ADMIN、MEMBER',
  status VARCHAR(32) NOT NULL COMMENT '成员关系状态',
  source VARCHAR(64) NOT NULL COMMENT '成员来源,如 SYSTEM、MANUAL、SYNC',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_member PRIMARY KEY (membership_key)
) COMMENT='租户成员关系表,按集群身份域支持一个用户归属多个租户';

-- 表:ambari_plus_role_def
-- 租户角色定义表。保存内置角色和后续扩展角色。
CREATE TABLE IF NOT EXISTS ambari_plus_role_def(
  role_key VARCHAR(100) NOT NULL COMMENT '角色唯一标识',
  display_name VARCHAR(255) NOT NULL COMMENT '角色展示名称',
  scope_type VARCHAR(32) NOT NULL COMMENT '角色作用域类型,如 TENANT、CLUSTER、GLOBAL',
  built_in INTEGER NOT NULL COMMENT '是否内置角色,1 表示内置',
  status VARCHAR(32) NOT NULL COMMENT '角色状态',
  description VARCHAR(1024) COMMENT '角色说明',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_role_def PRIMARY KEY (role_key)
) COMMENT='租户角色定义表,保存内置角色和后续扩展角色';

-- 表:ambari_plus_perm_tpl
-- 权限模板表。描述 Ambari RBAC、平台入口和 Ranger 资源权限原子。
CREATE TABLE IF NOT EXISTS ambari_plus_perm_tpl(
  permission_key VARCHAR(255) NOT NULL COMMENT '权限模板唯一标识',
  object_type VARCHAR(100) NOT NULL COMMENT '权限对象类型,如 AMBARI_RBAC、PLATFORM_ENTRY、RANGER_RESOURCE',
  object_name VARCHAR(255) NOT NULL COMMENT '权限对象名称',
  action_name VARCHAR(100) NOT NULL COMMENT '权限动作名称',
  scope_type VARCHAR(32) NOT NULL COMMENT '权限作用域类型',
  built_in INTEGER NOT NULL COMMENT '是否内置权限模板,1 表示内置',
  status VARCHAR(32) NOT NULL COMMENT '权限模板状态',
  description VARCHAR(1024) COMMENT '权限模板说明',
  CONSTRAINT PK_ap_perm_tpl PRIMARY KEY (permission_key)
) COMMENT='权限模板表,描述 Ambari RBAC、平台入口和 Ranger 资源权限原子';

-- 表:ambari_plus_role_binding
-- 租户角色绑定表。按集群身份域持久化租户角色与授权主体关系。
CREATE TABLE IF NOT EXISTS ambari_plus_role_binding(
  binding_key VARCHAR(128) NOT NULL COMMENT '角色绑定唯一标识',
  tenant_key VARCHAR(100) NOT NULL COMMENT '租户标识',
  cluster_name VARCHAR(255) NOT NULL COMMENT 'Ambari 集群名称,也是 USER / LDAP_GROUP 所属身份域',
  role_key VARCHAR(100) NOT NULL COMMENT '角色标识',
  subject_type VARCHAR(64) NOT NULL COMMENT '授权主体类型,如 USER、LDAP_GROUP',
  subject_name VARCHAR(255) NOT NULL COMMENT '授权主体名称',
  status VARCHAR(32) NOT NULL COMMENT '绑定状态',
  source VARCHAR(64) NOT NULL COMMENT '绑定来源,如 SYSTEM、MANUAL、SYNC',
  description VARCHAR(1024) COMMENT '绑定说明',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_role_bind PRIMARY KEY (binding_key)
) COMMENT='租户角色绑定表,按集群身份域持久化租户角色与授权主体关系';

-- 表:ambari_plus_tenant_audit
-- 租户审计总账。记录 bootstrap、默认集群归属、LDAP 目录写入、Ambari RBAC 下发和 Ranger/Knox 授权下发。
CREATE TABLE IF NOT EXISTS ambari_plus_tenant_audit(
  audit_id VARCHAR(128) NOT NULL COMMENT '审计记录唯一标识',
  tenant_key VARCHAR(100) COMMENT '租户标识,可为空用于系统级事件',
  cluster_name VARCHAR(255) COMMENT 'Ambari 集群名称',
  event_type VARCHAR(100) NOT NULL COMMENT '事件类型,如 BOOTSTRAP、LDAP_SYNC、RANGER_POLICY_DEPLOY',
  status VARCHAR(32) NOT NULL COMMENT '执行状态,如 SUCCESS、FAILED',
  actor VARCHAR(255) COMMENT '操作人或系统主体',
  target_type VARCHAR(100) COMMENT '目标类型,如 USER、GROUP、POLICY、TOPOLOGY',
  target_name VARCHAR(255) COMMENT '目标名称',
  execution_target VARCHAR(100) COMMENT '实际执行目标,如 AMBARI、LDAP、RANGER、KNOX',
  binding_id VARCHAR(128) COMMENT '关联的角色绑定或授权绑定标识',
  external_id TEXT COMMENT '外部系统返回的对象 ID,如 Ranger policy id',
  external_name VARCHAR(255) COMMENT '外部系统对象名称',
  message VARCHAR(2048) COMMENT '审计消息或失败原因',
  correlation_id VARCHAR(128) COMMENT '全链路关联 ID,用于串联一次页面操作、后台补偿和下游同步',
  operation_id VARCHAR(128) COMMENT '控制面写操作 ID,如 LDAP operationId 或授权部署操作 ID',
  request_id VARCHAR(128) COMMENT 'Ambari 异步 request id,无异步 request 时为空',
  details_json TEXT COMMENT '脱敏后的结构化详情 JSON',
  event_time BIGINT NOT NULL COMMENT '事件发生时间,Unix 毫秒',
  CONSTRAINT PK_ap_audit PRIMARY KEY (audit_id)
) COMMENT='租户审计总账,记录 bootstrap、LDAP、Ambari RBAC、Ranger 和 Knox 授权下发事件';

-- 表:ambari_plus_perm_ext_ref
-- 权限执行面外部引用表。记录 Ambari RBAC、Ranger policy 等已接管对象及 drift 核对摘要。
CREATE TABLE IF NOT EXISTS ambari_plus_perm_ext_ref(
  ref_key VARCHAR(128) NOT NULL COMMENT '外部引用唯一标识,由绑定和外部对象关键字段生成',
  tenant_key VARCHAR(100) NOT NULL COMMENT '租户标识',
  cluster_name VARCHAR(255) NOT NULL COMMENT 'Ambari 集群名称',
  binding_id VARCHAR(128) NOT NULL COMMENT '授权控制面绑定 ID',
  object_type VARCHAR(100) NOT NULL COMMENT '权限对象类型',
  object_name VARCHAR(255) NOT NULL COMMENT '权限对象名称',
  subject_type VARCHAR(64) NOT NULL COMMENT '授权主体类型',
  subject_name VARCHAR(255) NOT NULL COMMENT '授权主体名称',
  execution_target VARCHAR(100) NOT NULL COMMENT '执行面目标,如 AMBARI_RBAC、RANGER、KNOX',
  external_type VARCHAR(100) NOT NULL COMMENT '外部对象类型,如 AMBARI_RBAC_PRIVILEGE、RANGER_POLICY',
  external_service VARCHAR(255) COMMENT '外部服务名称,如 Ranger service name',
  external_id VARCHAR(255) COMMENT '外部对象 ID,如 Ranger policy id',
  external_name VARCHAR(255) COMMENT '外部对象名称,如 Ranger policy name',
  desired_signature VARCHAR(128) COMMENT '期望状态摘要',
  actual_signature VARCHAR(128) COMMENT '实际状态摘要',
  drift_status VARCHAR(32) NOT NULL COMMENT '漂移状态,如 OK、DRIFT、UNKNOWN',
  source VARCHAR(64) NOT NULL COMMENT '引用来源,如 AUTHORIZATION_CONTROL_PLANE、IMPORTED',
  message VARCHAR(2048) COMMENT '最近核对或修复说明',
  last_verified_time BIGINT COMMENT '最近核对时间,Unix 毫秒',
  last_reconciled_time BIGINT COMMENT '最近修复时间,Unix 毫秒',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_ext_ref PRIMARY KEY (ref_key)
) COMMENT='权限执行面外部引用表,记录 Ambari RBAC、Ranger policy 等已接管对象及 drift 核对摘要';

-- 索引:用于租户成员查询、角色绑定查询和审计时间线查询。
CREATE INDEX idx_ap_user_cluster ON ambari_plus_user (cluster_name);
CREATE UNIQUE INDEX uq_ap_user_cluster_name ON ambari_plus_user (cluster_name, user_name);
CREATE INDEX idx_ap_user_checkin_last_login ON ambari_plus_user_checkin (last_login_time);
CREATE INDEX idx_ap_member_tenant ON ambari_plus_tenant_member (cluster_name, tenant_key);
CREATE UNIQUE INDEX uq_ap_member_user ON ambari_plus_tenant_member (cluster_name, tenant_key, user_name);
CREATE INDEX idx_ap_rb_tenant ON ambari_plus_role_binding (cluster_name, tenant_key);
CREATE INDEX idx_ap_rb_subject ON ambari_plus_role_binding (cluster_name, subject_type, subject_name);
CREATE INDEX idx_ap_audit_tenant ON ambari_plus_tenant_audit (tenant_key);
CREATE INDEX idx_ap_audit_time ON ambari_plus_tenant_audit (event_time);
CREATE INDEX idx_ap_audit_corr ON ambari_plus_tenant_audit (correlation_id);
CREATE INDEX idx_ap_audit_op ON ambari_plus_tenant_audit (operation_id);
CREATE INDEX idx_ap_ext_cluster ON ambari_plus_perm_ext_ref (cluster_name);
CREATE INDEX idx_ap_ext_binding ON ambari_plus_perm_ext_ref (binding_id);
CREATE INDEX idx_ap_ext_target ON ambari_plus_perm_ext_ref (execution_target, drift_status);

-- 表:ambari_plus_tenant_cluster
-- 租户集群默认归属表。一套集群只归属一个租户,默认 root。
CREATE TABLE IF NOT EXISTS ambari_plus_tenant_cluster(
  cluster_name VARCHAR(255) NOT NULL COMMENT 'Ambari 集群名称,作为归属主键',
  tenant_key VARCHAR(100) NOT NULL COMMENT '集群所属租户标识,默认 root',
  ambari_cluster_id BIGINT COMMENT 'Ambari 内部集群 ID',
  ownership_mode VARCHAR(64) NOT NULL COMMENT '归属模式,如 DEFAULT_ROOT、TENANT_BOUND',
  status VARCHAR(32) NOT NULL COMMENT '集群归属状态',
  source VARCHAR(64) NOT NULL COMMENT '归属来源,如 BOOTSTRAP、SYSTEM',
  created_by VARCHAR(255) COMMENT '创建人',
  created_time BIGINT NOT NULL COMMENT '创建时间,Unix 毫秒',
  updated_by VARCHAR(255) COMMENT '最近更新人',
  updated_time BIGINT NOT NULL COMMENT '最近更新时间,Unix 毫秒',
  CONSTRAINT PK_ap_tenant_cluster PRIMARY KEY (cluster_name)
) COMMENT='租户集群默认归属表,一套集群只归属一个租户,默认 root';

-- 索引:用于默认集群归属查询和租户总账按集群、绑定过滤。
CREATE INDEX idx_ap_tc_tenant ON ambari_plus_tenant_cluster (tenant_key);
CREATE INDEX idx_ap_tc_status ON ambari_plus_tenant_cluster (status);
CREATE INDEX idx_ap_audit_cluster ON ambari_plus_tenant_audit (cluster_name);
CREATE INDEX idx_ap_audit_binding ON ambari_plus_tenant_audit (binding_id);

-- 基线数据:只初始化 root 租户和内置角色。
-- 用户、成员关系和角色绑定必须带真实 cluster_name,由运行时 bootstrap 按当前 Ambari 集群幂等补齐。
SET @ap_now := CAST(UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000 AS UNSIGNED);

INSERT INTO ambari_plus_tenant(
  tenant_key, display_name, description, status, created_by, created_time, updated_by, updated_time
) VALUES (
  'root', 'root', '系统内置租户,用于承载默认资源归属和基础管理员关系。', 'ACTIVE',
  'Ttbigdata', @ap_now, 'Ttbigdata', @ap_now
) ON DUPLICATE KEY UPDATE
  display_name = VALUES(display_name),
  description = VALUES(description),
  status = 'ACTIVE',
  updated_by = 'Ttbigdata',
  updated_time = @ap_now;

INSERT INTO ambari_plus_role_def(
  role_key, display_name, scope_type, built_in, status, description, created_by, created_time, updated_by, updated_time
) VALUES (
  'tenant_admin', '租户管理员', 'TENANT', 1, 'ACTIVE',
  '管理租户成员、角色绑定和集群归属。',
  'Ttbigdata', @ap_now, 'Ttbigdata', @ap_now
) ON DUPLICATE KEY UPDATE
  display_name = VALUES(display_name),
  scope_type = VALUES(scope_type),
  built_in = VALUES(built_in),
  status = 'ACTIVE',
  description = VALUES(description),
  updated_by = 'Ttbigdata',
  updated_time = @ap_now;

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Step9—AmbariServer 初始化
初始化集群

← Step9—AmbariServer 初始化 初始化集群→

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