Cloudera 插件中更好的版本管理

https://blueprints.launchpad.net/sahara/+spec/cdh-version-management

本规范建议在 Cloudera 插件中更好地管理不同版本的 CDH。

问题描述

CDH 插件中当前 CDH 版本管理的情况

  • 我们完全没有 CDH 插件的版本控制。

  • 由于向后兼容性要求,所有现有代码都需要支持从 5.0.0 到最新版本(目前是 5.3.0)的 CDH 版本。

这将导致以下问题

  • 当发布新软件包时,我们不知道我们的插件是否仍然可以工作。事实上,没有人能够保证这一点。

  • 我们的工作必须基于一个非静态的环境。

  • 期望向后兼容,但根本无法保证。例如,我们不确定明天发布的新 CDH 软件包是否与旧插件代码或配置文件兼容。

  • CI 测试结果不稳定,因此我们不能总是将其转化为投票。

  • 如果新发布的软件包版本带来问题,即使他们没有使用该版本,也可能会阻止所有开发人员。

  • 当我们不想支持某些过时的版本时,我们无法轻松地将其删除。

提议的变更

  • 添加软件包版本约束,并提供一个关键软件包版本列表来支持 CDH5.3.0(或 5.2.0),并仅基于此进行开发。

  • 冻结软件包以防止后续 CDH 版本进入。

  • 在 plugin/cdh 中添加子目录,例如 5_3_0 用于 CDH5.3.0,以支持不同版本的 CDH。就像我们为 vanilla 和 hdp 插件所做的那样。

  • 我们还需要对 sahara-image-elements 项目进行一些修改,以支持不同版本的 CDH 镜像构建。

  • 我们需要更改 sahara-ci-config 项目,将当前的 cdh 测试分解为针对不同 CDH 版本的若干测试。所有新添加的版本不应破坏旧版本的测试。例如,当前的 gate-sahara-nova-direct-cdh_ubuntu-aio 将被分离为 sahara-nova-direct-cdh_5.0_ubuntu-aio 和 sahara-nova-direct-cdh_5.3.0_ubuntu-aio。

  • 将 sahara/tests/integration/tests/gating/test_cdh_gating.py 分解为几个文件,例如 test_cdh5_0_0_gating.py 和 test_cdh5_3_0_gating.py,以支持不同的 CDH 版本。

  • 我们不需要确保向后兼容。例如,CDH5.3.0 代码不需要适用于 CDH5.0.0。我们可以添加一些仅针对 CDH 后期版本的功能和代码,这些功能不被以前的 CDH 版本支持。

  • 如果我们要添加更多 CDH 版本,我们需要打开一个 BP 来执行此操作。例如,如果未来我们要支持 CDH 5.4.0,则需要进行以下工作

    • 在 plugin/cdh 中添加一个目录 5_3_0,包括支持 CDH 5.3.0 的代码。

    • 修改 sahara/image-elements/elements/hadoop_cloudera 中的脚本,添加安装 CDH 5.4.0 软件包的函数,同时仍然保留安装以前 CDH 版本软件包的函数。

    • 在 sahara/tests/integration/tests/gating 目录中添加一个 test_cdh5_4_0_gating.py 用于集成测试。

    • 在 sahara-ci-config 中添加一个新的 ci 测试项,例如 gate-sahara-nova-direct-cdh_5.4.0_ubuntu-aio。我们可以一开始将此项设置为非投票,并在调整和验证没问题后将其设置回投票。

替代方案

数据模型影响

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

实现

负责人

主要负责人

ken chen

其他贡献者

ken chen

工作项

工作项目包括

  • 更改 sahara/sahara/plugins/cdh 中的目录结构,添加 5_3_0 和 5_0_0 用于 CDH5.0.0 和 5.3.0(我们将支持这两个版本作为第一步)。

  • 将每个版本的通用代码保留在原始位置,并将特定于版本的代码和文件移动到各自的目录中。

  • 在 sahara-image-elements/elements/hadoop-cloudera 中添加代码,以支持为不同的 CDH 版本安装不同的软件包组。

  • 在 sahara/tests/integration/tests/gating 目录中添加不同的测试项,以支持不同的 CDH 版本

  • 在 sahara-ci-configs 项目中添加针对不同 CDH 版本的项目。首先我们将它标记为非投票。验证后,我们可以将其标记为投票。

  • 测试和评估更改。

依赖项

测试

逐个创建不同 CDH 版本的集群,并对每个集群进行集成测试。

文档影响

参考资料