Spark内存管理[通俗易懂]

Spark内存管理[通俗易懂]1、spark的一大特性就是基于内存计算,Driver只保存任务的宏观性的元数据,数据量较小,且在执行过程中基本不变,不做重点分析,而真正的计算任务Task分布在各个Executor中,其中的内存数据

Spark内存管理

1、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,降低了程序的吞吐量。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9905.html

(0)
上一篇 2023-01-29
下一篇 2023-01-30

相关推荐

  • sql server2020_在SQL

    sql server2020_在SQLSQL Server 2022来了 微软SQL Server依然保持着3年内发布一个大版本的传统,最新版本已经来到SQL Server2022 相关特性双向HA/DR 到Azure SQLSQL Se

    2023-05-01
    111
  • mysql面试(七)备份恢复类问题[通俗易懂]

    mysql面试(七)备份恢复类问题[通俗易懂]备份方式 逻辑备份(DB 备份到文件) 物理备份(DB 备份到 DB) 全量备份和增量备份以及差异备份 常用备份工具 名称 特点 mysqldump 最常用的逻辑备份工具,支持全量备份和条件备份 m…

    2022-12-17
    91
  • mysql压测调优_性能监控工具

    mysql压测调优_性能监控工具sysbench是一个开源的、基于LuaJIT(LuaJIT 是 Lua 的即时编译器,可将代码直接翻译成机器码,性能比原生 lua 要高) 的、可自定义脚本的多线程基准测试工具,也是目前用

    2023-06-19
    93
  • 一次线上MySQL死锁告警原因排查[亲测有效]

    一次线上MySQL死锁告警原因排查[亲测有效]项目场景:一次线上MySQL死锁告警原因排查 最近处理了一次线上数据告警,记录一下。 问题描述 同步书架书籍的接口频繁抛出异常,提示数据库出现死锁,异常如下: 本日异常次数:2,异常日志:java.l

    2023-05-11
    102
  • 常见的文件共享方式[通俗易懂]

    常见的文件共享方式[通俗易懂]文件共享,便是为了更好地合作,提高高效率。做为数字化时代的生产主力服务平台,文件共享合作的暴发虽然有肺炎疫情要素,促进了内容合作在公司中的布署与运用;更多方面的缘故实际上取决于各个领域智能化过程的加…

    2023-04-11
    124
  • oracle invalid number_oracle31626

    oracle invalid number_oracle31626出现ora-31655错误的情况 原因:是因为不是同一个schema,导致的问题产生 解决方案: 在导入语句最后添加上remap_schema=old:new 着old是原schema,也就是导出的用

    2023-03-01
    118
  • Windows 系统 PostgreSQL 手工安装配置方法[通俗易懂]

    Windows 系统 PostgreSQL 手工安装配置方法[通俗易懂]自从2020年底开始接触 PostgreSQL 以来就喜欢上了这个数据库,个人感觉比 MySQL 好用,多表联合查询性能好很多,同时也不存在 SQLServer 的版权授权费用问题。搭配 .NET 开

    2023-06-03
    96
  • HDFS数据存储流程[通俗易懂]

    HDFS数据存储流程[通俗易懂]HDFS即Hadoop Distributed File System, HDFS存储数据的流程如下: 1、client跟NameNode交互1.1、client 发消息给NameNode,NameN

    2023-04-19
    106

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注