spark storage和shuffle的动态资源分配
Spark1.6之前:(直接修改参数值就可以)
data需要资源 : spark.storage.memoryFraction
shuffle所需资源 : spark.shuffle.memoryFraction
其他:程序中用到的内存
Spark1.6后:
Reserved Memory : 固定300M,无法修改,加载一些class的相对比较固定的对象,以及计算最小spark的Exector内存
Spark Memory :Spark执行过程中进行数据缓存和shuffle操作使用的内存,资源大小:默认为1(去除300M)-75%
缓存(storage memory)、shuffle(execution memory)
storage memory满,execution memory空,storage可以占用execution
execution memory满,storage memory空,execution可以占用sotrage
storage满,execution满,execution可以占用storage,使storage删除一部分数据。storage不能占用execution,所以可以设置spark.memory.storageFraction,保证storage最少保存的内存大小
User Memory : 代码中用到的内存,资源大小:[1- spark Memory]
--------------------------------------------------------------------------------------------------------------------------
Spark 动态资源分配
现阶段spark streaming实现一般,spark core和spark sql实现的较好
spark.dynamicAllocation.enabled 开启动态资源分配(指executor的数量可以根据job中需要的资源来进行申请)
spark.dynamicAllocation.initialExecutors 初始化的时候指定executor默认数量