iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Spark内存管理
  • 379
分享到

Spark内存管理

Spark内存管理 2019-06-05 14:06:05 379人浏览 无得
摘要

spark的一大特性就是基于内存计算,Driver只保存任务的宏观性的元数据,数据量较小,且在执行过程中基本不变,不做重点分析,而真正的计算任务Task分布在各个Executor中,其中的内存数据量大,且会随着计算的进行会发生实时

Spark内存管理

spark的一大特性就是基于内存计算,Driver只保存任务的宏观性的元数据,数据量较小,且在执行过程中基本不变,不做重点分析,而真正的计算任务Task分布在各个Executor中,其中的内存数据量大,且会随着计算的进行会发生实时变化,所以Executor的内存管理才分析的重点。

2、在执行Spark应用程序时,集群会启动Driver和Executor两种JVM进程,前者为主控进程,负责创建spark上下文(context),提交spark作业(job),将作业转化为计算任务(task),在各个Executor进程间协调任务的调度。后者负责在工作节点上执行具体任务,并将结果返回给Driver,同时为需要持久化的RDD提供存储功能。

3、作为一个JVM进程,Executor的内存管理时基于JVM内存管理机制的,spark对JVM-on-heap内存进行了更为详细的规划,以充分利用。同时spark还引入了off-heap内存,使之可以直接从运行节点的系统内存中开辟空间,进一步优化内存的使用。
【堆内存的分配和回收完全依赖JVM的GC机制,应用不能灵活的操作内存,使用堆外内存则可以通过OS来分配和释放,较为灵活】

早期静态内存管理:on-heap分为四个区域,分别是Storage(20%)、Execution(60%)、Other(20%)、Ext,Storage用于缓存持久化的RDD数据和广播变量等,Execution用于缓存shuffle过程中产生的中间数据,Other区用于存储运行中的其他对象,Ext是一块较小的预留空间,用以防止OOM的发生,起到兜底作用,几个区块间有严格的界限,不可逾越。off-heap分为两个区,Storage(50%)、Execution(50%),也有严格界限,不可逾越。
spark1.6后引入统一内存管理:与静态管理机制的不同在于初始Storage(50%)、Execution(50%),在执行过程中两个区域可以根据自己和对方的内粗余量弹性的越界分配,更加灵活高效。off-heap也是两个区域,没有严格界限可以动态占用。

4、内存的动态占用:
0.存储 < 50% && 执行 < 50%:互不占用
1.存储 > 50% && 执行 > 50%:溢写磁盘(前提是缓存级别包含磁盘,若级别为纯内存则丢弃数据)
2.存储 > 50% && 执行 < 50%:存储跨界借用,若一段时间后执行内存不足,则删除被借用内存,优先满足执行的内存需要。
3.存储 < 50% && 执行 > 50%:执行跨界借用,若一段时间后存储内存不足,则不能被执行占用的存储区内存,因为执行的优先级更高,要优先保证执行数据。
***
5、统一内存管理机制,有效的提高了堆内存和堆外内存的使用效率,降低了使用复杂度,但是并不能就此高枕无忧。由于RDD数据往往是长期生存的,如果存储在内存中的数据过多,会引发频繁的full-gc,降低了程序的吞吐量。

您可能感兴趣的文档:

--结束END--

本文标题: Spark内存管理

