Spark内存迭代是每个task根据算子之间形成的DAG在内存中不断迭代计算的过程。

如图,带有分区的DAG以及阶段划分,可以从图中得到逻辑上最优的task分配。一个task是一个线程来具体执行。task1中的rdd1,rdd2,rdd3的迭代计算,都是由一个task(线程完成),这一阶段的这一条线,是纯内存计算。task1,task2,task3就形成了三个并行的内存计算管道。

Spark默认受到全局并行度的限制,除了个别算子有特殊分区情况,大部分的算子,都遵循全局并行度的要求,来规划自己的分区数,如果全局并行度是3,其实大部分算子的分区都是3。Spark计算,我们一般推荐只设置全局并行度,不再算子上设置并行度,除了一些排序算子外,计算算子就采用默认的分区就可以了

Spark是怎么做内存计算的?DAG的作用是什么?Stage阶段划分的作用是什么?

  1. Spark会产生DAG图
  2. DAG图会基于分区和宽窄依赖关系划分阶段
  3. 一个阶段内部都是窄依赖,在窄依赖内,如果形成前后1:1的分区对应关系,就可以产生许多内存迭代计算的管道
  4. 这些内存迭代计算的管道,就是一个个具体执行的task
  5. 一个task是一个具体的线程,任务跑在一个线程内,就是走内存计算

Spark为什么比MapReduce快?

  1. Spark算子丰富,MapReduce算子匮乏,MapReduce这个编程模型,很难在一套MR中处理复杂的任务,很多的复杂任务,是需要写多个MapReduce进行串联,多个MR串联通过磁盘交互数据
  2. Spark可以执行内存迭代,算子之间形成DAG基于依赖划分阶段后,在阶段内形成内存迭代管理,在算子交互上,和计算上可以尽量多的内存计算而非磁盘迭代。但是MapReduce的Map和Reduce之间的交互依旧是通过磁盘来交互的。

Spark 内存迭代计算相关推荐

  1. spark从入门到精通spark内存管理详解- 堆内堆外内存管理

    前言 Spark作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解Spark内存管理的基本原理,有助于更好地开发Spark应用程序和进行性能调优.本文将详细介绍两部 ...

  2. Spark内存管理(3)—— 统一内存管理设计理念

    Spark内存管理系列文章:  Spark内存管理(1)-- 静态内存管理  Spark内存管理(2)-- 统一内存管理 在本文中,将会对各个内存的分布以及设计原理进行详细的阐述  相对于静态内存模型 ...

  3. Spark内存管理(2)—— 统一内存管理

    Spark内存管理系列文章:  Spark内存管理(1)-- 静态内存管理 堆内内存 Spark 1.6之后引入的统一内存管理机制,与静态内存管理的区别在于Storage和Execution共享同一块 ...

  4. Spark内存管理(1)—— 静态内存管理

    Spark内存管理简介 Spark从1.6开始引入了动态内存管理模式,即执行内存和存储内存之间可以相互抢占  Spark提供了2种内存分配模式: 静态内存管理 统一内存管理 本系列文章将分别对这两种内 ...

  5. Apache Spark 内存管理详解

    原文出处: IBM developerWorks Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 ...

  6. Spark内核解析之六:Spark 内存管理

    前言 在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并 ...

  7. Spark内存空间分配机制

    静态内存管理 在 Spark 最初采用的静态内存管理机制下,存储内存.执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置,堆内内存的分配如图 2 所示 ...

  8. Spark 内存模型

    文章目录 环境参数 Executor 内存划分 堆内内存(On-Heap Memory) 堆外内存(Off-Heap Memory) 动态调节机制 Task 能申请到的内存 新博客地址 环境参数 sp ...

  9. Spark 内存管理内存空间分配_大数据培训

    静态内存管理 在 Spark 最初采用的静态内存管理机制下,存储内存.执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置,堆内内存的分配如图6-2所示 ...

最新文章

  1. GNS3关联SecureCRT的配置。
  2. nodejs基础学习-文件读取
  3. Java相对路径调用dll文件,VS项目中调用他人提供的.lib和.dll文件的用法(绝对路径和相对路径)...
  4. 51nod百度之星2016练习赛
  5. 使用windowManager实现音乐播放器(悬浮框)效果
  6. [XSY] 智慧树(线性同余方程组,线段树/树状数组)
  7. mysql 备份 索引_mysql-索引、导入、导出、备份、恢复
  8. 数据结构 创建顺序表
  9. Crackme017
  10. myeclipse 8.6安装freemarker插件
  11. android布局自适应小示例(用户反馈界面)
  12. C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【一】
  13. 中国象棋游戏设计与实现
  14. 2022电大国家开放大学网上形考任务-国学经典选读(山东)非免费(非答案)
  15. 【芯片使用】PCF8591
  16. 如何让你的程序同时只能运行一个?
  17. LeetCode第7题:整数反转
  18. 虚函数,虚函数表,虚函数实现原理,虚函数实现机制,虚函数解决的问题
  19. matlab app designer使用心得
  20. vue组件之间互相传值:父传子,子传父

热门文章

  1. 中南大学湘雅医院简丹主任谈相控微针用于玫瑰痤疮的治疗
  2. 帝国CMS (EmpireCMS)
  3. 【Linux】对于权限的理解
  4. 【HTML】动画合集--跟着pink老师学习
  5. ArcGIS空间分析工具
  6. Anaconda 本地包安装
  7. 83事件对象的作用——阻止事件默认行为
  8. Non-function value encountered for slot “role“. Prefer function slots for better performance.
  9. 做技术要有一颗平常心
  10. AxureRP_for_chorme的安装和使用方法