将 CM API 库添加到 Sahara¶
https://blueprints.launchpad.net/sahara/+spec/add-lib-subset-cm-api
本文档提出将 CM API 库添加到 Sahara,以便 Cloudera 插件无需依赖第三方库支持。
问题描述¶
目前 Cloudera 插件依赖于第三方库 cm_api(由 Cloudera 提供)。该库与 python3 不兼容,并且 Cloudera 没有资源来修复它。因此,很难将此库放入 requirements.txt 文件中。为了解决此问题,我们计划实现 CM API 的一个子集,并将其放入 Sahara 项目中,以便 Cloudera 插件不再依赖第三方库,并且我们可以默认启用此插件。
提议的变更¶
目前 Cloudera 插件中使用的 CM APIs 包括(可能不包含全部)
ApiResource.create_cluster
ApiResource.get_cluster
ApiResource.get_all_hosts
ApiResource.delete_host
ApiResource.get_cloudera_manager
ClouderaManager.create_mgmt_service
ClouderaManager.hosts_start_roles
ClouderaManager.get_service
ApiCluster.start
ApiCluster.remove_host
ApiCluster.create_service
ApiCluster.get_service
ApiCluster.deploy_client_config
ApiCluster.first_run
ApiService.create_role
ApiService.delete_role
ApiService.refresh
ApiService.deploy_client_config
ApiService.start
ApiService.restart
ApiService.start_roles
ApiService.format_hdfs
ApiService.create_hdfs_tmp
ApiService.create_yarn_job_history_dir
ApiService.create_oozie_db
ApiService.install_oozie_sharelib
ApiService.create_hive_metastore_tables
ApiService.create_hive_userdir
ApiService.create_hive_warehouse
ApiService.create_hbase_root
ApiService.update_config
ApiServiceSetupInfo.add_role_info
ApiRole.update_config
这些 API 是我们需要在我们的 CM APIs 中实现的内容。我们可以在 cdh 目录的 plugin 目录中创建一个 client 目录,并将 lib 文件放在此目录中。
替代方案¶
无
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
无
部署者影响¶
部署者将不再需要安装 cm_api 包。
开发者影响¶
当发布新的 CDH 版本时,如果它与当前使用的 client 不兼容,或者使用了一些新的 APIs,开发人员可能需要在添加对新 CDH 版本的支持时更新 client。
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
ken chen
- 其他贡献者
ken chen
工作项¶
工作内容包括
在 cdh 插件目录中添加一个 client 目录,并将 lib 文件放在此目录下。
将所有当前的 cm_api 导入更改为使用新的 client。
依赖项¶
无
测试¶
CDH 插件的 Sahara 集成测试就足够了。
文档影响¶
应该修改有关 CDH 插件先决条件和启用方式的文档,因为不再需要 cm_api。