Apache Spark和Apache Storm的区别

近期关于Apache Spark和Apache Storm的区别的讨论热度持续攀升 ,我们通过多方渠道收集整理了相关资讯 ,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸 。

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 Spark和Apache Storm的区别的探讨就到这里,您是否还有其他想了解的内容?欢迎在评论区留言告诉我们,同时别忘了点击关注哦!

(3)

猜你喜欢

发表回复

本站作者才能评论

评论列表(3条)

  • admin的头像
    admin 2026年07月02日

    我是创与幻的签约作者“admin”

  • admin
    admin 2026年07月02日

    本文概览:近期关于Apache Spark和Apache Storm的区别的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是...

  • admin
    用户070208 2026年07月02日

    文章不错《Apache Spark和Apache Storm的区别》内容很有帮助

联系我们:

邮件:创与幻@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信