大数据IMF传奇行动绝密课程第54课:Spark性能优化第十季之Spark统一内存管理
2016-09-05 21:49
579 查看
Spark性能优化第十季之Spark统一内存管理
1、传统的Spark内存管理的问题2、Spark统一内存管理
3、展望
Spark内存分为三部分:Execution、Sotrage、Other;
Shuffle,当内存不够的时候下,磁盘IO很大负担
10个Task并行,则会把内存分为10份,实际运行时Task可能会沾满整个空间,其他任务分配不到空间。
即使一个Task不会把内存用完,另外一个Task申请内存,它有一个算法,如果申请的内存不够,Task不会自动Spill到disk,默认放一部分数据到内存中,有个百分比,这样不断重复,既消耗CPU又消耗内存。
这时就要Spill到磁盘
1、分布式系统的性能杀手是Shuffle,join、aggregation可能需要用很大内存,但是给他分配的很少,这不是有效的内存使用方法
2、假设需要Spill,计算时还要从磁盘读到内存,这时磁盘IO是不能承受的
3、Storage空间不够,计算结果丢失可能需要重新计算
4、假设Task占满内存,其他Cores都在空闲状态
5、即使Spill数据到磁盘,它还是要申请一部分百分比的空间放一部分数据的
Execution分配内存:
ShuffleMemoryManager、TaskMemoryManager、ExecutorMemoryManager
最安全、廉价的STORAGE_LEVEL是MEMORY_AND_DISK_SER
Iterator一条一条读取数据叫Unroll,无法一次性把所有的数据放进去,因为可能OOM。Unroll的内存空间是从Storage空间中获得的,Unroll过程中会放尽量多的数据放入Storage中,Spark给了它一个参数,spark.storage.unroll.fraction默认也是0.2;unroll失败的话则直接放到硬盘。
UnifiedMemoryManagement:
Execution Memory可以直接访问Storage Memory,Storage Memory可以访问Execution Memory,这两个可以互相借内存。
默认两部分加在一起为总堆大小-300MB,300MB可配置:spark.testing.reserveMemory RESERVED_SYSTEM_MOMORY_BYTES = 3 * 1024 * 1024是保留的内存大小。
spark.memory.storageFraction 默认为0.5,所以其最大空间为0.75 * 0.5 = 0.375倍的,且可以找execution memory借。如果借的还不够的话,则有不同的处理方式
Storage可以向execution借内存,当execution需要内存时,则会将Storage的内存drop掉,知道足够的空间够自己使用。
相反execution也可以向Storage借内存,当Storage的Memory不够的时候不会将Execution的内存drop掉,这是因为计算的时候牵扯很多东西,drop后太过于复杂。
相关文章推荐
- 大数据IMF传奇行动绝密课程第53课:Spark性能优化第九季 Spark Tungsten内存使用彻底解密
- 大数据IMF传奇行动绝密课程第48课:Spark性能优化第四季
- 大数据IMF传奇行动绝密课程第116课:Spark Streaming性能优化:如何在毫秒内处理大吞吐量和数据波动比较大的流计算
- 大数据IMF传奇行动绝密课程第45课:Spark性能优化第一季
- 大数据IMF传奇行动绝密课程第49课:Spark性能优化第五季
- 大数据IMF传奇行动绝密课程第47课:Spark性能优化第三季
- 大数据IMF传奇行动绝密课程第44课:真正的Spark功力:性能优化!
- 大数据IMF传奇行动绝密课程第52课:Spark性能优化第八季
- 大数据IMF传奇行动绝密课程第119课:Spark Streaming性能优化:如何在生产环境下应对流数据峰值巨变
- 大数据IMF传奇行动绝密课程第115课:超大规模spark性能优化本质思考
- 大数据IMF传奇行动绝密课程第50课:Spark性能优化第六季
- 大数据IMF传奇行动绝密课程第118课:Spark Streaming性能优化:如何获得和持续使用足够的集群计算资源
- 大数据IMF传奇行动绝密课程第117课:Spark Streaming性能优化:如何最大程度的确保Spark Cluster和Kafka连接的稳定性
- 大数据IMF传奇行动绝密课程第51课:Spark性能优化第七季
- 大数据IMF传奇行动绝密课程第120课:Spark Streaming性能优化:如何在End-to-End生产环境下安全高效地把结果数据存入HBase中
- 大数据IMF传奇行动绝密课程第92课:SparkStreaming中Transformations和状态管理解密
- 大数据IMF传奇行动绝密课程第33课:Spark Executor内幕彻底解密
- 大数据IMF传奇行动绝密课程第25课:Spark Sort-Based Shuffle内幕彻底解密
- 大数据IMF传奇行动绝密课程第13课:Spark内核架构解密
- 大数据IMF传奇行动绝密课程第14课:Spark RDD解密