CDH6.3.2版本安装-适配centos8或alinux3或其他国产套皮centos系统
甚至连centos8目前也不支持,cdh更早的版本支持的更少
一、背景说明
- • 软件版本
- • Cloudera Manager:6.3.x
- • CDH:6.3.2(最后一个开源版本)
- • 操作系统
- • 国产化 Linux(例如 Alibaba Cloud Linux 3 / alinux3 等),非官方支持列表中的 RHEL/CentOS 7
- • 主要问题
- 1. 安装 CM Server / Agent 时,依赖的 OpenSSL 版本与系统不匹配;
- 2. CM Web 界面中 Parcel 分发失败,提示主机 OS 未分配(unknown),导致 CDH Parcel 无法分发/安装。
二、问题一:CM Server/Agent 安装依赖 OpenSSL 失败
1. 典型报错
安装 cloudera-manager-agent-6.3.1 / cloudera-manager-server-6.3.1 时:
openssl-devel is needed by cloudera-manager-agent-6.3.1-1466458.el7.x86_64
或间接导致 libssl.so.10 / libcrypto.so.10 找不到。
本质原因:
Cloudera 的 rpm 是按 CentOS 7 / RHEL7 打出来的,要求的是 1.0.x 系列的 OpenSSL 和对应的 so;
国产 OS 自带的是 OpenSSL 1.1.x(甚至更高),ABI 不兼容。
2. 解决思路
核心策略:引入 CentOS 7 的 OpenSSL 1.0.2 库作为兼容层,同时保留系统自带的 1.1 版本,避免破坏 ssh 等基础功能。
3. 操作步骤
步骤 A:备份系统原有 1.1 库
通常路径类似:
cp /usr/lib64/libssl.so.1.1 /root/backup-libssl.so.1.1
cp /usr/lib64/libcrypto.so.1.1 /root/backup-libcrypto.so.1.1
具体路径按实际系统为准,原则是:先把 1.1 那一套完整备份出来。
步骤 B:强制安装 CentOS 7 的 openssl-libs
将下列 rpm 拷到服务器(示例):
openssl-libs-1.0.2k-19.el7.x86_64.rpm
然后执行:
rpm -Uvh openssl-libs-1.0.2k-19.el7.x86_64.rpm --nodeps --force
这会在系统中提供:
- •
/usr/lib64/libssl.so.10 - •
/usr/lib64/libcrypto.so.10
满足 CM/Agent 以及 Python M2Crypto 等旧组件的运行需求。
注意:这一步可能会卸载/覆盖系统自带的 OpenSSL 包,所以 必须先做步骤 A 的备份。
步骤 C:恢复系统原有 1.1 库(保护 ssh 等)
将之前备份的 1.1 版本库放回原位:
cp /root/backup-libssl.so.1.1 /usr/lib64/libssl.so.1.1
cp /root/backup-libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ldconfig
这样系统上同时存在:
- •
libssl.so.10/libcrypto.so.10(给 Cloudera / M2Crypto 用) - •
libssl.so.1.1/libcrypto.so.1.1(给系统服务 / ssh 用)
结果:
- •
cloudera-scm-server、cloudera-scm-agent、supervisord不再报libssl.so.10找不到; - • CM Server、Agent 能正常启动,日志不再有
ImportError: libssl.so.10类错误。
三、问题二:CM Web 中 Parcel 分发失败(unknown OS)
1. 现象
在 CM Web 向导中:
-
• “Install Parcels” 页面显示:``` CDH 6.3.2-1.cdh6.3.2.p0.1605554 已激活: 0/0 已解压: 0/0 已分配: 0/0 已下载: 0%
-
• 并提示:
一個或多個主機沒有報告其操作系統分配。這可能是由於運行已過期的 Cloudera Manager Agent 版本造成的。
而 Agent 日志和心跳其实都是正常的。
2. 原因分析
CM 的工作机制:
- 1. Agent 上报主机的 OS 信息(来自
/etc/os-release等); - 2. CM 根据规则将其映射为内部支持的 OS 类型,如:
- •
redhat7→ 对应*-el7.parcel - •
sles12→ 对应*-sles12.parcel - •
ubuntu16→ 对应*-ubuntu16.parcel
- •
- 3. 对于 不在支持列表里的国产系统,CM 无法识别,会直接归类为
unknown; - 4. 默认的
manifest.json中 没有为unknown提供 parcel 配置,因此:- • CM 认为“没有 OS 被分配”;
- • UI 上就是
0/0,parcel 无法下载/分发。
3. 解决思路
核心策略:
让 CM 认为 “unknown” 这个 OS 也有对应的 CDH parcel,
通过修改manifest.json+ 重命名 parcel 文件,硬适配国产 OS。
4. 操作步骤(以 CDH 6.3.2 为例)
假设你本地离线仓库结构类似:
cd /path/to/cdh6/
ls
# allkeys.asc
# CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
# CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
# CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
# manifest.json
步骤 A:重命名 parcel 文件为 unknown
mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel \
CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel
sha1/sha256文件可以保留 el7 命名,也可以一并复制/改名,视 manifest 配置而定。
步骤 B:修改 manifest.json 增加 unknown OS 配置
打开 manifest.json,在 parcels 段中复制一份 el7 的配置,修改为 unknown,类似:
{
"parcels": [
{
"components": [
{
"name": "kafka",
"pkg_release": "1605554",
"pkg_version": "2.2.1+cdh6.3.2",
"version": "2.2.1-cdh6.3.2"
},
{
"name": "hadoop",
"pkg_release": "1605554",
"pkg_version": "3.0.0+cdh6.3.2",
"version": "3.0.0-cdh6.3.2"
}
// ... 省略其它组件 ...
],
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"parcelName": "CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel",
"replaces": "IMPALA,SOLR,SPARK,KAFKA,IMPALA_KUDU,KUDU,SPARK2"
}
]
}
关键点:
- •
parcelName必须和你刚刚重命名后的文件 一模一样; - •
hash一般保持和原 el7 版本一致(也可以重算,对应 sha1/sha256)。
核心目的:让 CM 在识别 OS 为
unknown时,也能从 manifest 中找到一条匹配的 parcel 记录。
步骤 C:确保 CM 使用你改过的 manifest
- • 本地 HTTP 仓库(例如
http://<server>/cdh6/)指向的就是你刚刚修改的目录; - • 确保
manifest.json、*.parcel、*.sha1/*.sha256都已经对外可访问。
步骤 D:在 登录 CM 界面之前 完成上述操作
非常重要:
- • 如果你在 第一次登录 CM Web 之前 就把 manifest & parcel 文件改好:
- • CM 初始化
cmf数据库时,会直接用正确的unknown配置; - • 后续就不会出现「不支持的 OS / 未分配 OS」这种 parcel 问题。
- • CM 初始化
- • 如果你已经登录过,且 CM 已经初始化完毕:
- • 数据库
cmf.parcels表中已记录原始的 el7 parcel 信息; - • 再改 manifest/文件名,可能需要额外手动修改
cmf.parcels表,风险略高。
- • 数据库
四、总结成一条路径
对国产化操作系统(例如 alinux3)部署 CDH 6.3.2 + CM 6.3.x,大体流程可以总结为:
- 1. 处理 OpenSSL 兼容性
- • 备份系统自带
libssl.so.1.1/libcrypto.so.1.1; - • 强制安装 CentOS7 的
openssl-libs-1.0.2k...; - • 还原 1.1 的库文件,确保 ssh 和系统正常;
- • 确认
libssl.so.10/libcrypto.so.10存在且被ldd找到。
- • 备份系统自带
- 2. 在 CM 初始化前准备好国产 OS 专用的 manifest + parcel
- • 重命名
CDH-6.3.2-...-el7.parcel为...-unknown.parcel; - • 修改
manifest.json,增加unknown的 parcel 条目; - • 确保 HTTP 仓库能正确暴露这些文件。
- • 重命名
- 3. 启动/安装
- • 启动
cloudera-scm-server-db(嵌入式 PostgreSQL); - • 启动
cloudera-scm-server,等待初始化完成; - • 启动
supervisord和cloudera-scm-agent,确保心跳正常; - • 登录 CM Web → 向导中 “Install Parcels”
此时应该能看到:
CDH 6.3.2-... 已激活: 0/1,已解压: 0/1,已分配: 0/1,下载/分发可以正常进行。
- • 启动