前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spark 内存管理

spark 内存管理

作者头像
用户1483438
修改2022-03-25 10:23:30
4130
修改2022-03-25 10:23:30
举报
文章被收录于专栏:大数据共享

1. spark 内存用不好是怎样的情况?

storage(缓存)

已经存储在磁盘上,说明 预留给缓存的内存偏少

在一个stage 执行的若干个task中,

甚至是 shuffle spill(disk)的时候

表示在执行(Execution)过程中给执行所留的内存是不够的

甚至都已经溢出到磁盘上了

2.Spark内存管理机制

在一个Executor节点上,内存被分为了堆内内存和堆外内存。

堆外内存是JVM使用的,对于Spark来说是不可见的。 所以我们大多数讨论的是堆内内存。

如上图。

  1. 默认保留300M的保留存储。----绿色 2.浅粉---执行内存(Execution) 默认比例:3 深粉---缓存内存(Storage) 默认比例:3 蓝色---用户内存(User) 默认比例:4

Execution Memory 部分

主要用于计算,shuffle用到的 临时内存

Storage Memory 部分

当需要缓存rdd的时候用到的内存


在Spark1.6之前,这些配置都是相对静态的 1.6中引入了UNIFIED MEMORY(统一内存管理)特性,进行优化。

统一内存管理

(统一内存指的是Execution +Storage的内存 )

1.在默认情况下Execution 和Storage各占一半内存。 2.当Storage内存不足时,可部分占用Execution的内存空间。反之相同。 3.他们之间有一个buffer的区域可以互相占用 4.提高内存的利用率

生产环境中如何配置这些参数?

1.先看webUI具体运行所用的内存大小,配置spark.memory.storageFraction(Storage所占系统内存的比例) 在配置spark.memory.fraction(统一内存占整个内存的大小)加上300M(预留内存)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. spark 内存用不好是怎样的情况?
  • 2.Spark内存管理机制
    • Execution Memory 部分
      • Storage Memory 部分
      • 统一内存管理
      • 生产环境中如何配置这些参数?
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档