Step9—AmbariServer 初始化
# Step9—AmbariServer 初始化
前面已经准备好了本地仓库、JDK、MariaDB 和 JDBC 驱动,现在可以初始化 Ambari Server。这个步骤只在核心节点 hadoop1.test.com 做,工作节点后续会通过 Ambari Web UI 注册和安装 Agent。
新版本安装我建议使用 ambari-plus setup 完成服务初始化。它会把 Ambari Plus 需要的安装项集中在一个入口里处理,后面排查也更容易对齐。
本文示例参数:
| 项目 | 值 |
|---|---|
| Ambari Server 节点 | hadoop1.test.com |
| 数据库地址 | hadoop1.test.com:3306 |
| Ambari 数据库 | ambari |
| Ambari 用户 | ambari |
| JDBC 驱动 | /usr/share/java/mysql-connector-java.jar |
| Ambari JDK | /usr/jdk64/jdk17 |
| Stack JDK | /usr/jdk64/jdk1.8 |
| 初始化入口 | ambari-plus setup |
提示
主机名这里我建议全程使用 FQDN,例如 hadoop1.test.com。后面如果继续接 Kerberos、LDAP、SPNEGO 或证书,短主机名和 FQDN 混用很容易引出 Principal、回调地址、证书 SAN 不一致的问题。
# 创建 Ambari 数据库和用户
在核心节点执行。这里登录 MariaDB root 时,密码输入 Step8 里设置的 root。示例里的 Ambari 数据库密码是 ambari,生产环境请换成自己的强密码,并和后面 ambari-plus setup 里输入的密码保持一致。
AMBARI_DB_PASSWORD='ambari'
mysql -uroot -p <<EOF
CREATE DATABASE IF NOT EXISTS ambari DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'ambari'@'%' IDENTIFIED BY '${AMBARI_DB_PASSWORD}';
CREATE USER IF NOT EXISTS 'ambari'@'localhost' IDENTIFIED BY '${AMBARI_DB_PASSWORD}';
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%';
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'localhost';
FLUSH PRIVILEGES;
EOF
2
3
4
5
6
7
8
9
10
11
12
13
检查 Ambari 用户能否连接自己的库:
mysql -h hadoop1.test.com -uambari -p -D ambari -e "SELECT DATABASE();"

如果这次要一起安装 Hive
如果你计划在同一轮安装 Hive,可以提前创建 Hive Metastore 库和用户。只安装 Ambari Server 时,这段可以先不做。
HIVE_DB_PASSWORD='hive'
mysql -uroot -p <<EOF
CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY '${HIVE_DB_PASSWORD}';
CREATE USER IF NOT EXISTS 'hive'@'localhost' IDENTIFIED BY '${HIVE_DB_PASSWORD}';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost';
FLUSH PRIVILEGES;
EOF
2
3
4
5
6
7
8
9
10
11
12
13
# 安装 Ambari Server
核心节点从本地仓库安装。
if command -v dnf >/dev/null 2>&1; then
sudo dnf clean all
sudo dnf makecache
sudo dnf -y install ambari-server ambari-agent
else
sudo yum clean all
sudo yum makecache
sudo yum -y install ambari-server ambari-agent
fi
2
3
4
5
6
7
8
9
sudo apt update
sudo apt install -y ambari-server ambari-agent
2
// Make sure to add code blocks to your code group
安装后确认官方 Ambari DDL 文件存在:
ls -l /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
command -v ambari-plus
2

# 确认 JDBC 驱动
ambari-plus setup 会使用 Step7 准备好的 MySQL JDBC 驱动。进入交互前先确认这个路径存在,避免安装到一半再回来补文件:
ls -lh /usr/share/java/mysql-connector-java.jar
readlink -f /usr/share/java/mysql-connector-java.jar
2
如果文件不存在,回到 Step7 检查驱动包和软链接。

# 执行官方 Ambari DDL 初始化
Ambari Server 安装后会提供 MySQL DDL。先判断是否已经初始化过:
mysql -uambari -p -D ambari -N -e "SHOW TABLES LIKE 'metainfo';"
如果没有输出,再执行:
mysql -uambari -p ambari < /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
再次检查:
mysql -uambari -p -D ambari -N -e "SHOW TABLES LIKE 'metainfo';"
能看到 metainfo,说明官方 Ambari DDL 已经导入。

注意
官方 Ambari DDL 和 Ambari Plus 增量 DDL 必须导入同一个数据库。本文统一使用 ambari 库,不要额外创建 ambari_plus 库,否则服务启动后会读不到扩展表。
# 执行 Ambari Plus 增量 DDL
官方 DDL 只会创建 Ambari 原生表。Ambari Plus 还需要自己的租户、权限控制面、登录欢迎语和审计表,所以这里必须继续执行 Ambari Plus 增量 DDL。
完整 SQL 放在黄金会员附录:【必需】ambari plus 数据库初始化文件。
将附录中的 SQL 保存为 Ambari-Plus-DDL-MySQL-CREATE.sql 后,在核心节点导入到同一个 ambari 库:
mysql -uambari -p ambari < Ambari-Plus-DDL-MySQL-CREATE.sql
导入后验证关键表和基线数据:
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;"
2
能看到 ambari_plus_tenant,并且内置 root 租户状态为 ACTIVE,说明增量 DDL 已经导入。