本文链接: https://www.lsjlt.com/news/4485.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spark内存管理
    spark的一大特性就是基于内存计算,Driver只保存任务的宏观性的元数据,数据量较小,且在执行过程中基本不变,不做重点分析,而真正的计算任务Task分布在各个Executor中,其中的内存数据量大,且会随着计算的进行会发生实时...
    99+
    2019-06-05
    Spark内存管理
  • 如何解析Apache Spark 统一内存管理模型
    今天就跟大家聊聊有关如何解析Apache Spark 统一内存管理模型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Apache Spark 统一内存管理模型详解下面将对 Spark...
    99+
    2023-06-02
  • Spark内存调优指南
    目录引言数据序列化内存调优内存管理概述确定内存消耗调整数据结构RDD序列化存储GC的调整测量GC的影响高级GC调优其他考虑因素并行度水平输入路径上的并行ListingReduce任务...
    99+
    2023-03-07
    Spark内存调优 Spark调优指南
  • Aerospike的bin内存管理--即列内存管理
    1、内存申请函数调用 write_master->write_master_dim->write_master_bin_ops ->write_master_bin_ops_l...
    99+
    2022-10-18
  • JVM内存管理之JAVA语言的内存管理详解
    引言内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑。不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓狂的内存溢出和泄露的问题。可怕的事情还不只...
    99+
    2023-05-31
    jvm 内存管理 java
  • Python的内存管理
        一直以为用Python、java这样的语言就不在需要关心内存使用的问题,但事情还是发生了。     前一段时间需要写一个应用,需要将用户删除的记录在文件中的偏移记录到另一个文件中,由于需要load的最大的数据文件也就1.2...
    99+
    2023-01-31
    内存管理 Python
  • 动态内存管理
    动态内存管理 一.为什么要有动态内存二.malloc和free二.calloc三.realloc 一.为什么要有动态内存 开辟空间的方式有很多种,像是我们经常使用的整形,数组之类的...
    99+
    2023-09-04
    c++ 数据结构 java
  • Spark内存调优的方法是什么
    这篇文章主要介绍“Spark内存调优的方法是什么”,在日常操作中,相信很多人在Spark内存调优的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spark内存调优的方法是什么”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • Python内存管理的原理
    这篇文章主要介绍“Python内存管理的原理”,在日常操作中,相信很多人在Python内存管理的原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python内存管理的原理”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-15
  • Python内存管理机制
    1 概述对于Python这样的动态语言,如何高效的管理内存,是很重要的一部分,在很大程度上决定了Python的执行效率。与大多数编程语言不同,Python中的变量无需事先申明,变量无需指定类型,程序员无需关心内存管理,Python解释器给你...
    99+
    2023-01-31
    管理机制 内存 Python
  • 探讨Android内存管理
    前言 在看这篇文章之前,需要Linux内存管理基础,推荐先学习一些Linux内存管理基础知识点,这里我们在做一些应用层的优化工作,但从底层理解一...
    99+
    2022-06-06
    Android
  • Go内存分配管理
    目录一、问题引入二、几个基本概念1.RSS,VSS解释三、Go内存管理机制1.Go runtime内存延迟归还2.强制归还内存一、问题引入 现象:在实际工作项目中,golang项目经...
    99+
    2022-11-13
  • C++内存管理介绍
    目录1 smart_ptr概述1.1 RAII进制1.2 智能指针1.3 scoped_ptr1.4 scoped_array1.6 shared_array1.7 weak_ptr...
    99+
    2022-11-12
  • 【C++】C&C++内存管理
    就是你被爱情困住了?Wake up bro! 文章目录 一、C/C++内存分布二、C语言中动态内存管理方式三、C++中内存管理方式1.new和delete操作内置类型2.new和delete...
    99+
    2023-09-03
    c++ c语言 java 开发语言
  • C++ 内存管理原理分析
    目录1.C/C++中程序内存分布1.1 内存分布图1.2 小试牛刀2.C语言部分的动态内存管理方式3.C++内存管理方式3.1new/delete操作内置类型3.2 new...
    99+
    2022-11-12
  • C++内存管理如何理解
    这期内容当中小编将会给大家带来有关C++内存管理如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言;C++继承了C语言的指针,一直以来指针的一些问题困扰着开发人员,常见的指针问题主要有:内存泄露、...
    99+
    2023-06-26
  • 【C++笔记】C++内存管理
    【C++笔记】C++内存管理 一、C++中动态内存申请的方式二、new和delete的实现原理2.1、operator new和operator delete函数 一、C++中动态内存申请的方式 在C语言中我们需要动态申请空...
    99+
    2023-08-30
    c++ 笔记 开发语言 c语言
  • Oracle的内存管理方式
    本篇内容主要讲解“Oracle的内存管理方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的内存管理方式”吧!Oracle 内存管理方式oracle...
    99+
    2022-10-18
  • 详解C/C++内存管理
    目录C/C++内存分布C语言中动态内存管理方式C++中动态内存管理方式new和delete操作内置类型new和delete操作自定义类型operator new和operator d...
    99+
    2022-11-12
  • 详解Swift的内存管理
    目录内存管理weak循环引用闭包的循环引用self的循环引用内存访问冲突指针指针分类获得变量的指针创建指针指针之间的转换内存管理 和OC一样, 在Swift中也是采用基于引用计数的A...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作