点评:Storm的实时处理是有代价的

开源流处理解决方案在规模上被证明是可靠的,但是很难学习和使用

思想库

Storm是一个顶级Apache项目,它是一个Java框架,旨在帮助程序员编写在Hadoop集群上运行的实时应用程序。Storm是在Twitter上设计的,它擅长处理大容量的消息流,以收集指标、检测模式,或者在检测到流中的某些条件时采取行动。典型的Storm场景是实时和大容量的交叉点,例如分析金融交易欺诈或监控蜂窝基站流量以维持服务水平协议。

传统上,这类系统是使用由消息总线(如JMS)连接的计算机网络构建的。Storm的不同之处在于,它将消息传递和处理基础设施组合成一个称为“拓扑”的概念单元,并在Hadoop集群上运行它们。这意味着Storm集群可以利用Hadoop的线性可伸缩性和容错能力,而不需要在增加容量时重新配置消息传递总线。

当与Storm的新团队一起工作时,我发现从三个维度(操作、拓扑和数据)处理系统设计很有帮助。它们大致映射到传统企业应用程序中相应的维度上,但转换到Hadoop世界中。Storm拓扑是一个处理工作流,类似于在多用途Hadoop集群中由Oozie管理的处理管道中的一组步骤。

拓扑是Storm中部署的基本单元。它由两种类型的对象组成:spout(消息源)和bolts(消息处理器)。spout可用于许多常见数据源,如JMS、Kafka和HBase。

部署风暴群

Storm集群通常同时运行多个Storm应用程序(拓扑)。在这个意义上,它类似于Java应用程序服务器。开发人员打包一个包含Storm拓扑及其所有依赖项的JAR文件,然后将其部署到集群中,直到终止。Storm应用程序开发人员不需要知道其应用程序运行在的集群的具体配置,因此他们可以专注于应用程序的具体细节。

继续阅读这篇文章,现在注册

工资调查:结果在