Apache Ambari 2.7.9 安装指南

Apache Ambari 2.7.9 安装指南:在 CentOS 7.9 上以官方源码构建 RPM 并部署集群管理平台,涵盖源修复、编译安装、Server 初始化、8080 验证、Agent 注册与 JVM 堆调整,实测回显。

Apache AmbariAmbari2026/10/13

Apache Ambari 2.7.9 安装指南

目标:在 CentOS 7.9 服务器上从零安装 Apache Ambari 2.7.9(2.7 系列最终版本),覆盖 yum 源修复、JDK 与 Maven 前置、官方源码编译构建 RPM 包、ambari-server 与 ambari-agent 安装初始化、8080 Web 控制台验证、Agent 注册与管理员密码修改。以下命令与回显均在真实环境逐步实测。

一、环境信息

  • 操作系统:CentOS Linux release 7.9.2009 (Core)(x86_64)
  • Python:2.7.5(系统自带,Ambari Server 与 Agent 均基于 Python 2 运行)
  • Java:OpenJDK 1.8.0_412(java-1.8.0-openjdk-devel,JAVA_HOME 为 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64)
  • Maven:3.6.3(仅源码编译方案需要)
  • Apache Ambari:2.7.9(2.7 系列最终版本,源码包 apache-ambari-2.7.9-src.tar.gz 约 82MB)
  • 元数据库:内嵌 PostgreSQL(postgresql-server 9.2.24-9.el7_9,安装 ambari-server RPM 时由 yum 自动作为依赖装入)
  • 主机名:ambari1.example.com(通过 /etc/hosts 完成本机自解析)
  • 服务端口:8080(Web 控制台与 REST API)、8440(Agent 注册心跳)、8441(Agent 加密通信)
  • 管理账号:admin(出厂默认密码 admin,本文改为强口令 q1w2e3r4)
  • 运行用户:root

二、前置条件

  • 一台 CentOS 7.9 服务器,root 权限,磁盘预留 20GB 以上(源码目录、Maven 本地仓库与 RPM 产物合计约 8GB,加元数据与日志)。
  • 服务器可访问公网(源码编译需要拉取 Maven 构件与 npm/Bower 前端资源;纯离线安装见方案 B)。
  • /etc/hosts 中完成主机名与 IP 的映射(Ambari 强依赖主机名互认):
echo "192.168.1.11  ambari1.example.com ambari1" >> /etc/hosts
hostnamectl set-hostname ambari1.example.com
  • ⚠️ Ambari 通过 systemctl 管理内嵌 PostgreSQL 与自身服务,要求服务器具备可用的 systemd(CentOS 7 原生环境即满足;systemd 前置不可用的宿主无法完成本文的 setup 与 start 流程)。

三、版本选型说明

Apache Ambari 现为 Apache 孵化项目(ambari.incubator.apache.org),官方发行渠道只提供源码包,不再直接提供二进制安装包。截至本文实测(2026-10),Apache 官方下载站可获取的版本如下:

版本说明
2.7.72.7 线早期版本
2.7.82.7 线补丁版本
2.7.92.7 系列最终版本(本文采用,2024-12-09 发布)
3.0.03.x 线首个版本,架构变化大,暂不选用

二进制包渠道现状(全部实测验证):

渠道现状
archive.cloudera.com/p/ambari/全部返回 401,需 Cloudera 商业授权
public-repo-1.hortonworks.comS3 返回 AccessDenied
国内镜像站的 cloudera-repo 路径均已 404
apache-ambari.com站点 522 宕机

结论:官方源码编译构建 RPM 是当前唯一不依赖第三方授权渠道的官方安装途径。本文方案 A 即为主线;已按方案 A 完成编译的读者可直接跳到 4.7 安装步骤。

源码包下载:

制品说明
apache-ambari-2.7.9-src.tar.gz官方源码包,约 82MB,用于自行编译构建 RPM

四、方案 A:官方源码编译构建 RPM 并安装(推荐)

4.1 修复 CentOS 7 EOL 的 yum 源

CentOS 7 已于 2024-06-30 停止维护,内置镜像源 mirror.centos.com 已下线,vault.centos.org 直连也可能 403,重写为阿里云 centos-vault 归档源:

