Executor内存管理
spark管理Executor进程的内存有两种管理模式:
- 静态内存管理
- 统一内存管理
静态内存管理
静态内存管理模式中executor内存分成3个部分
- executor60%的内存,用于storage过程,由spark.stoarge.memoryFraction配置,这块内存又分为2个部分:
1). 90%的内存用于storage安全可用,由spark.storage.safetyFraction配置,这块内存又分为2个部分:
①. 20%的内存用于unroll,反序列化过程,由spark.stoarge.unrollFraction配置
②. 剩下的内存用于存储RDD的缓存数据和广播变量
2). 剩下的内存由于防止OOM - executor20%的内存,用于shuffle过程,由spark.shuffle.memoryFraction配置,这块内存又分为2个部分:
1). 20%的内存用于防止OOM,由spark.shuffle.safetyFraction配置
2). 剩下的内存用于shuffle聚合安全可用 - executor20%的内存,用于task执行以及存储task产生的对象