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 版本与系统不匹配

    1. 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-servercloudera-scm-agentsupervisord 不再报 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 等);
    1. CM 根据规则将其映射为内部支持的 OS 类型,如:• redhat7 → 对应 *-el7.parcel
  • sles12 → 对应 *-sles12.parcel

  • ubuntu16→ 对应 *-ubuntu16.parcel

    1. 对于 不在支持列表里的国产系统,CM 无法识别,会直接归类为 unknown
    1. 默认的 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,大体流程可以总结为:

    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 找到。

    1. 在 CM 初始化前准备好国产 OS 专用的 manifest + parcel• 重命名 CDH-6.3.2-...-el7.parcel...-unknown.parcel
  • • 修改 manifest.json,增加 unknown 的 parcel 条目;

  • • 确保 HTTP 仓库能正确暴露这些文件。

    1. 启动/安装• 启动 cloudera-scm-server-db(嵌入式 PostgreSQL);
  • • 启动 cloudera-scm-server,等待初始化完成;

  • • 启动 supervisordcloudera-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;
    }
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