spark必须知道的几个观点

executor对应container内存

executor对应的内存由两部分组成:

  1. exuecutor-memory控制了堆的大小
  2. spark.yarn.executor.memoryOverhead 控制堆外内存,默认值(384MB, 0.07 * spark.executor.memory),该值一般偏小,需要调大
  3. spark.memory.fraction可以控制年轻代的大小

日志

凡是cluster模式启动的作业,日志都没有打印在本地。因为main()直接在driver上运行

节约内存的好处

  1. 减少GC
  2. persist后的rdd,如果选择将数据缓存到内存中,当executor内存不够,会基于LRU算法将部分分区数据移出去,复用时会重算,增加执行开销

参考

Where do ‘normal’ println go in a scala jar, under Spark
Spark Architecture

你可能感兴趣的:(云计算,spark私房菜)