executor对应container内存
executor对应的内存由两部分组成:
- exuecutor-memory控制了堆的大小
- spark.yarn.executor.memoryOverhead 控制堆外内存,默认值(384MB, 0.07 * spark.executor.memory),该值一般偏小,需要调大
- spark.memory.fraction可以控制年轻代的大小
日志
凡是cluster模式启动的作业,日志都没有打印在本地。因为main()直接在driver上运行
节约内存的好处
- 减少GC
- persist后的rdd,如果选择将数据缓存到内存中,当executor内存不够,会基于LRU算法将部分分区数据移出去,复用时会重算,增加执行开销
参考
Where do ‘normal’ println go in a scala jar, under Spark Spark Architecture