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 版本的集群,并对每个集群进行集成测试。
文档影响¶
无
参考资料¶
无