Yarn申请的内存的精确计算(转载+应用到自己的情况中)
這篇博客主要是利用[1]中的流程來(lái)嘗試估算自己在運(yùn)行spark on yarn模式時(shí)申請(qǐng)的內(nèi)存數(shù)值。
?
?
一個(gè)spark任務(wù)會(huì)產(chǎn)生幾個(gè)Container?
count = ExecutorNum + 1
也就是說(shuō)最后申請(qǐng)的Container數(shù)量為Executor的數(shù)量加上driver即為spark任務(wù)在yarn上執(zhí)行最終需要的Container數(shù)量。
?
?
spark的配置參考Web UI的Enviroment標(biāo)簽(下面參數(shù)來(lái)自spark-defaults.sh,與spark-env.sh有重疊,如果不確定哪個(gè)為準(zhǔn)就以Web UI為準(zhǔn))
spark.driver.memory=2g
spark.executor.memory=1g
那么spark任務(wù)的提交參數(shù)為,driverMemory=2G,executorMemory=1G,executorNum = 1
minContainer=512MB
Increment =1024MB
則該任務(wù)
executorContainerMemory計(jì)算過(guò)程如下
申請(qǐng)資源數(shù):executor = Max(executorMemory*0.1,384M)+executorMemory=1408MB
我們來(lái)驗(yàn)證下上面的結(jié)果:
http://master:8088->點(diǎn)擊ID下方的application_1588751040057_0002->點(diǎn)擊Logs->stdout得到:
說(shuō)實(shí)話,我個(gè)人感覺[1]中后半部分的計(jì)算不是太準(zhǔn),我后來(lái)自己想了一個(gè):
[(executor的數(shù)量)*1408MB](1+20%余量)約等于5G
executor的數(shù)量可以通過(guò)命令行設(shè)置:
spark-submit --num-executors 4
也可以通過(guò)$SPARK_HOME/conf/spark-defaults.conf來(lái)設(shè)置:
spark.executor.instances? 4
?
注意哈:如果不設(shè)置spark.executor.instances或者num-executors,網(wǎng)傳num-executors默認(rèn)為2這個(gè)是不準(zhǔn)確的,
這個(gè)2只是一個(gè)初始化的值(也可以理解成是最小值,一般都比這個(gè)大),具體根據(jù)是[2]:
--num-executors?or spark.?executor. instances acts as a minimum?number?of?executors?with a?default value?of 2. The minimum?number?of?executors?does not imply that the Spark application waits?for?the specific minimum?number?of?executors?to launch, before it starts.
Reference:
[1]如何準(zhǔn)確計(jì)算Spark On Yarn資源消耗 - spark On Yarn內(nèi)存計(jì)算
[2]Autoscaling in Spark
總結(jié)
以上是生活随笔為你收集整理的Yarn申请的内存的精确计算(转载+应用到自己的情况中)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: uc浏览器极速版 app
- 下一篇: 涨乐财富通如何买reits(如何看待A股