4.2.1 Storm流计算概述

更新于 2026年10月10日 版权声明
4.2.1 Storm流计算概述

Storm是Twitter的开源流计算解决方案,是开发人员为弥补Hadoop的MapReduce高延迟缺陷而推出的一个免费开源的分布式流式计算框架。像Hadoop批量处理大数据一样,Storm可以实时处理大数据。

1)Storm是什么

在Storm之前,开发人员进行实时数据处理时,需要维护一堆消息队列和消费者,而这些消息队列和消费者构成了非常复杂的图结构。在数据处理进程中,消费者需要从队列里读取消息,处理完成后,去更新数据库,或者给其他队列发新消息。使得开发人员主要的时间都花费在关注往哪里发消息、从哪里接收消息、消息如何序列化等工作中,真正的业务逻辑只占了源代码的一小部分。并且一个分布式应用程序的逻辑往往是运行在很多工作机(Worker)上,这些Worker需要各自单独部署,还需要各自部署自己的消息队列,从而导致应用系统往往非常脆弱,而且不具备容错能力。

Storm完整地解决了这些问题。它是为分布式场景而生的,抽象了消息传递,会自动地在集群机器上并发地处理流式计算,让用户专注于实时处理的业务逻辑。Storm的部署管理非常简单,而且在同类的流式计算工具中,Storm的性能也是非常出众的。

Storm是一个分布式的、容错的实时计算系统,它可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm保证每个消息都会得到快速处理。Storm之于实时处理,就好比Hadoop之于批处理。

2)Storm特点

①编程简单:开发人员只需要关注应用逻辑,而且跟Hadoop类似,Storm提供的编程原语也很简单。

②高性能、低延迟:可应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景。

③分布式:可轻松应对数据量大,单机搞不定的场景。

④可扩展:随着业务发展,数据量和计算量越来越大,系统可水平扩展。

⑤容错性:单个节点挂了不影响应用。

⑥消息不丢失:保证消息处理。(https://www.daowen.com)

3)Storm应用

由于Storm具有处理速度快(每个节点每秒钟可以处理超过百万的数据组)、可扩展和容错能力强、容易搭建和操作等优点。所以,Storm有很多应用:实时分析、在线机器学习、连续计算、分布式远程过程调用(RPC)、ETL等。

Storm作者Nathan Marz提供了在Twitter中使用Storm的大量示例。一个最有趣的示例是生成趋势信息。 Twitter从海量的推文中提取所浮现的趋势,并在本地和国家级别维护这些趋势信息。这意味着当一个案例开始浮现时, Twitter的趋势主题算法就会实时识别该主题。这种实时算法是使用Storm实现的基于Twitter数据的一种连续分析。

4)Storm对比Hadoop

表4⁃1简单对比了Storm和Hadoop。Hadoop无疑是大数据分析的王者,本质上是一个批量处理系统,它专注于大数据的批量处理。数据存储在Hadoop文件系统里(HDFS),并在处理的时候分发到集群中的各个节点,当处理完成,产出的数据放回到HDFS上。在Storm上构建的拓扑处理的是持续不断的流式数据。不同于Hadoop的任务,这些处理过程不会终止,会持续处理到达的数据。

表4⁃1 Storm与Hadoop简单对比

图示

Hadoop处理的是静态的数据,而Storm处理的是动态的、连续的数据。Twitter的用户每天都会发上千万的推文,所以这种处理技术是非常有用的。Storm不仅是一个传统的大数据分析系统,还是一个复杂事件处理系统的例子。复杂事件处理系统通常是面向检测和计算的,这两部分都可以通过用户定义的算法在Storm中实现。例如,复杂事件处理首先可以用来从大量的事件中区分出有意义的事件,然后对这些事件实时处理。

Storm集群和Hadoop集群表面上看很类似。但是Hadoop上运行的是MapReduce作业,而在Storm上运行的是拓扑Topology,这两者之间是非常不同的。其关键的区别是:一个MapReduce作业最终会结束,而一个Topology拓扑会永远运行(除非手动杀掉)。表4⁃2列出了Hadoop与Storm的角色和组件区别。

表4⁃2 Storm与Hadoop角色和组件对比

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)