cat > /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[base]
name=CentOS-7.9.2009 - Base
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

[updates]
name=CentOS-7.9.2009 - Updates
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

[extras]
name=CentOS-7.9.2009 - Extras
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
yum makecache fast

回显末行:

Metadata Cache Created

4.2 安装编译工具链与 JDK

yum install -y wget curl unzip tar bzip2 which git \
  gcc gcc-c++ make rpm-build rpmdevtools \
  java-1.8.0-openjdk-devel openssh-clients openssh-server perl

安装完成后验证 JDK(Ambari 2.7.x 要求 JDK 8):

java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

确认 JAVA_HOME 实际路径(后续 setup 要用):

readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/bin/java

即 JAVA_HOME 为 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64(去掉结尾的 /bin/java)。

4.3 安装 Maven 3.6.3

cd /opt
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xzf apache-maven-3.6.3-bin.tar.gz
ln -sf /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven-3.6.3
Java version: 1.8.0_412, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "6.8.0-138-generic", arch: "amd64", family: "unix"

注:OS name 的内核版本与平台编码随具体机器与 locale 设置略有差异,以实际回显为准,Maven 版本号 3.6.3 即可。

4.4 下载源码包并校验 sha512

archive.apache.org 直连极慢,改用清华大学官方镜像下载,校验值与官方下载站 .sha512 文件比对:

cd /root
wget https://mirrors.tuna.tsinghua.edu.cn/apache/ambari/ambari-2.7.9/apache-ambari-2.7.9-src.tar.gz
wget https://archive.apache.org/dist/ambari/ambari-2.7.9/apache-ambari-2.7.9-src.tar.gz.sha512
sha512sum apache-ambari-2.7.9-src.tar.gz
cat apache-ambari-2.7.9-src.tar.gz.sha512
0ebbdecd4e21689a6c9b44fefa4499fa129707ddea5bfd564436f05f37495de5683ee6e8802dbb0a5a183da12690196232541974a2c555d51953dbba98e9d263  apache-ambari-2.7.9-src.tar.gz
0ebbdecd4e21689a6c9b44fefa4499fa129707ddea5bfd564436f05f37495de5683ee6e8802dbb0a5a183da12690196232541974a2c555d51953dbba98e9d263  apache-ambari-2.7.9-src.tar.gz

两值一致,制品完整。解压源码:

tar -xzf apache-ambari-2.7.9-src.tar.gz
ls -d /root/apache-ambari-2.7.9-src
/root/apache-ambari-2.7.9-src

4.5 构建前置修补

源码构建涉及三个上游资源已失效的问题,需在构建前统一修补(均为实测排障结论,详见「八、常见问题」):

export PHANTOMJS_CDNURL=https://cdn.npmmirror.com/binaries/phantomjs
find /root/apache-ambari-2.7.9-src -name .bowerrc -not -path "*/node_modules/*" \
  -exec sed -i 's|https://bower.herokuapp.com|https://registry.bower.io|g' {} +
git config --global url."https://".insteadOf "git://"
修补项原因
PHANTOMJS_CDNURLambari-web 前端构建时 phantomjs-prebuilt 默认从 bitbucket 下载二进制,该源已不可达,改用 npmmirror 的二进制镜像
.bowerrc registryambari-admin 等 7 处 Bower 配置指向已停服的 bower.herokuapp.com,改为可达的 registry.bower.io
git 协议替换Bower 部分依赖走 git:// 协议拉取,很多网络已封禁 9418 端口,统一切到 https

4.6 编译构建 Ambari Server 与 Agent RPM

分三段执行(每段均已实测通过)。全部在源码根目录 /root/apache-ambari-2.7.9-src 下进行。

第一段:单独构建 ambari-metrics-common(ambari-server 的编译依赖,必须先行):

cd /root/apache-ambari-2.7.9-src
mvn -B clean install -DskipTests -Drat.skip=true -f ambari-metrics/ambari-metrics-common/pom.xml

回显结尾:

