spark为什么比mapreduce快?
首先澄清几个误区:
1:两者都是基于内存计算的,任何计算框架都肯定是基于内存的,所以网上说的spark是基于内存计算所以快,显然是错误的
2;DAG计算模型减少的是磁盘I/O次数(相比于mapreduce计算模型而言),而不是shuffle次数,因为shuffle是根据数据重组的次数而定,所以shuffle次数不能减少
所以总结spark比mapreduce快的原因有以下几点:
1:DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数
因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘,而DAG可以连续shuffle的,也就是说一个DAG可以完成好几个
mapreduce,所以dag只需要在最后一个shuffle落盘,就比mapreduce少了,总shuffle次数越多,减少的落盘次数就越多
2:spark shuffle 的优化
mapreduce在shuffle时默认进行排序,spark在shuffle时则只有部分场景才需要排序(bypass技师不需要排序),排序是非常耗时的,这样就可以加快shuffle速度
3:spark支持将需要反复用到的数据进行缓存
所以对于下次再次使用此rdd时,不再再次计算,而是直接从缓存中获取,因此可以减少数据加载耗时,所以更适合需要迭代计算的机器学习算法
4:任务级别并行度上的不同
mapreduce采用多进程模型,而spark采用了多线程模型,多进程模型的好处是便于细粒度控制每个任务占用的资源,但每次任务的启动都会消耗一定的启动时间,即mapreduce的map task 和reduce task是进程级别的,都是jvm进程,每次启动都需要重新申请资源,消耗不必要的时间,而spark task是基于线程模型的,通过复用线程池中的线程来减少启动,关闭task所需要的开销(多线程模型也有缺点,由于同节点上所有任务运行在一个进行中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源)
审核编辑 黄宇
-
内存
+关注
关注
9文章
3173浏览量
76100 -
SPARK
+关注
关注
1文章
108浏览量
21111 -
MapReduce
+关注
关注
0文章
45浏览量
6778
发布评论请先 登录
耐能携手Spark迪维科推动AI技术在垂直产业的应用发展
NVIDIA DGX Spark助力构建自己的AI模型
在NVIDIA DGX Spark平台上对NVIDIA ConnectX-7 200G网卡配置教程
NVIDIA DGX Spark快速入门指南
安泰新能源发布新一代智能跟踪支架AT-Spark,为大型光伏电站提供一体化解决方案
NVIDIA黄仁勋向SpaceX马斯克交付DGX Spark
NVIDIA DGX Spark新一代AI超级计算机正式交付
使用NVIDIA GPU加速Apache Spark中Parquet数据扫描
什么是快充协议,快充协议芯片的作用与特点
NVIDIA加速的Apache Spark助力企业节省大量成本
NVIDIA 宣布推出 DGX Spark 个人 AI 计算机

spark为什么比mapreduce快?
评论