前边文章的铺垫终于可以运用到实际项目的开发及调优中了,下面我们就来看看实际集群环境下的Spark配置吧
一、Spark内存使用大体上的两类
执行内存
和
存储内存
。其中执行内存用于shuffle、join、sort、aggregation等操作的计算使用。存储内存用于cache对象、存储广播数据等。
二、Executor内存设置小了会发生的现象
1、频繁GC,GC超限,CPU大部分时间用来做GC而回首的内存又很少,也就是executor堆内存不足。
2、java.lang.OutOfMemoryError内存溢出,这和程序实现强相关,例如内存排序等,通常是要放入内存的数据量太大,内存空间不够引起的。
3、数据频繁spill到磁盘,如果是I/O密集型的应用,响应时间就会显著延长。
三、Spark内存模型
注:2.0+和2.0以前的版本默认值不同(spark.memory.fraction Spark2.0+默认值0.6 Spark1.6默认值0.75)
版权声明:本文为weixin_43878293原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。