由于计算的融合只发生在 Stages 内部,而 Shuffle 是切割 Stages 的边界,因此一旦发生 Shuffle,内存计算的代码融合就会中断。

在 Spark 中,内存计算有两层含义:

  • 第一层含义就是众所周知的分布式数据缓存;
  • 第二层含义是 Stage 内的流水线式计算模式,通过计算的融合来大幅提升数据在内存中的转换效率,进而从整体上提升应用的执行性能;

那 Stage 内的流水线式计算模式到底长啥样呢?在 Spark 中,流水线计算模式指的是:在同一 Stage 内部,所有算子融合为一个函数,Stage 的输出结果,由这个函数一次性作用在输入数据集而产生。

我们用一张图来直观地解释这一计算模式。

在上面的计算流程中,如果你把流水线看作是内存,每一步操作过后都会生成临时数据,如图中的 clean 和 slice,这些临时数据都会缓存在内存里。

但在下面的内存计算中,所有操作步骤如 clean、slice、bake,都会被捏合在一起构成一个函数。这个函数一次性地作用在“带泥土豆”上,直接生成“即食薯片”,在内存中不产生任何中间数据形态。

由于计算的融合只发生在 Stages 内部,而 Shuffle 是切割 Stages 的边界,因此一旦发生 Shuffle,内存计算的代码融合就会中断。但是,当我们对内存计算有了多方位理解以后,就不会一股脑地只想到用 cache 去提升应用的执行性能,而是会更主动地想办法尽量避免 Shuffle,让应用代码中尽可能多的部分融合为一个函数,从而提升计算效率。

Spark中的内存计算是什么?相关推荐

  1. Spark 中 JVM 内存使用及配置详情、spark报错与调优、Spark内存溢出OOM异常

    一般在我们开发spark程序的时候,从代码开发到上线以及后期的维护中,在整个过程中都需要涉及到调优的问题,即一开始需要考虑如何把代码写的更简洁高效调优(即代码优化),待开发测试完成后,提交任务时综合考 ...

  2. spark 读取ftp_scala – 使用ftp在Apache Spark中的远程计算机上读取文件

    我正在尝试使用ftp在Apache Spark( Scala版本)中的远程计算机上读取文件.目前,我在 GitHub上关注Databricks的Learning Spark回购中的一个例子.使用cur ...

  3. Ignite与Spark内存计算平台对比分析

    为什么80%的码农都做不了架构师?>>>    经常有人拿Ignite和Spark进行比较,然后搞不清两者的区别和联系.Ignite和Spark,如果笼统归类,都会归类于内存计算平台 ...

  4. 如何查看spark消耗的内存_Spark优化(三)----数据本地化及内存调优

    1. 数据本地化的级别: 1.PROCESS_LOCAL 2.NODE_LOCAL 3.NO_PREF 4.RACK_LOCAL 5.ANY 1) PROCESS_LOCAL task要计算的数据在本 ...

  5. Spark中,RDD概述(五大属性,弹性介绍,5个特性)

    1 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark 中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.在Spa ...

  6. 什么是spark的惰性计算?有什么优势?_spark——spark中常说RDD,究竟RDD是什么?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题第二篇文章,我们来看spark非常重要的一个概念--RDD. 在上一讲当中我们在本地安装好了spark,虽然我们只有lo ...

  7. 云计算实验2 Spark分布式内存计算框架配置及编程案例

    一. 实验目的 掌握分布式多节点计算平台Spark配置,Spark编程环境IDEA配置,示例程序启动与运行 二. 实验环境 Linux的虚拟机环境.线上操作视频和实验指导手册 三. 实验任务 完成Sp ...

  8. 云计算与大数据第16章 分布式内存计算平台Spark习题

    第16章 分布式内存计算平台Spark习题 16.1 选择题 1.Spark是Hadoop生态(  B  )组件的替代方案. A. Hadoop     B. MapReduce        C. ...

  9. Spark中内存模型管理

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

最新文章

  1. 推荐8个值得每天一看的网站,值得收藏起来!
  2. oracle控制文件发生坏块,控制文件坏块处理方法
  3. linux手机刷机包制作工具_刷GitHub提交记录工具制作
  4. CSS魔法堂:那个被我们忽略的outline
  5. 汉游天下公司的一些感悟
  6. 线程同步(windows平台):信号量
  7. 游戏筑基之选择分支语句(C语言)
  8. Linux配置防火墙,开启80端口、3306端口
  9. jQuery基础资料(二)
  10. LINUX FFMPEG编译汇总(中等,只编译必要的部分)
  11. android地区/时区/语言
  12. 数字/模拟信号中带宽的含义
  13. Android文件系统编译出错记录
  14. HDU - 6184 Counting Stars (无向图找三元环)
  15. php表单时间控件,phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法...
  16. Ch8 电路噪声学习笔记(一)baker 《CMOS Circuit Design, Layout, and Simulation》
  17. @Deprecated注解
  18. Git 常用提交操作步骤
  19. 星起航:跨境电商行业卖家可利用新技术打造成熟供应链
  20. 奔三的你,是否还年轻

热门文章

  1. 多个文件中的数据处理,输出自己想要是数据
  2. 什么是形参与实参,下面的回答很好!
  3. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字
  4. python里的tplt什么意思 Python的format格式化输出
  5. 语义SLAM近5年主要技术进展及研究趋势
  6. 机器视觉从发展到成熟,最新技术又有些什么?
  7. 用于数字成像的双三次插值技术​
  8. 【OpenCV 4开发详解】图像仿射变换
  9. 栈与队列10——可见的山峰对数量
  10. Classifying dynamic textures via spatiotemporal fractal analysis(许教授)