Yarn申请的内存的精确计算(转载+应用到自己的情况中)
這篇博客主要是利用[1]中的流程來嘗試估算自己在運行spark on yarn模式時申請的內存數值。
?
?
一個spark任務會產生幾個Container?
count = ExecutorNum + 1
也就是說最后申請的Container數量為Executor的數量加上driver即為spark任務在yarn上執行最終需要的Container數量。
?
?
spark的配置參考Web UI的Enviroment標簽(下面參數來自spark-defaults.sh,與spark-env.sh有重疊,如果不確定哪個為準就以Web UI為準)
spark.driver.memory=2g
spark.executor.memory=1g
那么spark任務的提交參數為,driverMemory=2G,executorMemory=1G,executorNum = 1
minContainer=512MB
Increment =1024MB
則該任務
executorContainerMemory計算過程如下
申請資源數:executor = Max(executorMemory*0.1,384M)+executorMemory=1408MB
我們來驗證下上面的結果:
http://master:8088->點擊ID下方的application_1588751040057_0002->點擊Logs->stdout得到:
說實話,我個人感覺[1]中后半部分的計算不是太準,我后來自己想了一個:
[(executor的數量)*1408MB](1+20%余量)約等于5G
executor的數量可以通過命令行設置:
spark-submit --num-executors 4
也可以通過$SPARK_HOME/conf/spark-defaults.conf來設置:
spark.executor.instances? 4
?
注意哈:如果不設置spark.executor.instances或者num-executors,網傳num-executors默認為2這個是不準確的,
這個2只是一個初始化的值(也可以理解成是最小值,一般都比這個大),具體根據是[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]如何準確計算Spark On Yarn資源消耗 - spark On Yarn內存計算
[2]Autoscaling in Spark
總結
以上是生活随笔為你收集整理的Yarn申请的内存的精确计算(转载+应用到自己的情况中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uc浏览器极速版 app
- 下一篇: spark启动脚本报告No such f