2014-10-27 84 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 

所以现在我可以设置(如果需要)分配给存储火花提交给驾驶员一个不同的值。

相关问题