# 执行 ambari-plus setup
数据库和 DDL 都准备好以后,就可以进入 ambari-plus setup。第一次安装我建议走交互式,把每个选项确认清楚;同一套规范已经跑通后,再把参数整理成静默命令用于批量部署。
# 1. 启动 setup 向导
在核心节点执行:
sudo ambari-plus setup
启动后,终端会进入 setup 向导。后面每一步按提示输入或选择即可;如果是非 TTY 环境,会自动降级成编号输入。批量部署用的静默命令放在第 11 小节,第一次安装先按交互式走完一遍更稳。
# 2. 选择语言
语言选择建议选 中文 (Chinese),后面的数据库、JDK、Web 目录等提示会更容易核对。

静默模式对应参数:
--language zh
如果终端里边框字符显示成方块,先确认系统是 UTF-8 环境:
locale | grep LANG
echo "TERM=$TERM"
2
RHEL 7 / CentOS 7 这类老环境如果显示异常,可以先执行:
export LANG=en_US.UTF-8
export TERM=xterm-256color
2
# 3. 环境检查
进入正式配置后,第一步是环境检查。这里主要看两件事:
| 检查项 | 通过标准 |
|---|---|
| 执行权限 | 使用 root 或 sudo 执行 |
| Ambari 配置文件 | /etc/ambari-server/conf/ambari.properties 存在 |
如果提示 ambari.properties 不存在,通常是 ambari-server 包还没有安装好,先回到前面的“安装 Ambari Server”小节确认包安装结果。

# 4. 系统用户
系统用户这一步用来决定 Ambari Server daemon 使用哪个系统账号运行。普通安装建议保持默认,不自定义系统用户。
| 提示 | 建议 |
|---|---|
| 是否自定义 ambari-server daemon 用户 | 选择 n |
只有在企业环境里已经规划好专门的服务账号时,才需要自定义。否则这里随意改用户,后面更容易遇到日志目录、PID 文件、资源目录权限不一致的问题。
静默模式如果不传 --custom-user,就是默认用户路线。

# 5. JDK 配置
JDK 配置会让你填写两套路径:
| 配置项 | 建议填写 |
|---|---|
| Ambari JDK | /usr/jdk64/jdk17 |
| Stack JDK | /usr/jdk64/jdk1.8 |
这两个路径和 Step6 的软链接要完全一致。填完后,如果界面提示路径不存在,不要继续硬往下走,先回到 Step6 检查:
ls -ld /usr/jdk64/jdk17 /usr/jdk64/jdk1.8
/usr/jdk64/jdk17/bin/java -version
/usr/jdk64/jdk1.8/bin/java -version
2
3
静默模式对应参数:
-j /usr/jdk64/jdk17 \
--stack-java-home /usr/jdk64/jdk1.8
2

# 6. GPL 许可
GPL 许可主要影响 LZO 这类 GPL 相关能力。离线包里已经准备好相关包,并且你确认当前环境允许使用时,可以选择接受;如果只是先跑 Ambari Server 基础安装,也可以先不启用。
| 场景 | 建议 |
|---|---|
| 已准备 GPL 相关离线包 | 选择接受 |
| 不确定是否需要 | 先不接受,后面按组件需要再补 |
静默模式接受 GPL:
--accept-gpl

# 7. 数据库配置
这里选择高级数据库配置,数据库类型选 MySQL / MariaDB,并填写前面已经创建好的 Ambari 数据库信息。

| 配置项 | 本文示例 |
|---|---|
| 是否进入高级数据库配置 | y |
| 数据库类型 | MySQL / MariaDB |
| 数据库地址 | hadoop1.test.com |
| 数据库端口 | 3306 |
| 数据库名 | ambari |
| 数据库用户 | ambari |
| 数据库密码 | 前面设置的 AMBARI_DB_PASSWORD |
| JDBC 驱动 | /usr/share/java/mysql-connector-java.jar |

注意
数据库地址如果填主机名,必须确保 Step3 的 hosts 解析已经通过。这里建议直接填写 FQDN,并保证 /etc/hosts 中存在 hadoop1.test.com 到内网 IP 的解析。
数据库这一步不要临时改库名。前面官方 Ambari DDL 和 Ambari Plus 增量 DDL 都导入到了 ambari 库,这里也必须填同一个库。
静默模式对应参数:
--advanced-db --database mysql \
--databasehost hadoop1.test.com --databaseport 3306 \
--databasename ambari --databaseusername ambari \
--databasepassword "${AMBARI_DB_PASSWORD}" \
--jdbc-driver /usr/share/java/mysql-connector-java.jar
2
3
4
5
选择自定义 JDBC 驱动后,填写 Step7 准备好的 jar 路径:

数据库信息填完后,界面会把主机、端口、库名、用户名和 JDBC 驱动汇总出来。密码显示为 ****,这是正常的。

