Storm EDP

https://blueprints.launchpad.net/sahara/+spec/storm-edp

此蓝图旨在为 Storm 实现 EDP。这将需要一个 Storm Job 类型。

问题描述

Sahara 需要一个 EDP 实现来允许提交 Storm Jobs。

提议的变更

EDP 引擎的实现将具有 3 个基本功能

  • run_job()

  • get_job_status()

  • cancel_job(kill=False)

这些方法映射到 Storm 的:* deploy_toplogy (即 storm jar topology-jar-path class …) * storm list (即 storm list) * storm deactivate (即 storm deactivate topology-name) * storm kill (即 storm kill topology-name)

此实现的第二部分是调整 UI 以允许提交 Storm Job。

替代方案

我们也许可以将 Storm jobs 作为 Java Job 提交,但为用户提供一个特定的 Storm Job 更好。

数据模型影响

无。

REST API 影响

无。

其他最终用户影响

无。

部署者影响

无。

开发者影响

无。

Sahara-image-elements impact

无。

Sahara-dashboard / Horizon 影响

Sahara 需要调整其 UI 以允许创建 Storm Jobs。crobertsrh 已经完成了一个草稿,可以在 https://review.openstack.org/#/c/112408/4 中找到

UI 的主要更改将是:* 一个框供用户定义要执行的主类 * 一个框供用户提供参数(如果适用) * 按钮来控制作业执行(启动、停止、杀死、查看状态) * 由于在同一个拓扑中可以执行多个作业,因此可以通过作业或通过拓扑来控制。在第二种情况下,用户必须在拓扑中选择作业来进行控制。

实现

负责人

主要负责人

tellesmvn

其他贡献者

tmckay (主要评审) crobertsrh

工作项

  • 实现 Storm Job 类型

  • 为 Storm 实现 EDP 引擎

  • 实现单元测试

  • 实现集成测试

依赖项

无。

测试

首先,我们将实现单元测试,遵循 Spark 在 https://github.com/openstack/sahara/blob/master/sahara/tests/unit/service/edp/spark/test_spark.py 中的示例。 并且实现集成测试

文档影响

需要更新文档,其中包含有关 Storm EDP 和 Storm Job 类型的信息。

参考资料

  • Etherpad <https://etherpad.openstack.org/p/juno-summit-sahara-edp>

  • Storm 文档 <http://storm.incubator.apache.org/>