• Spark_Spark比mapreduce快的原因


    Spark 为什么比 mapreduce 快?

    最重要的3点,

    数据缓存 : 中间结果可以缓存在内存中复用

    资源管理 :executor task 管理,不同stage的task可以运行在同一个executor上

    任务调度 :  dag 对比多阶段mr

    1.任务模型的优化DAG图对比多阶段的MR,启动申请资源耗时更少)

    • mapreduce框架中,一个程序只能拥有一个map一个reduce的过程,如果运算逻辑很复杂,一个map+一个reduce是表述不出来的,可能就需要多个map-reduce的过程;mapreduce框架想要做到这个事情,就需要把第一个map-reduce过程产生的结果,写入HDFS,然后由第二个map-reduce过程去hdfs读取后计算,完成后又将结果写入HDFS,再交由第三个map-reduce过程去计算! 重点!!!–这样一来,一个复杂的运算,在mapreduce框架中可能就会发生很多次写入并读取HDFS的操作,而读写HDFS是很慢的事情
    • spark框架,采用的是以rdd为核心,dag为调度,把上面的mapreduce-mapreduce-mapreduce的过程,连续执行,不需要反复落地到HDFS,这样就会比mapreduce快很多啦

    2.Spark支持在内存中缓存结果(基于RDD, RDD分布式弹性数据集, rdd.cache(),数据可复用)
    比如一个复杂逻辑中 ,一个map-reduce产生的结果A,如果在后续的map-reduce过程中需要反复用到,spark可以把A缓存到内存中,这样后续的map-reduce过程就只需要从内存中读取A即可,也会加快速度

    3.资源模型不同 (spark拥有更完善的资源管理方案,task可以复用core)
    spark是多线程模型,每个worker节点运行一个或多个executor服务,每个task作为线程运行在executor中,task间可共享资源,
    而MR是多进程模型,任务调度(频繁申请、释放资源)和启动开销大,不适合低延迟类型作业

    Spark 对比 mapreduce的优势有哪些

    • 计算模型优势,spark的核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比 MapReduce 丰富的模型,可以快速在内存中对数据集 进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法。。
    • Spark 和 Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据 通信是基于内存,而 Hadoop 是基于磁盘。
    • Spark Task的启动时间快。Spark采用fork线程的方式,而Hadoop采用创建新的进程 的方式。
    • Spark只有在shuffle的时候将数据写入磁盘,而Hadoop中多个MR作业之间的数据交 互都要依赖于磁盘交互
    • Spark的缓存机制比HDFS的缓存机制高效。
  • 相关阅读:
    SELinux零知识学习十四、SELinux策略语言之客体类别和许可(8)
    【嵌入式Linux系统开发】网络编程
    三角函数万能公式
    正雅齿科S8隐形矫治技术,减少或避免拔牙
    C++11特性-自动类型推导
    从0搭建Vue3组件库(二):Monorepo项目搭建
    branch与tag
    点云从入门到精通技术详解100篇-三维点云属性变换编码(下)
    NOIP2023模拟1联测22 黑暗料理
    RFNet模型数据集采集处理流程
  • 原文地址:https://blog.csdn.net/u010003835/article/details/132601582