首页 > 其他分享 >spark为什么比mapreduce快?

spark为什么比mapreduce快?

时间:2024-09-06 09:52:07浏览次数:6  
标签:为什么 DAG shuffle 模型 mapreduce 次数 spark

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

标签:为什么,DAG,shuffle,模型,mapreduce,次数,spark
From: https://blog.51cto.com/u_15714439/11935927

相关文章

  • 【一招解决】为什么谷歌邮箱登录提示:出了点问题 抱歉,出了点问题。请重试?
    最近,我在edge浏览器上登录我的Gmail时一直遇到这个问题:出了点问题抱歉,出了点问题。请重试。我试了很多方法都不行,包括修改浏览器语言、修改代理节点、修改主机ip等等等等,都快给我整抑郁了我的天。甚至于我借助辅助邮箱和电话号码甚至直接显示:没有这个账号,给我吓死了(还以为......
  • 第十二讲 为什么表数据删掉一半,表文件大小不变?
    第十二讲:为什么表数据删掉一半,表文件大小不变?简概:问题:表删掉了一半的数据,表文件的大小还是没变?​ 经常会有同学来问我,我的数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变?InnoDB的表回收​ 那么今天,我就和你聊聊数据库表的空间回收,看看如何......
  • 面试官:limit 100w,10为什么慢?如何优化?
    在MySQL中,limitX,Y的查询中,X值越大,那么查询速度也就越慢,例如以下示例:limit0,10:查询时间大概在20毫秒左右。limit1000000,10:查询时间可能是15秒左右(1秒等于1000毫秒),甚至更长时间。所以,可以看出,limit中X值越大,那么查询速度都越慢。这个问题呢其实就是MySQL......
  • Python 和 Java 区别是什么?哪个运行效率高?为什么?
    一、Python和Java的区别1.编程风格•Python是一种解释型动态编程语言,语法简洁、灵活,代码较为简洁直观,注重代码的可读性和简洁性,使用缩进来表示代码块。•Java是一种编译型静态编程语言,语法相对严谨,代码风格较为规范,需要明确声明变量类型,使用大括号来表示代码块。2.......
  • Java并发编程实战 02 | 为什么创建线程只有一种方法?
    在Java中,我们如何创建和使用线程?为什么说线程的创建方式本质上只有一种呢?本文将从并发编程的基础——如何创建线程开始,希望大家能够打好基础。虽然线程的创建看起来很简单,但其中还是有很多细节值得深入探讨。最后,我们将揭开线程实现的面纱,看清它的本质。首先,大家可以思考......
  • MySQL优化-explain:字段,索引相同的多个数据库为什么他们的type,key,key_len会不一样
    实习倒数第二天,偶然间查了查自己的写的sql语句性能有没有问题。selectCOL1,COL2,COL3frominf_logwhereCODE='AAA'andORDER_ID='123456';上述字段中,code与order_id都被设置为索引IDX_MIAN_ID,IDX_CODE。也就是说,正常情况下这两个索引应该是都会命中公司实现了表的水平......
  • unittest+request+htmltestrunner为什么强于pytest+request+allure?
    关于接口自动化框架python的实现方案,主流的就unittest/pytest+request+htmltestrunner/allure。而unittest库相比于pytest在网上被各个博主喷的体无完肤,没有mark标记共功能,没有用例重跑机制、测试报告不如allure好看功能不如allure强大等等。但是我们深度思考后能否给自己提个......
  • 轻量云服务器为什么不可以弹性伸缩配置
    轻量云服务器通常设计为面向特定用途,如轻量级应用、个人网站、小企业网站等,它们与标准的云服务器(如阿里云的ECS或腾讯云的CVM)在架构和目标市场上有一些区别。以下是轻量云服务器通常不提供弹性伸缩配置的几个原因:预配置的资源固定配置:轻量云服务器通常提供预定义的、固定的资源包,这......
  • 数字化时代,为什么需要设计以用户体验为中心的企业架构框架
    在竞争激烈的市场环境中,用户体验(CustomerExperience,CX)已成为企业成功的关键因素。一个优质的用户体验不仅能够提升客户满意度,还能增强品牌忠诚度,推动业务增长。然而,打造卓越的用户体验并非易事,它需要企业在多个层面进行精细化的管理和优化。 本文将探讨企业架构如何通过优化流......
  • 现今赚钱方式,为什么大部分人更愿意做海外问卷调查这样的项目呢
    大家好,我是金言问卷。最近有越来越多的人在了解和接触海外问卷调查项目了。为什么会出现这样的现象呢?这其中有哪些具体的原因?今天我们从多方面来分析下,虽然不一定全面,如果能给大家带来一些实际的参考,也是可以的。海外问卷调查,本质上就是海外国家的公司或者企业发放出来的市场......