• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Apache Spark和Apache Storm的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      Apache Spark和Apache Store的区别是什么?他们各自适用于什么样的应用场景?这是stackoverflow上的一个问题,这里整理简要版回答如下:

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

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

  • Storm也采用Master/Slave体系结构。
  • 分布式计算由Nimbus和Supervisor两类服务进程实现。

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

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

       

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


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

  •  Data-Parallel computations 
  •  Task-Parallel computations

     

      

参考文献:

[1] http://stackoverflow.com/questions/24119897/apache-spark-vs-apache-storm

[2] spark官网:http://spark.apache.org/docs/latest/cluster-overview.html

[3] http://www.cnblogs.com/swanspouse/p/5135679.html


鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
Go语言教程:时间的格式化和解析发布时间:2022-05-14
下一篇:
Go语言教程:随机数发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap