我需要对从物联网传感器(CEP,离群值检测等)获取的数据进行一些数据分析。
我在互联网上搜索,根据我们的限制找到了我可以使用的工具:
我发现Apache Storm是一个很好的解决方案,基于我读到的内容,我们可以通过安装azure数据湖工具从visual studio开发c#中的spouts,bolt。
我安装了所有东西并开始开发一个简单的拓扑。问题是,拓扑似乎只能部署到Azure HD Insights
我的问题:是否可以将c#拓扑部署到不在Azure中的风暴群集?我想提交将拓扑提交到Storm docker镜像。
答案 0 :(得分:0)
绝对有可能。我无法找到Azure数据湖工具的源代码(可能不是开源的?),但是如何在其他语言中实现Storm拓扑的参考是http://storm.apache.org/releases/2.0.0-SNAPSHOT/Multilang-protocol.html。
这里有一个如何在这里实现multilang拓扑的例子https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/WordCountTopology.java,它在Python中实现了它的一个螺栓。您可能会注意到该类顶部有一个ShellBolt,它调用python文件。 python文件包含bolt实现https://github.com/apache/storm/blob/master/examples/storm-starter/multilang/resources/splitsentence.py,它使用Python的Storm multilang实现https://github.com/apache/storm/blob/master/storm-multilang/python/src/main/resources/resources/storm.py。
可悲的是Storm只附带了Python,Javascript和Ruby的包装器,但你可以编写自己的(如果结果很好的话,可以将它贡献给项目)?
如果你不想实现自己的包装器,快速谷歌出现了https://github.com/ziyunhx/storm-net-adapter,我还没试过,但它可能值得一试?
您可能还会嘲笑Microsoft让他们开源数据湖工具,或者至少提供在非Azure群集上运行的支持。他们的工具很可能包含Storm的多重包装。