Apache Storm与Hadoop相比较

29

Storm和Hadoop有什么不同?Hadoop似乎是开源大规模批处理的事实标准,Storm是否比Hadoop更具优势?或者它们完全不同?


4
我认为这个问题非常明确,很难理解为什么这样一个有用的问题被关闭了。这个问题很直接,没有必要提供事实,参考资料等。 - mvallebr
6个回答

38
请问您有什么看法呢?

Twitter Storm被誉为实时Hadoop。这更多是一种市场宣传,以便更容易理解。

虽然二者都是分布式应用程序解决方案,它们在架构元素(如主/从、基于Zookeeper的协调)等常见分布式方面类似,但我认为它们的相似之处到此为止了。

Twitter更像一个处理数据的管道,这个管道连接各种计算节点,接收数据、进行计算并输出结果。(他们的术语是spout和bolt)把这个比喻扩展到可以重新设计的复杂管道布线上就是Twitter Storm。

简单来说,它可以随时处理数据,没有延迟。

然而,Hadoop在这方面有所不同,主要是由于HDFS(Hadoop分布式文件系统)。它是针对分布式存储和各个层面(磁盘、机器、机架等)的故障容错解决方案。

MapReduce旨在利用HDFS上的数据本地化来分配计算作业。它们一起不能提供实时数据处理的功能。但是,在查找大量数据时并不总是需要实时性。(类比寻找干草堆中的针头)

简而言之,Twitter Storm是一个分布式实时数据处理解决方案。我认为我们不应该将其与Hadoop进行比较。Twitter构建它是因为它需要处理小推文但有巨大数量的数据,并且需要实时处理。

如果您非要比较的话,请参考:HStreaming


6
完全同意(+1)。只是需要说明一下:Twitter并非创造了这个技术,而是通过收购的方式获得的。它最初是由BackType公司开发的。 - johndodo
1
@johndodo:谢谢。我完全不知道它的起源。 - pyfunc
不错的比喻,就像是不断变化的拓扑结构的流水线。 - SChepurin
2
由于问题已经关闭,我想作为评论添加我的意见:将Storm与Hadoop视为STDIN处理与File处理。以单词计数应用程序为例,Stormie从控制台读取输入的单词,而Hadooper则从您昨天创建的磁盘文件中扫描单词。当任务量变得太大时,Storm和Hadoop都必须进行分布式处理。 - lcn
基本上,Storm 擅长 Hadoop 不擅长的所有事情(实时计算)。而 Hadoop 擅长 Storm 不擅长的所有事情(持久性)。这两个系统是互补的,Twitter 现在开源了 [Summingbird|https://github.com/twitter/summingbird],它可以连接这两个系统... - snooze92
非常感谢您的评论。它确实帮助了我很多。我正在构建一个爬虫引擎,一开始想使用Hadoop,但现在看来Storm更适合我。 - Breno Inojosa

11

基本上,它们都用于分析大数据,但 Storm 用于实时处理,而 Hadoop 用于批处理。

我找到了这个对 Storm 的很好的介绍: 点击这里


5
与其进行比较,它们现在应该相互补充,同时具有批处理和实时(伪实时)处理功能。这里有一段相关的视频演示- Ted Dunning on Twitter's Storm

这个 Twitter 风暴架构能在 Windows 环境中复制吗? - vbNewbie
1
几乎所有东西都可以被复制,但我怀疑在Windows上实现这种方式没有任何意义,因为Storm旨在进行“实时”处理。 - SChepurin
“伪实时”是什么意思,请详细解释。 - samthebest
只是想指出,“真正”的实时软件具有更严格的要求,包括操作系统 - “实时操作系统(RTOS)是一种旨在服务于实时应用程序请求的操作系统(OS)。它必须能够处理数据,通常无需缓冲延迟。处理时间要求(包括任何OS延迟)以十分之一秒或更短的时间来衡量。”(https://en.wikipedia.org/wiki/Real-time_operating_system)。从这个意义上讲,Storm的实时功能是与批处理系统区分开来的一种方式。 - SChepurin

3

我之前一直在使用Storm,但现在我已经放弃了这个非常好的技术,转而使用一个更加惊人的技术:Spark (http://spark.apache.org)。它为开发人员提供了统一的API,可用于批处理或流处理(微批处理),以及机器学习和图形处理。

值得一试。


1

Storm 用于快速数据(实时)处理,而 Hadoop 用于大数据(已有大量数据)处理。Storm 无法处理大数据,但可以将其作为输出生成大数据。


0
Apache Storm是一个免费且开源的分布式实时计算系统。Storm使得可靠地处理无限流数据变得容易,就像Hadoop为批处理所做的那样,Storm为实时处理所做的。由于Hadoop生态系统中存在许多子系统,因此我们必须根据业务需求和特定系统的可行性选择正确的子系统。
Hadoop MapReduce适用于一次处理一个作业的批处理。这就是为什么Hadoop被广泛用作数据仓库工具而不是数据分析工具的原因。
由于问题只涉及“Storm”与“Hadoop”,请查看Storm use cases - 金融服务、电信、零售、制造业、交通运输。
  1. Hadoop MapReduce最适合批处理。
  2. Storm是一个完整的流处理引擎,可以用于具有亚秒延迟的实时数据分析。

看一下这个dezyre文章,比较Hadoop、Storm和Spark之间的差异和相似之处。它解释了它们之间的相似和不同。

可以用下面的图片(来自dezyre文章)概括:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接