为 sahara 添加 EDP 作业暂停和恢复功能¶
https://blueprints.launchpad.net/sahara/+spec/ add-suspend-resume-ability-for-edp-jobs
本规范旨在允许在 sahara 中暂停和恢复 edp 作业。
问题描述¶
目前 sahara 不允许暂停和恢复 edp 作业。但在某些用例中,例如,一个包含许多步骤的 edp 作业,在完成一个步骤后,用户希望暂停该作业并检查输出,然后恢复该作业。因此,通过为 sahara edp 引擎添加暂停和恢复功能,我们可以为不同的引擎(oozie,spark,storm 等)提供不同的实现。
提议的变更¶
在 sahara v11 API 中添加一个 API 接口。
在 sahara 基本 edp 引擎中定义 suspend_job() 和 resume_job() 接口,然后将此接口实现到 oozie 引擎。(Spark 和 storm 引擎将在后续规范中起草)
在 sahara 中添加“SUSPENDED”(已暂停)和“PREPSUSPENDEDED”(准备暂停)状态。只有当作业的状态为“RUNNING”(运行中)或“PREP”(准备中)时,我们才能暂停该作业,并使作业的状态显示为“SUSPENDED”或“PREPSUSPENDED”。
添加一个名为 suspend_resume_supported_job_type = {} 的验证字典,用于检查当请求到达时,哪些作业类型允许暂停和恢复。
如果作业的状态不在 RUNNING 或 PREP 中,例如,作业已经完成,我们将进行验证检查,并且没有暂停或恢复操作。
暂停或恢复 edp 作业的示例
PATCH /v1.1/{tenant_id}/job-executions/<job_execution_id>
response
HTTP/1.1 202 Accepted Content-Type: application/json
在 python-sahara-client 中添加一个 API 接口
对于 oozie 实现,我们只需调用 oozie 客户端来调用 suspend 和 resume API。
对于 spark 和 storm 实现,现在没有实现,我们稍后会添加它们。
替代方案¶
无
数据模型影响¶
无
REST API 影响¶
添加一个 API 接口。PATCH /v1.1/{tenant_id}/job-executions/<job_execution_id>
其他最终用户影响¶
无
部署者影响¶
无
开发者影响¶
无
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
在作业列表表格的右侧添加两个名为“暂停作业”和“恢复作业”的 combobox 选项。
实现¶
负责人¶
- 主要负责人
luhuichun(lu huichun)
- 其他贡献者
无
工作项¶
在 v11 中添加一个 api
在基本引擎和 oozie 引擎中添加 suspend_job 和 resume_job
添加两个新的作业状态“SUSPENDED”和“PREPSUSPENDED”。
在 python-sahara-client 中添加两个 API 接口
修改 sahara api 参考文档
添加任务以在 api-site 上更新 WADL
依赖项¶
无。
测试¶
edp 引擎中的单元测试添加场景集成测试
文档影响¶
需要进行文档说明。
参考资料¶
oozie 暂停和恢复作业的实现 https://oozie.apache.org/docs/4.0.0/CoordinatorFunctionalSpec.html