2014-10-27 79 views
0

我想我明白了紗線結構火花相當不錯,但現在我不知道:當我啓動Yarn上的Spark:在客戶端檢查驅動程序內存?

spark-submit --master yarn-cluster --class  com.domain.xxx.ddpaction.DdpApp --num-executors 24 --deploy-mode cluster --driver-memory 4g --executor-memory 2g --executor-cores 1 --conf "spark.yarn.jar=/spark/lib/spark-assembly-1.1.0-hadoop2.4.0.jar" ddpaction-3.1.0.jar yarn-cluster config.yml 

失敗了

# Native memory allocation (malloc) failed to allocate 2863333376 bytes for committing reserved memory 

從我啓動火花提交具有較少的服務器超過2GB的空閒內存,這會導致錯誤,但驅動程序應執行的資源管理器遠遠超過4GB作爲驅動程序內存參數。 爲什麼驅動程序的內存值在我的理解中應該只在資源管理器中的紗線羣集上檢查和分配,它是在以紗線羣集模式啓動spark-submit的服務器上分配的?

回答

2

這是一個固定在火花1.4.0中的錯誤見SPARK-3884

+0

是的,我看到了,我是重複的問題,記者:-)之一 – VirgileD 2015-09-23 15:24:09

1

它看起來像有不好的簡化火花提交腳本:

elif [ "$1" = "--driver-memory" ]; then 
    export SPARK_SUBMIT_DRIVER_MEMORY=$2 

所以駕駛員記憶功能的參數值的方式是使用火花提交設置其分配的內存;這隻適用於紗線客戶模式,而不是紗線簇。 我通過更換這些線路解決我的問題:

elif [ "$1" = "--spark-submit-memory" ]; then 
    export SPARK_SUBMIT_DRIVER_MEMORY=$2 

所以現在我可以設置(如果需要)分配給存儲火花提交給駕駛員一個不同的值。

相關問題