spark为什么比mapreduce快?

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所需要的开销(多线程模型也有缺点,由于同节点上所有任务运行在一个进行中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源)

作者:京东零售 吴化斌

来源:京东云开发者社区 转载请注明来源

相关推荐
ha_lydms9 小时前
5、Spark函数_s/t
java·大数据·python·spark·数据处理·maxcompute·spark 函数
电商API&Tina9 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
StarChainTech11 小时前
电动车租赁中的智能管理:电子围栏技术如何改变出行行业
大数据·人工智能·微信小程序·小程序·团队开发·软件需求·共享经济
能源系统预测和优化研究11 小时前
【原创代码改进】考虑共享储能接入的工业园区多类型负荷需求响应经济运行研究
大数据·算法
面向Google编程11 小时前
Flink源码阅读:双流操作
大数据·flink
sysinside12 小时前
Elasticsearch 9.2 发布 - 分布式搜索和分析引擎
大数据·分布式·elasticsearch
kkce12 小时前
vsping 推出海外检测节点的核心目的
大数据·网络·人工智能
Jinkxs12 小时前
Elasticsearch - 倒排索引的压缩算法 Elasticsearch 如何节省空间
大数据·elasticsearch·搜索引擎
思通数科多模态大模型15 小时前
门店 AI 清洁系统:AI 语义分割 + 机器人清洁
大数据·人工智能·算法·目标检测·计算机视觉·自然语言处理·机器人
南方略咨询15 小时前
南方略咨询:环保行业进入深水区,营销管理能力正在拉开企业差距
大数据·人工智能