spark storage和shuffle的動(dòng)態(tài)資源分配
Spark1.6之前:(直接修改參數(shù)值就可以)
data需要資源 : spark.storage.memoryFraction
shuffle所需資源 : spark.shuffle.memoryFraction
其他:程序中用到的內(nèi)存
Spark1.6后:
Reserved Memory : 固定300M,無(wú)法修改么介,加載一些class的相對(duì)比較固定的對(duì)象智末,以及計(jì)算最小spark的Exector內(nèi)存
Spark Memory :Spark執(zhí)行過(guò)程中進(jìn)行數(shù)據(jù)緩存和shuffle操作使用的內(nèi)存同波,資源大小:默認(rèn)為1(去除300M)-75%
緩存(storage memory)割去、shuffle(execution memory)
storage memory滿(mǎn),execution?memory空,storage可以占用execution
execution?memory滿(mǎn)臭蚁,storage memory空,execution可以占用sotrage
storage滿(mǎn),execution滿(mǎn)垮兑,execution可以占用storage冷尉,使storage刪除一部分?jǐn)?shù)據(jù)。storage不能占用execution系枪,所以可以設(shè)置spark.memory.storageFraction雀哨,保證storage最少保存的內(nèi)存大小
User Memory : 代碼中用到的內(nèi)存,資源大朽臀蕖:[1- spark Memory]
--------------------------------------------------------------------------------------------------------------------------
Spark 動(dòng)態(tài)資源分配
現(xiàn)階段spark streaming實(shí)現(xiàn)一般,spark core和spark sql實(shí)現(xiàn)的較好
spark.dynamicAllocation.enabled? ?開(kāi)啟動(dòng)態(tài)資源分配(指executor的數(shù)量可以根據(jù)job中需要的資源來(lái)進(jìn)行申請(qǐng))
spark.dynamicAllocation.initialExecutors? 初始化的時(shí)候指定executor默認(rèn)數(shù)量