做公司网站都需要什么,南漳做网站,设计一个商务网站,wordpress游客spark为什么比mapreduce快#xff1f;
首先澄清几个误区#xff1a;
1#xff1a;两者都是基于内存计算的#xff0c;任何计算框架都肯定是基于内存的#xff0c;所以网上说的spark是基于内存计算所以快#xff0c;显然是错误的
2;DAG计算模型减少的是磁盘I/O次数
首先澄清几个误区
1两者都是基于内存计算的任何计算框架都肯定是基于内存的所以网上说的spark是基于内存计算所以快显然是错误的
2;DAG计算模型减少的是磁盘I/O次数相比于mapreduce计算模型而言而不是shuffle次数因为shuffle是根据数据重组的次数而定所以shuffle次数不能减少
所以总结spark比mapreduce快的原因有以下几点
1DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数
因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘而DAG可以连续shuffle的也就是说一个DAG可以完成好几个
mapreduce所以dag只需要在最后一个shuffle落盘就比mapreduce少了总shuffle次数越多减少的落盘次数就越多
2spark shuffle 的优化
mapreduce在shuffle时默认进行排序spark在shuffle时则只有部分场景才需要排序bypass技师不需要排序排序是非常耗时的这样就可以加快shuffle速度
3spark支持将需要反复用到的数据进行缓存
所以对于下次再次使用此rdd时不再再次计算而是直接从缓存中获取因此可以减少数据加载耗时所以更适合需要迭代计算的机器学习算法
4任务级别并行度上的不同
mapreduce采用多进程模型而spark采用了多线程模型多进程模型的好处是便于细粒度控制每个任务占用的资源但每次任务的启动都会消耗一定的启动时间即mapreduce的map task 和reduce task是进程级别的都是jvm进程每次启动都需要重新申请资源消耗不必要的时间而spark task是基于线程模型的通过复用线程池中的线程来减少启动关闭task所需要的开销多线程模型也有缺点由于同节点上所有任务运行在一个进行中因此会出现严重的资源争用难以细粒度控制每个任务占用资源
作者京东零售 吴化斌
来源京东云开发者社区 转载请注明来源