在Ubuntu背后的公司Canonical,每6个月进行一次技术工作,以第一手测试我们的工具并向其他人展示新想法。 这次,我创建了一个即时大数据解决方案,更具体地讲是“即时风暴”。
Storm现在是Apache基金会的一部分,但以前Storm是Nathan Marz在Twitter期间建立的。 Storm是用于实时和分布式计算的流处理引擎。 您可以使用Storm来聚合事件的实时流,进行机器学习,进行分析,进行分布式ETL等。
Storm由多种服务构建而成,需要Zookeeper。 这是一个复杂的解决方案,并且易于部署,集成和扩展。 我在Canonical所做的第一个技术项目是创建Storm Juju魅力 。 尽管我能够自动化Storm的部署,但是仍然存在一些问题,因为用户仍然必须阅读有关如何实际使用Storm的信息。
Instant Storm是解决此问题的第一步。 我创建了一个StormDeployer超级按钮 ,可以读取yaml文件,开发人员可以在其中指定多个拓扑。 为每个名称指定拓扑的名称,jar文件,Github中的位置,如何打包jar文件等。然后,通过将yaml文件上载到Github或任何公共Web服务器,并给它扩展名.storm世界能够通过两个步骤立即重用拓扑:
1.通过简单地在Juju中拖放,即可部署Storm + Zookeeper + StormDeployer随附的Storm捆绑包 :
2.获取风暴文件的URL,并将其放入StormDeployer的服务设置的deploy字段中:
另外,您可以使用Juju命令行:
juju set stormdeployer "deploy=http://somedomain/somefile.storm"
Github上已经有几个示例可用,但是可以肯定地使用以下示例:
https://raw.githubusercontent.com/mectors/stormdeployer-examples/master/storm-hackaton/storm-hackaton.storm
StormDeployer将从Github下载项目,将jar与Maven打包,然后将jar上传到Storm。 您可以在日志(/opt/storm/latest/log/deploy.log)中查看进度。
这是在任何公共云,私有云上或在任何裸机服务器(X86,ARM64和Power 8)上使用Ubuntu的Metal-as-a / Service / MaaS部署Storm的最简单方法。 有关Juju安装说明,请参见此处。
这是第一个版本,有一些限制。 要添加的真正不错的功能之一是使用Juju使拓扑和其他超级按钮之间的集成动态化。 例如,您可以创建连接到Kafka或Cassandra护身符的喷嘴或螺栓。 Juju可以自动告知拓扑连接信息,并在发生任何更改时更新正在运行的拓扑。 这将使运行长期运行的Storm拓扑更加健壮。
我很高兴将自己的工作捐赠给Apache基金会,并指导任何想要拥有所有权的人……
翻译自: https://www.javacodegeeks.com/2014/09/instant-big-data-stream-processing-instant-storm.html