spark内存资源管理机制

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默认数量

你可能感兴趣的:(spark内存资源管理机制)