Spark统一内存管理:UnifiedMemoryManager spark优化

什么是 UnifiedMemoryManager

UnifiedMemoryManager是Spark统一内存管理。它主要由2部分内存:spark部分内存和系统部分。

spark部分:由 spark memory 和Execution memory Storage memory组成

系统部分:user memory

UnifiedMemoryManager是Spark统一内存管理在spark优化中很重要,那它的这2部分内存是怎么分配的呢,这比例分多少最合适呢? 看下图

存储区的大小

Execution和Storage之间是软边界,任一方都可以从另一方借用内存。
Execution和Storage之间共享的区域是通过spark.memory.fraction(1.6.2默认为0.75,2.2默认值0.6)配置的,大小是:(HeapSize-300MB)0.75

存储区的大小为0.75 0.5 = 0.375的堆空间(默认的情况下)


存储可以借用尽可能多的执行内存,直到执行回收其空间。 当发生这种情况时,缓存的块将被释放到内存中,直到释放足够的借用内存以满足执行存储器请求。 类似地,执行可以借用尽可能多的存储空间。然而,由于执行此操作涉及复杂性,执行内存不会因存储而被驱逐。 这意味着,如果执行已经占用了大部分存储空间,那么尝试缓存块可能会失败,在这种情况下,新块将根据各自的存储级别去降级存储。

spark其它优化部分可以看spark常用性能调优

赞(2) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » Spark统一内存管理:UnifiedMemoryManager spark优化

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