走进大数据 | Apache Spark和Apache Storm的区别

Posted ItStar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了走进大数据 | Apache Spark和Apache Storm的区别相关的知识,希望对你有一定的参考价值。

Apache Spark和Apache Storm的区别是什么?他们各自适用于什么样的应用场景?这是stackoverflow上的一个问题,本文将答案做了简要整理


走进大数据 | Apache Spark和Apache Storm的区别


原文:http://www.vimsky.com/2017/02/1230.html?utm_source=tuicool&utm_medium=referral


Apache Spark是基于内存的分布式数据分析平台,旨在解决快速批处理分析任务、迭代机器学习任务、交互查询以及图处理任务。其最主要的特点在于,Spark使用了RDD或者说弹性分布式数据集。 RDD非常适合用于计算的流水线式并行操作。RDD的不变性(immutable)保证,使其具有很好的容错能力。如果您感兴趣的是更快地执行Hadoop MapReduce作业,Spark是一个很好的选项(虽然必须考虑内存要求)。Spark相对于hadoop MR来说,除了性能优势之外,还有大量丰富的API,这使得分布式编程更高效。


Spark架构图如下,总体结构非常简洁,没什么需要多说的,这里对spark的几个细节补充解读如下:


  • 每个spark应用程序有自己的执行进程,进程以多线程的方式执行同一个应用的不同任务(tasks)。

  • 因为不同的spark应用是不同进程,所以无论是在driver端还是executor端,不同用程序都是互相隔离的,在没有集群外存储的情况下,应用之间不能共享数据。

  • Spark对底层集群管理器是不可知的。通常能做集群进程管理的容器,都可以管理spark程序。例如Mesos / YARN这样的集群管理也可以用于spark。当前在各大互谅网公司比较常用的就是基于yarn的spark。

  • driver端必须在整个应用的生命周期内存在,并且是可寻址(固定在某个机器或者说IP上),因为executor都要跟driver建立连接并通讯。

  • 由于是driver端来负责任务的调度(指应用具体操作的输入输出控制,区别于yarn的集群管理),所以driver端最好跟executor端最好在同一个局域网(比如同一个机房),从而避免远距离通信。实时上driver端即使不做大的返回集合collect的话,如果任务分片(partitions)很多,也会有大量通信开销。


走进大数据 | Apache Spark和Apache Storm的区别


Apache Storm专注于流处理或者一些调用复杂的事件处理。 Storm实现了一种容错方法,用于在事件流入系统时执行计算或流水线化多个计算。人们可以使用Storm在非结构化数据流入系统到期望的格式时对其进行转换。


Storm的架构见下图,简单说明如下:


  • Storm也采用Master/Slave体系结构。

  • 分布式计算由Nimbus和Supervisor两类服务进程实现。

  • Nimbus进程运行在集群的主节点,负责任务的指派和分发。

  • Supervisor运行在集群的从节点,负责执行任务的具体部分。

       

走进大数据 | Apache Spark和Apache Storm的区别


Storm和Spark专注于相当不同的应用场景。对比Storm Trident和Spark Streaming,应该是更加公平(apples to apples)的比较。由于Spark的RDD本质上是不可变的,Spark Streaming实现了一种方法,用于在用户定义的时间间隔中“批处理”传入的更新,并将其转换为自己的RDD。 然后Spark通用的并行运算符就可以对这些RDD执行计算。这与Storm处理每个事件不同,Storm是真正的流式处理。


总而言之,这两种技术之间的一个主要区别是Spark执行数据并行计算,而Storm执行任务并行计算。这两种设计都是各自领域内的权衡,想了解更多可以参考下面的链接:


  • Data-Parallel computations:http://en.wikipedia.org/wiki/Data_parallelism

  • Task-Parallel computations:http://en.wikipedia.org/wiki/Task_parallelism







以上是关于走进大数据 | Apache Spark和Apache Storm的区别的主要内容,如果未能解决你的问题,请参考以下文章

走进大数据 | MapReduce与Spark到底谁快?

走进大数据 | hadoop spark环境搭建及idea scala maven集成开发spark任务

想学大数据?一篇长文带你走进大数据 | Spark的基础知识与操作

走进大数据 | 如何在Mac上配置maven+eclipse+spark开发环境

mapreduce 数据去重 问题

spark listener