Storm 集成

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

该蓝图旨在在 Sahara 中实现 Storm 作为一种处理选项。Storm 是一个实时处理框架,在大数据处理社区中被广泛使用。

问题描述

目前 Sahara 只能以批处理方式处理大数据。Storm 提供了一种易于设置的流处理方式。将 Storm 集成到 Sahara 中,将为 Sahara 增加一项新功能,用户不仅可以处理批数据,还可以处理实时数据。

提议的变更

  • 该实现分为三个步骤

    • 首先,我们需要实现 Storm 插件。

      • 识别 Storm 配置文件并通过 sahara 管理其创建;

      • 创建插件本身以管理 Storm 部署;

    • 其次,我们需要创建一个新的 Storm 作业管理器,遵循 Trevor McKay 的重构。

    • 最后,我们将创建一个带有 Storm 安装的新镜像。

  • 节点组

    • Storm 有两个基本组件 NimbusSupervisor,Nimbus 是主节点,托管 UI 并且是拓扑的主要节点。Supervisors 是工作节点。除此之外,Storm 只需要 zookeeper 才能运行,我们也需要它。我们将拥有的基本节点组是

      • Nimbus;

      • Supervisor;

      • Nimbus 和 Supervisor;

      • Zookeeper;

      • Nimbus 和 Zookeeper;

      • Supervisor 和 Zookeeper;

      • Nimbus、Supervisor 和 Zookeeper

替代方案

数据模型影响

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-image-elements 可能是创建 storm 镜像的地方,需要更深入的调查,但看起来是创建和发布 storm 镜像的最佳位置。

Sahara-dashboard / Horizon 影响

这里首先需要做的更改是在选择这种类型的作业时显示 Storm 的配置选项。还需要一个部署作业,用户可以在其中提交拓扑 jar 和运行它的命令行。目前,我认为 UI 没有其他更改,作业非常简单,不需要特殊配置。

实现

负责人

主要负责人

  • tellesmvn

工作项

该实现分为三个步骤

  • 首先,我们需要实现 Storm 插件。

    • Storm 插件类似于 Spark 插件。实现将基于 Spark 的,但将进行必要的更改。

    • Storm 不依赖于许多配置文件,只有一个是需要的,并且被所有节点使用。该配置文件是用 YAML 编写的,应该在插件中动态写入,因为它需要主节点和 zookeeper 节点(们)的名称或 IP 地址。我们将需要 PYYAML 来将此配置解析为 YAML。PYYAML 已经是 OpenStack 的全局要求,也将添加到 Sahara 的要求中。

    • 插件将运行以下进程

      • Storm Nimbus;

      • Storm Supervisor;

      • Zookeeper。

  • 其次,我们需要创建一个新的 Storm 作业管理器,遵循 Trevor McKay 的重构。

  • 最后,我们将创建一个带有 Storm 安装的新镜像。

    • 这部分尚未最终决定,但对我来说,似乎最好准备一个带有 storm 的镜像,而不是每次设置新集群时都必须安装它。

依赖项

测试

我将编写单元测试,基本上是测试写入配置文件,可以根据需要添加更多测试。

文档影响

我们需要在文档中添加 Storm 作为新插件,并编写如何使用该插件。此外,sahara-extra 中将提供一个运行 storm 作业的示例

参考资料

  • Wiki <https://wiki.openstack.org/wiki/HierarchicalMultitenancy>

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

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