【Ambari Plus】Step7—MySQL 驱动与本地仓库

Step7---MySQL 驱动与本地仓库

这一步有两个目标:一是给 Ambari Server 准备 MySQL Connector/J,二是把 /data/modules 变成所有节点都能使用的软件仓库。前者决定 Ambari 能不能连接 MariaDB,后者决定各节点能不能安装 Ambari 和组件包。

安装 MySQL Connector/J

这一步只在核心节点 hadoop1.test.com 做。

bash 复制代码
cd /opt/modules

if [ -f /data/modules/mysql-connector-java-5.1.48.tar.gz ]; then
  sudo cp /data/modules/mysql-connector-java-5.1.48.tar.gz /opt/modules/
else
  sudo curl -fL -o mysql-connector-java-5.1.48.tar.gz \
    https://mirrors.aliyun.com/mysql/Connector-J/mysql-connector-java-5.1.48.tar.gz
fi

sha256sum mysql-connector-java-5.1.48.tar.gz
sudo tar -xzf mysql-connector-java-5.1.48.tar.gz -C /opt/modules
sudo install -D -m 0644 \
  /opt/modules/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar \
  /usr/share/java/mysql-connector-java.jar

检查文件:

bash 复制代码
ls -lh /usr/share/java/mysql-connector-java.jar

::: tip

这里使用 5.1.48 是为了兼容 Ambari 常见 MySQL/MariaDB 初始化流程。不要随手换成 8.x 驱动,除非你确认 Ambari 版本和 JDBC 参数都已适配。离线环境优先使用 /data/modules 里的交付包,并用 SHA256 和包清单对齐。

:::

RHEL 系生成 Yum 元数据

如果 /data/modules 里放的是 RPM 包,在核心节点执行:

bash 复制代码
sudo dnf -y install createrepo_c || sudo yum -y install createrepo

sudo rm -rf /data/modules/repodata
if command -v createrepo_c >/dev/null 2>&1; then
  sudo createrepo_c /data/modules
else
  sudo createrepo /data/modules
fi

curl -I http://hadoop1.test.com/repodata/repomd.xml
bash 复制代码
echo "Ubuntu 使用 APT 元数据,跳到下一节 dpkg-scanpackages。"

Ubuntu 生成 APT 元数据

如果 /data/modules 里放的是 DEB 包,在核心节点执行:

bash 复制代码
echo "RHEL 系使用 createrepo,不需要执行这一段。"
bash 复制代码
sudo apt update
sudo apt install -y dpkg-dev

cd /data/modules
sudo dpkg-scanpackages . /dev/null | gzip -9c | sudo tee Packages.gz >/dev/null

curl -I http://hadoop1.test.com/Packages.gz

所有 RHEL 节点写入本地 Yum 源

hadoop1.test.comhadoop2.test.comhadoop3.test.com 都执行:

bash 复制代码
sudo tee /etc/yum.repos.d/ambari-plus.repo >/dev/null <<'EOF'
[ambari-plus]
name=Ambari Plus Local Repository
baseurl=http://hadoop1.test.com/
enabled=1
gpgcheck=0
EOF

sudo yum clean all
sudo yum makecache
sudo yum repolist

如果系统使用 dnf

bash 复制代码
sudo dnf clean all
sudo dnf makecache
sudo dnf repolist

::: warning 包签名边界

gpgcheck=0 只适合已经受控的内网离线仓库。生产环境如果有签名体系,建议导入 GPG 公钥并把这里改回 gpgcheck=1

:::

所有 Ubuntu 节点写入本地 APT 源

hadoop1.test.comhadoop2.test.comhadoop3.test.com 都执行:

bash 复制代码
sudo tee /etc/apt/sources.list.d/ambari-plus.list >/dev/null <<'EOF'
deb [trusted=yes] http://hadoop1.test.com/ ./
EOF

sudo apt update
apt-cache policy ambari-server

::: warning

APT 源路径最后的 ./ 不要漏掉。这个写法表示当前 HTTP 根目录就是一个简单 DEB 仓库。[trusted=yes] 同样只建议用于受控内网离线仓库;如果你已经做了 Release 和签名,应该按标准 APT 签名方式配置。

:::

验证仓库可用

RHEL 系:

bash 复制代码
yum list ambari-server
yum list ambari-agent

Ubuntu:

bash 复制代码
apt-cache policy ambari-server
apt-cache policy ambari-agent

如果能看到包名和版本,说明本地仓库已经生效。

常见问题

现象 原因 处理
repomd.xml 404 没执行 createrepo 重新生成 /data/modules/repodata
yum repolist 看不到仓库 .repo 文件写错或缓存未刷新 检查 baseurl 后执行 yum clean all
Ubuntu apt update 报 Release 简单本地源没有 Release 文件 使用 [trusted=yes]
能访问 HTTP 但找不到包 包格式和仓库类型不匹配 RPM 用 Yum,DEB 用 APT
只有核心节点可用 工作节点解析不了 hadoop1.test.com 回到 Step3 检查 hosts

仓库能查到 Ambari 包后,再进入 MariaDB 初始化。