[INFO] Reactor Summary:
[INFO]
[INFO] Ambari Metrics Common 2.7.9.0.0 .................... SUCCESS [ 46.379 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

第二段:构建基础模块(ambari-server 的父 POM、工具库、视图框架与两个前端工程):

mvn -B clean install -DskipTests -Drat.skip=true \
  -pl ambari-project,ambari-utility,ambari-views,ambari-web,ambari-admin

回显结尾:

[INFO] Reactor Summary:
[INFO]
[INFO] Apache Ambari Project POM 2.7.9.0.0 ................ SUCCESS [  0.777 s]
[INFO] Ambari Web 2.7.9.0.0 ............................... SUCCESS [ 54.777 s]
[INFO] Ambari Views 2.7.9.0.0 ............................. SUCCESS [  0.924 s]
[INFO] Ambari Admin View 2.7.9.0.0 ........................ SUCCESS [ 55.572 s]
[INFO] ambari-utility 1.0.0.0-SNAPSHOT .................... SUCCESS [  1.171 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:53 min
[INFO] Finished at: 2026-10-13T11:15:53Z
[INFO] ------------------------------------------------------------------------

第三段:构建服务端与代理 RPM。注意必须显式调用 rpm:rpm 目标——ambari-server 的 pom 中 rpm-maven-plugin 的 execution phase 被置为 none(解绑了 RPM 打包与 Maven 生命周期的绑定),仅跑 install 不会产出 RPM:

mvn -B clean install rpm:rpm -DskipTests -Drat.skip=true \
  -pl ambari-serviceadvisor,ambari-server,ambari-agent

回显结尾:

[INFO] Reactor Summary:
[INFO]
[INFO] Ambari Service Advisor 1.0.0.0-SNAPSHOT ............ SUCCESS [ 19.806 s]
[INFO] Ambari Server 2.7.9.0.0 ............................ SUCCESS [11:26 min]
[INFO] Ambari Agent 2.7.9.0.0 ............................. SUCCESS [02:06 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  13:33 min
[INFO] Finished at: 2026-10-13T10:43:58Z
[INFO] ------------------------------------------------------------------------

确认 RPM 产物:

ls -l /root/apache-ambari-2.7.9-src/ambari-server/target/rpm/ambari-server/RPMS/x86_64/ \
      /root/apache-ambari-2.7.9-src/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/
/root/apache-ambari-2.7.9-src/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/:
total 33780
-rw-r--r-- 1 root root 34581912 Oct 13 10:43 ambari-agent-2.7.9.0-0.x86_64.rpm

/root/apache-ambari-2.7.9-src/ambari-server/target/rpm/ambari-server/RPMS/x86_64/:
total 126292
-rw-r--r-- 1 root root 129310552 Oct 13 10:41 ambari-server-2.7.9.0-0.x86_64.rpm
产物大小说明
ambari-server-2.7.9.0-0.x86_64.rpm129310552 字节(约 123MB)服务端,内含 Web 控制台与 Stack 定义
ambari-agent-2.7.9.0-0.x86_64.rpm34581912 字节(约 33MB)节点代理

版本号说明:2.7.9.0-0 中的 .0.0 是 Ambari 内部版本约定(2.7.9.0.0),与上游 2.7.9 对应。

4.7 安装 ambari-server 与 ambari-agent

先装服务端(yum 自动解析并安装 postgresql-server 等依赖):

yum localinstall -y \
  /root/apache-ambari-2.7.9-src/ambari-server/target/rpm/ambari-server/RPMS/x86_64/ambari-server-2.7.9.0-0.x86_64.rpm

回显中可见自动安装的依赖(节选):

Installing : postgresql-server-9.2.24-9.el7_9.x86_64
Installing : ambari-server-2.7.9.0-0.x86_64
Verifying  : postgresql-server-9.2.24-9.el7_9.x86_64
Verifying  : ambari-server-2.7.9.0-0.x86_64

Installed:
  ambari-server.x86_64 0:2.7.9.0-0

Dependency Installed:
  postgresql-server.x86_64 0:9.2.24-9.el7_9

再装代理:

yum localinstall -y \
  /root/apache-ambari-2.7.9-src/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-2.7.9.0-0.x86_64.rpm
Installed:
  ambari-agent.x86_64 0:2.7.9.0-0

4.8 修复 buildNumber 占位符

从源码 tarball(无 .git 目录)构建的 RPM 中,buildNumber 占位符未被构建时替换,而相关脚本以 set -u 严格模式运行,执行会直接报 buildNumber: unbound variable。逐一确认并修复:

grep -l 'buildNumber' /usr/sbin/ambari-server /etc/init.d/ambari-server /var/lib/ambari-agent/bin/ambari-agent
/usr/sbin/ambari-server
/etc/init.d/ambari-server
/var/lib/ambari-agent/bin/ambari-agent
sed -i 's/\${buildNumber}/source/g' /usr/sbin/ambari-server
sed -i 's/\${buildNumber}/source/g' /etc/init.d/ambari-server
sed -i 's/\${buildNumber}/source/g' /var/lib/ambari-agent/bin/ambari-agent
grep -c 'buildNumber' /usr/sbin/ambari-server /etc/init.d/ambari-server /var/lib/ambari-agent/bin/ambari-agent
/usr/sbin/ambari-server:0
/etc/init.d/ambari-server:0
/var/lib/ambari-agent/bin/ambari-agent:0

三处均归零,修复完成。

4.9 初始化 ambari-server(setup)

setup 完成 JDK 检查、元数据库初始化、管理员账号写入等全部初始化动作。用 -j 指定本机 JDK 路径(跳过联网下载 Oracle JDK 的交互项):

ambari-server setup -j /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64

交互与回显全文(三个 [y/n] 询问均直接回车取默认值 n):

Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
WARNING: Could not run /usr/sbin/sestatus: OK
Customize user account for ambari-server daemon [y/n] (n)? Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
WARNING: JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64 must be valid on ALL hosts
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Check JDK version for Ambari Server...
JDK version found: 8
Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? Configuring database...
Default properties detected. Using built-in database.
Configuring ambari database...
Checking PostgreSQL...
Running initdb: This may take up to a minute.
Initializing database ... OK
About to start PostgreSQL
Configuring local database...
Configuring PostgreSQL...
Restarting PostgreSQL
Creating schema and user...
done.
Creating tables...
done.
Extracting system views...
ambari-admin-2.7.9.0.0.jar

Ambari repo file doesn't contain latest json url, skipping repoinfos modification
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

💡 交互项解读:Customize user account 取默认 n(以 root 运行服务);GPL LZO 取默认 n(不启用 GPL 组件);advanced database configuration 取默认 n(使用内嵌 PostgreSQL)。setup 幂等,重复执行会提示已初始化并询问是否覆盖。

4.10 启动服务并验证 Web 控制台

ambari-server start
Using python  /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources...
Ambari database consistency check started...
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start...............
Server started listening on 8080

DB configs consistency check: no errors and warnings were found.
Ambari Server 'start' completed successfully.

确认运行状态:

ambari-server status
Using python  /usr/bin/python
Ambari-server status
Ambari Server running
Found Ambari Server PID: 76438 at: /var/run/ambari-server/ambari-server.pid
ambari-server --version
2.7.9.0-0

HTTP 探活:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
curl -s http://127.0.0.1:8080/ | grep -o '<title>.*</title>'
200
<title>Ambari</title>

浏览器访问 http://<服务器IP>:8080/,出现 Ambari 登录页,使用 admin/admin 登录即可进入安装向导(密码修改见 4.12)。

服务端进程形态(Java 进程,默认 JVM 参数中堆为 -Xms512m -Xmx2048m,调整方法见 7.2):

jps -l
76438 org.apache.ambari.server.controller.AmbariServer

4.11 注册 Agent 节点

ambari-agent 的配置文件为 /etc/ambari-agent/conf/ambari-agent.ini,其中 [server] hostname 默认指向 localhost。本例 Server 与 Agent 同机部署且主机名为 ambari1.example.com,将 hostname 改为与 Server 主机名一致:

grep -n 'hostname' /etc/ambari-agent/conf/ambari-agent.ini
20:hostname=localhost
sed -i 's/^hostname=localhost/hostname=ambari1.example.com/' /etc/ambari-agent/conf/ambari-agent.ini
ambari-agent start
Verifying Python version compatibility...
Using python  /usr/bin/python
Checking for previously running Ambari Agent...
Checking ambari-common dir...
Starting ambari-agent
Verifying ambari-agent process status...
Agent process is running
Ambari Agent successfully started
Agent PID at: /run/ambari-agent/ambari-agent.pid
Agent out at: /var/log/ambari-agent/ambari-agent.out
Agent log at: /var/log/ambari-agent/ambari-agent.log

通过 REST API 确认 Agent 完成注册(Server 与 Agent 通过 8440/8441 端口完成证书交换与首次心跳后,主机出现在主机列表中,约需十几秒):

curl -s -u admin:admin -H 'X-Requested-By: ambari' http://127.0.0.1:8080/api/v1/hosts
{
  "href" : "http://127.0.0.1:8080/api/v1/hosts",
  "items" : [
    {
      "href" : "http://127.0.0.1:8080/api/v1/hosts/ambari1.example.com",
      "Hosts" : {
        "host_name" : "ambari1.example.com"
      }
    }
  ]
}

💡 多节点扩展:在其余节点重复 4.7(仅装 ambari-agent RPM)、4.8(修复 buildNumber)与 4.11(指向 Server 主机名),即可把节点纳入统一管理;批量自动安装则由 Ambari 控制台向导完成。

4.12 修改管理员密码

出厂账号 admin/admin 仅适合首次登录,立即通过 REST API 改为强口令(X-Requested-By 头为 Ambari REST 必需):

curl -s -o /dev/null -w '%{http_code}\n' -u admin:admin -H 'X-Requested-By: ambari' \
  -X PUT -d '{"Users":{"password":"q1w2e3r4","old_password":"admin"}}' \
  http://127.0.0.1:8080/api/v1/users/admin
200

验证旧口令失效、新口令生效:

curl -s -o /dev/null -w '%{http_code}\n' -u admin:admin -H 'X-Requested-By: ambari' \
  http://127.0.0.1:8080/api/v1/users/admin
curl -s -o /dev/null -w '%{http_code}\n' -u admin:q1w2e3r4 -H 'X-Requested-By: ambari' \
  http://127.0.0.1:8080/api/v1/users/admin
403
200

五、方案 B:离线安装(编译产物 RPM 内网安装)

适用于无法访问公网的内网服务器:在一台可联网机器上按方案 A 的 4.1-4.6 完成编译,把两个 RPM 产物拷贝到内网服务器后安装。

5.1 传输 RPM 产物

scp ambari-server-2.7.9.0-0.x86_64.rpm \
  ambari-agent-2.7.9.0-0.x86_64.rpm \
  root@<内网服务器IP>:/opt/ambari-rpm/

5.2 准备依赖

ambari-server RPM 依赖 postgresql-server、postgresql-jdbc 等系统包,ambari-agent 依赖 python 与 psmisc。内网服务器需具备以下之一:

  • 挂载 CentOS 7.9 的 Everything ISO 作为本地 yum 源;
  • 内网 yum 镜像源(如自建 vault 同步);
  • 在联网机上用 yumdownloader --resolve 把依赖一并下载拷入内网。

以 ISO 源为例(确认 ISO 已挂载到 /mnt/cdrom):

mkdir -p /mnt/cdrom
mount -o loop /opt/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrom
cat > /etc/yum.repos.d/iso.repo <<'EOF'
[iso]
name=CentOS-7.9 ISO
baseurl=file:///mnt/cdrom
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
yum makecache fast

5.3 安装与初始化

yum localinstall -y /opt/ambari-rpm/ambari-server-2.7.9.0-0.x86_64.rpm
Installed:
  ambari-server.x86_64 0:2.7.9.0-0

Dependency Installed:
  postgresql-server.x86_64 0:9.2.24-9.el7_9
yum localinstall -y /opt/ambari-rpm/ambari-agent-2.7.9.0-0.x86_64.rpm
Installed:
  ambari-agent.x86_64 0:2.7.9.0-0

后续 buildNumber 修复(4.8)、setup(4.9)、启动验证(4.10)、Agent 注册(4.11)、密码修改(4.12)与本机编译安装完全一致,按对应小节逐步执行即可。

六、方案对比与选择建议

对比项方案 A:源码编译构建 RPM方案 B:离线 RPM 安装
适用场景可联网服务器;需要自持安装介质内网服务器,无法出公网
前置依赖编译工具链 + Maven + 公网构件源仅需 RPM 与系统依赖源
耗时首次编译约 20-30 分钟(实测三段合计约 17 分钟)安装本身数分钟
官方程度官方源码 + 官方构建流程,无第三方授权依赖同左
维护性可固定产物、可复现、可批量分发依赖编译机产出的 RPM
建议有公网条件时的首选内网交付首选,产物来自方案 A

七、配置说明

7.1 配置文件分布

文件/目录用途
/etc/ambari-server/conf/ambari.propertiesServer 核心配置(数据库、端口、路径、超时等)
/var/lib/ambari-server/ambari-env.shServer JVM 参数(AMBARI_JVM_ARGS)
/etc/ambari-server/conf/log4j.propertiesServer 日志配置
/etc/ambari-agent/conf/ambari-agent.iniAgent 配置(Server 地址、心跳参数等)
/var/log/ambari-server/Server 日志(ambari-server.log / ambari-server.out / ambari-audit.log 等)
/var/log/ambari-agent/Agent 日志(ambari-agent.log / ambari-agent.out)
/var/lib/ambari-server/keys/Server 与 Agent 通信的 CA 证书与密钥
/var/lib/ambari-server/resources/stacks/Stack 定义(HDP 服务编排元数据)

7.2 JVM 堆内存调整

ambari-server 是 JVM 进程(org.apache.ambari.server.controller.AmbariServer),JVM 参数集中在一个位置:/var/lib/ambari-server/ambari-env.sh 的 AMBARI_JVM_ARGS。RPM 出厂默认堆为 -Xms512m -Xmx2048m,生产建议限制在 256-512MB 区间(管理平台自身负载不高,默认 2G 堆过大):

grep -n 'AMBARI_JVM_ARGS' /var/lib/ambari-server/ambari-env.sh
29:export AMBARI_JVM_ARGS="$AMBARI_JVM_ARGS -Xms512m -Xmx2048m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60"
sed -i 's/-Xms512m -Xmx2048m/-Xms256m -Xmx512m/' /var/lib/ambari-server/ambari-env.sh
ambari-server restart

重启后用 jps -v 验证生效:

jps -v | grep AmbariServer
76438 AmbariServer -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -Dsun.zip.disableMemoryMapping=true -Xms256m -Xmx512m -XX:MaxPermSize=128m -Djava.security.auth.login.config=/etc/ambari-server/conf/krb5JAASLogin.conf -Djava.security.krb5.conf=/etc/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dcom.sun.jndi.ldap.connect.pool.protocol=plain ssl -Dcom.sun.jndi.ldap.connect.pool.maxsize=20 -Dcom.sun.jndi.ldap.connect.pool.timeout=300000

-Xms256m -Xmx512m 已生效。

7.3 Agent 指向 Server

/etc/ambari-agent/conf/ambari-agent.ini 的 [server] 段决定 Agent 连接哪个 Server:

grep -A4 '^\[server\]' /etc/ambari-agent/conf/ambari-agent.ini
[server]
hostname=ambari1.example.com
url_port=8440
secured_url_port=8441
connect_retry_delay=10
max_reconnect_retry_delay=30
参数说明
hostnameServer 主机名,跨机部署时改为 Server 的 IP 或主机名
url_port注册心跳端口(明文通道)
secured_url_port加密通信端口
connect_retry_delay / max_reconnect_retry_delay断线重连间隔(秒)

修改后 ambari-agent restart 生效。

7.4 systemd 托管说明

RPM 自带 SysV 风格脚本 /etc/init.d/ambari-server 与 /etc/init.d/ambari-agent,CentOS 7 安装 systemd-sysv 兼容层后由 systemd 的 SysV 生成器接管,因此真实服务器上 systemctl 与 SysV 两种方式均可:

systemctl status ambari-server
ambari-server.service - LSB: ambari-server daemon
   Loaded: loaded (/etc/rc.d/init.d/ambari-server; bad; vendor preset: disabled)
   Active: active (running) since ...
systemctl enable ambari-server
systemctl enable ambari-agent

开机自启按需逐个开启(Ambari 集群中一般仅 Server 侧开启 ambari-server 自启)。

八、常见问题

8.1 buildNumber: unbound variable

现象:执行 ambari-server setup 或 ambari-server start 直接报:

/usr/sbin/ambari-server: line 34: buildNumber: unbound variable

原因:源码 tarball 不含 .git 目录,构建号占位符 ${buildNumber} 在打包时未被替换,脚本又在 set -u 严格模式下运行。

解决:按 4.8 对三个文件执行 sed -i 's/\${buildNumber}/source/g' 修复后重试。

8.2 ambari-web 构建卡在 phantomjs 下载

现象:编译报 phantomjs-prebuilt 下载失败(对 bitbucket 的连接 ECONNREFUSED)。

原因:phantomjs 二进制默认从 bitbucket 下载,该源已不可达。

解决:构建前 export PHANTOMJS_CDNURL=https://cdn.npmmirror.com/binaries/phantomjs(实测该 CDN 返回 200)。

8.3 Bower install 报 bower.herokuapp.com 连接失败

现象:ambari-admin 模块构建失败,Bower install 阶段 ECONNREFUSED 184.72.1.148:443。

原因:Bower 官方老 registry bower.herokuapp.com 已停止服务。

解决:按 4.5 把源码内全部 .bowerrc 的 registry 改为 https://registry.bower.io,并执行 git config --global url."https://".insteadOf "git://" 防止依赖走 git:// 协议。

8.4 只排除 ambari-metrics 聚合模块不生效

现象:-pl '!ambari-metrics' 仍会构建 ambari-metrics-storm-sink 等子模块并失败(ring-cors 构件在 Clojars,被 settings.xml 镜像规则拦截)。

原因:-pl '!ambari-metrics' 只排除聚合 pom,不级联排除其子模块。

解决:改用本文 4.6 的三段式构建——先单独构建 ambari-metrics-common,再按模块名单构建,完全绕开 ambari-metrics 其余子模块。

8.5 setup 时 PostgreSQL 初始化失败

现象:ambari-server setup 报 Unable to start PostgreSQL server. Exiting(exit code 3)。

排查:

systemctl status postgresql
cat /var/lib/pgsql/pg_startup.log

常见原因:

  • /var/lib/pgsql/data 非空但损坏(曾装过 PostgreSQL)——清理后重试:rm -rf /var/lib/pgsql/data/* && chown postgres:postgres /var/lib/pgsql/data;
  • 5432 端口被其他实例占用——ss -tlnp | grep 5432 确认后停掉占用进程。

8.6 Web 控制台无法访问

现象:curl http://127.0.0.1:8080/ 本机正常,浏览器无法访问。

解决:开放防火墙端口:

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=8440/tcp
firewall-cmd --permanent --add-port=8441/tcp
firewall-cmd --reload

8.7 check-database 报 Persistence service was already initialized

现象:ambari-server check-database 退出码 1,报 Caused by: java.lang.IllegalStateException: Persistence service was already initialized.。

说明:这是 2.7.9 检查器自身的缺陷——数据库检查实际已完成(输出中出现 No errors and warnings were found. 即为检查结论),随后检查器内部重复初始化 JPA 持久化服务导致异常退出。判断数据库健康状态以日志中的检查结论为准,/var/log/ambari-server/ambari-server-check-database.log 记录了完整检查过程。

九、卸载与清理

ambari-agent stop
ambari-server stop
Verifying Python version compatibility...
Using python  /usr/bin/python
Found ambari-agent PID: 119073
Stopping ambari-agent
Removing PID file at /run/ambari-agent/ambari-agent.pid
ambari-agent successfully stopped

卸载软件包(保留数据便于回滚时恢复):

yum erase -y ambari-agent
yum erase -y ambari-server

彻底清理数据与配置(谨慎执行,元数据库与集群定义将全部删除):

rm -rf /etc/ambari-server /etc/ambari-agent
rm -rf /var/lib/ambari-server /var/lib/ambari-agent
rm -rf /var/log/ambari-server /var/log/ambari-agent
rm -rf /var/run/ambari-server /var/run/ambari-agent
rm -rf /var/lib/pgsql

如需还原编译过程占用的磁盘,删除源码与 Maven 本地仓库:

rm -rf /root/apache-ambari-2.7.9-src /root/apache-ambari-2.7.9-src.tar.gz
rm -rf /root/.m2/repository/org/apache/ambari

十、参考链接