Step7—MySQL 驱动与本地仓库
# Step7—MySQL 驱动与本地仓库
这一步有两个目标:一是给 Ambari Server 准备 MySQL Connector/J,二是把 /data/modules 变成所有节点都能使用的软件仓库。前者决定 Ambari 能不能连接 MariaDB,后者决定各节点能不能安装 Ambari 和组件包。
# 安装 MySQL Connector/J
这一步只在核心节点 hadoop1.test.com 做。
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
2
3
4
5
6
7
8
9
10
11
12
13
14
检查文件:
ls -lh /usr/share/java/mysql-connector-java.jar

提示
这里使用 5.1.48 是为了兼容 Ambari 常见 MySQL/MariaDB 初始化流程。不要随手换成 8.x 驱动,除非你确认 Ambari 版本和 JDBC 参数都已适配。离线环境优先使用 /data/modules 里的交付包,并用 SHA256 和包清单对齐。
# RHEL 系生成 Yum 元数据
如果 /data/modules 里放的是 RPM 包,在核心节点执行:
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
2
3
4
5
6
7
8
9
10
echo "Ubuntu 使用 APT 元数据,跳到下一节 dpkg-scanpackages。"
// Make sure to add code blocks to your code group

# Ubuntu 生成 APT 元数据
如果 /data/modules 里放的是 DEB 包,在核心节点执行:
echo "RHEL 系使用 createrepo,不需要执行这一段。"
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
2
3
4
5
6
7
// Make sure to add code blocks to your code group
# 所有 RHEL 节点写入本地 Yum 源
在 hadoop1.test.com、hadoop2.test.com、hadoop3.test.com 都执行:
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
2
3
4
5
6
7
8
9
10
11
如果系统使用 dnf:
sudo dnf clean all
sudo dnf makecache
sudo dnf repolist
2
3
包签名边界
gpgcheck=0 只适合已经受控的内网离线仓库。生产环境如果有签名体系,建议导入 GPG 公钥并把这里改回 gpgcheck=1。
# 所有 Ubuntu 节点写入本地 APT 源
在 hadoop1.test.com、hadoop2.test.com、hadoop3.test.com 都执行:
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
2
3
4
5
6
注意
APT 源路径最后的 ./ 不要漏掉。这个写法表示当前 HTTP 根目录就是一个简单 DEB 仓库。[trusted=yes] 同样只建议用于受控内网离线仓库;如果你已经做了 Release 和签名,应该按标准 APT 签名方式配置。
# 验证仓库可用
RHEL 系:
yum list ambari-server
yum list ambari-agent
2
Ubuntu:
apt-cache policy ambari-server
apt-cache policy ambari-agent
2
如果能看到包名和版本,说明本地仓库已经生效。
# 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
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 初始化。