Spark内存管理

systemMemory = 17179869184 字节
reservedMemory = 300MB = 300 * 1024 * 1024 = 314572800
usableMemory = systemMemory - reservedMemory = 17179869184 - 314572800 = 16865296384
StorageMemory= usableMemory * spark.memory.fraction
             = 16865296384 * 0.6 字节 =  16865296384 * 0.6 / (1000 * 1000 * 1000) = 10.1GB

Spark UI 上面显示的 Storage Memory 可用内存其实等于 Execution 内存和 Storage 内存之和,也就是 usableMemory * spark.memory.fraction

设置堆外内存的参数为spark.executor.memoryOverhead与
spark.memory.offHeap.size(需要与 spark.memory.offHeap.enabled同时使用),其中
这两个都是描述堆外内存的,但是它们有什么区别么?

spark.memory.offHeap.size 真正作用于spark executor的堆外内存
spark.executor.memoryOverhead 作用于yarn,通知yarn我要使用堆外内存和使用内存的大小,相当于spark.memory.offHeap.size + spark.memory.offHeap.enabled,设置参数的大小并非实际使用内存大小

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] 文章目的: 经常遇到OOM,希望能合理的扩大内存来避免oom 合理利用内存空间进行缓存,来避免重复计算...
    袁一帆阅读 5,161评论 0 50
  • Spark是基于内存的计算引擎,就是说它高效的使用了分布式节点上的内存资源,尽可能多的使用内存,而不是将数据写入磁...
    wangdy12阅读 6,874评论 0 0
  • 概述 spark的内存管理有两套方案,新旧方案分别对应的类是UnifiedMemoryManager和Static...
    BIGUFO阅读 7,323评论 0 5
  • 本文基于Spark 1.6.0之后的版本Spark 1.6.0引入了对堆外内存的管理并对内存管理模型进行了改进,S...
    Woople阅读 4,585评论 0 7
  • 原文地址: https://0x0fff.com/spark-memory-management/ 从Apache...
    AlstonWilliams阅读 3,523评论 0 0