为 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