# 8. 主密钥与 JCE Policy
主密钥用于加密保存敏感配置。演示环境为了快速跑通,可以先不启用;生产环境建议启用,并把主密钥交给受控的凭据管理流程保存。
JCE Policy 用于 Java 加密能力扩展。如果你的 JDK 和安全策略已经满足组件要求,可以先不单独配置;需要安装策略包时,再填写实际路径。
| 配置项 | 演示环境 | 生产建议 |
|---|---|---|
| Master Key | 可先跳过 | 建议启用 |
| JCE Policy | 可先跳过 | 按安全规范配置 |
静默模式跳过这两项:
--no-master-key --no-jce-policy
静默模式启用时,可以改成:
--master-key "${AMBARI_MASTER_KEY}" \
--jce-policy /opt/jce8_policy.zip
2

# 9. Web 目录和服务端口
Ambari Plus 会额外写入 Web 前端目录和服务端口配置。默认值建议先保持不变:
| 配置项 | 建议值 |
|---|---|
| Web 目录 | /usr/lib/ambari-plus/web |
| Server 端口 | 8080 |
填写前可以先确认 Web 目录存在:
ls -ld /usr/lib/ambari-plus/web
如果这里改了端口,后面的防火墙和访问地址也要一起改。本文继续使用默认 8080。
静默模式对应参数:
--web-dir /usr/lib/ambari-plus/web \
--server-port 8080
2

# 10. 确认并应用配置
所有选项填写完后,界面会进入确认面板。这里不要急着回车,先把数据库地址、库名、JDK 路径、Web 目录和端口再核对一遍。
| 核对项 | 正确值 |
|---|---|
| 数据库 | hadoop1.test.com:3306/ambari |
| 数据库用户 | ambari |
| Ambari JDK | /usr/jdk64/jdk17 |
| Stack JDK | /usr/jdk64/jdk1.8 |
| Web 目录 | /usr/lib/ambari-plus/web |
| Server 端口 | 8080 |
确认页里能看到完整配置时,再选择开始安装。

执行完成后,重点看 JDBC driver was successfully initialized、server.jdbc.url、server.jdbc.database_name 和 webapp.dir。它们分别说明 JDBC 驱动已经注册,数据库连接配置已经写入,Ambari Server 的 Web 目录已经切到 Plus 前端资源。

然后回到命令行检查 ambari.properties:
grep -E '^(ambari-server.user|java.home|stack.java.home|server.os_family|server.os_type|server\.jdbc|webapp.dir|client.api.port)=' /etc/ambari-server/conf/ambari.properties
如果端口仍然使用默认 8080,client.api.port 可能不会单独写入,这是正常的;重点是 server.jdbc.url、server.jdbc.database_name、ambari-server.user 和 webapp.dir=/usr/lib/ambari-plus/web 都能查到。
# 11. 静默模式批量部署
交互式流程跑通后,可以把同样的配置固化成静默命令。下面这份命令对应本文示例环境,适合复制后按自己的主机名和密码变量调整:
export AMBARI_DB_PASSWORD='ambari'
sudo ambari-plus setup -s --language zh --accept-gpl \
--advanced-db --database mysql \
--databasehost hadoop1.test.com --databaseport 3306 \
--databasename ambari --databaseusername ambari \
--databasepassword "${AMBARI_DB_PASSWORD}" \
--jdbc-driver /usr/share/java/mysql-connector-java.jar \
-j /usr/jdk64/jdk17 \
--stack-java-home /usr/jdk64/jdk1.8 \
--no-master-key --no-jce-policy \
--web-dir /usr/lib/ambari-plus/web \
--server-port 8080
2
3
4
5
6
7
8
9
10
11
12
13
静默模式不会逐项停下来确认,缺少必填参数时会一次性列出缺失项并退出。第一次整理命令时,我建议先在测试环境跑一遍,再拿到生产环境使用。
# 启动 Ambari Server 和本机 Agent
sudo ambari-plus restart
sudo ambari-plus status
sudo ambari-agent restart
sudo ambari-agent status
2
3
4
5
ambari-plus restart 会继续调用 Ambari Server 的启动逻辑。看到 Server started listening on 8080,并且 ambari-plus status 返回 Ambari Server running,说明服务端已经加载新配置。

本机 Agent、Web 端口和数据库基线也一起确认。这里能看到 Agent 处于运行状态,8080 返回 200 OK,ambari_plus_tenant 里内置租户为 ACTIVE。

# 放通 8080
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
2
sudo ufw allow 8080/tcp
sudo ufw reload
2
// Make sure to add code blocks to your code group
云主机同样要检查安全组。
# 访问 Web UI
浏览器访问:
http://hadoop1.test.com:8080
页面能够正常打开时,可以看到 Ambari Plus 的登录入口。正式环境里可以换成自己的域名、VIP 或内网 FQDN。

当前 Ambari Plus 包默认管理员账号为:
| 用户名 | 密码 |
|---|---|
admin | Admin@2026 |
登录后建议第一时间修改默认密码。到这里,安装前准备和 Ambari Server 初始化就告一段落,下一步进入 Web UI 初始化集群,开始添加 hadoop2.test.com、hadoop3.test.com 并安装服务。