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 有两个基本组件 Nimbus 和 Supervisor,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 的重构。
该实现正在审查中,详细信息可以在这里查看: https://review.openstack.org/#/c/100678/
最后,我们将创建一个带有 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/>