CDH6.3.2版本安装-适配centos8或alinux3或其他国产套皮centos系统
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 版本与系统不匹配;
-
- 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.1cp /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.1cp /root/backup-libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1ldconfig
这样系统上同时存在:
- •
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 的工作机制:
-
- Agent 上报主机的 OS 信息(来自
/etc/os-release等);
- Agent 上报主机的 OS 信息(来自
-
- CM 根据规则将其映射为内部支持的 OS 类型,如:•
redhat7→ 对应*-el7.parcel
- CM 根据规则将其映射为内部支持的 OS 类型,如:•
-
•
sles12→ 对应*-sles12.parcel -
•
ubuntu16→ 对应*-ubuntu16.parcel -
- 对于 不在支持列表里的国产系统,CM 无法识别,会直接归类为
unknown;
- 对于 不在支持列表里的国产系统,CM 无法识别,会直接归类为
-
- 默认的
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 已经初始化完毕:• 数据库
cmf.parcels表中已记录原始的 el7 parcel 信息; -
• 再改 manifest/文件名,可能需要额外手动修改
cmf.parcels表,风险略高。
四、总结成一条路径
对国产化操作系统(例如 alinux3)部署 CDH 6.3.2 + CM 6.3.x,大体流程可以总结为:
-
- 处理 OpenSSL 兼容性• 备份系统自带
libssl.so.1.1/libcrypto.so.1.1;
- 处理 OpenSSL 兼容性• 备份系统自带
-
• 强制安装 CentOS7 的
openssl-libs-1.0.2k...; -
• 还原 1.1 的库文件,确保 ssh 和系统正常;
-
• 确认
libssl.so.10/libcrypto.so.10存在且被ldd找到。 -
- 在 CM 初始化前准备好国产 OS 专用的 manifest + parcel• 重命名
CDH-6.3.2-...-el7.parcel为...-unknown.parcel;
- 在 CM 初始化前准备好国产 OS 专用的 manifest + parcel• 重命名
-
• 修改
manifest.json,增加unknown的 parcel 条目; -
• 确保 HTTP 仓库能正确暴露这些文件。
-
- 启动/安装• 启动
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,下载/分发可以正常进行。
如果你后面准备写一篇内部文档/Blog,可以直接在这个基础上再补一段「风险说明 & 不推荐用于生产」就够用。
.preview-wrapper pre::before {
position: absolute;
top: 0;
right: 0;
color: #ccc;
text-align: center;
font-size: 0.8em;
padding: 5px 10px 0;
line-height: 15px;
height: 15px;
font-weight: 600;
}
.hljs.code__pre > .mac-sign {
display: flex;
}
.code__pre {
padding: 0 !important;
}
.hljs.code__pre code {
display: -webkit-box;
padding: 0.5em 1em 1em;
overflow-x: auto;
text-indent: 0;
}
h2 strong {
color: inherit !important;
}
更多推荐
所有评论(0)