0

我想为我提交的应用程序使用spark的动态分配功能,但应用程序不能缩放。Spark动态分配不工作

我的集群由3节点并且各自具有:

  • 4芯
  • 8GB RAM
  • 火花:1.6
  • YARN + MapReduce2:2.7

我使用hdp 2.4并设置所有需要的动态分配属性,如下所示(它们已预先配置在hdp b中) UT我与docs验证它们):

  • spark.dynamicAllocation.enabled=true
  • spark.dynamicAllocation.initialExecutors=5 - spark.dynamicAllocation.maxExecutors=10
  • spark.dynamicAllocation.minExecutors=1

  • spark.shuffle.service.enabled=true

  • yarn.nodemanager.aux-services=mapreduce_shuffle,spark_shuffle
  • yarn.nodemanager.aux-services.spark_shuffle.class=org.apache.spark.network.yarn.YarnShuffleService

我使用纱线ResourceManager-UI查找使用的核心。

当我提交以下PI示例时,每个1个核心只使用3个容器。在那里有足够的资源来分配,但没有使用更多的资源。

./bin/spark-submit --class org.apache.spark.examples.SparkPi \ 
--master yarn-cluster \ 
--deploy-mode cluster \ 
--driver-memory 512m \ 
--executor-memory 512m\ 
lib/spark-examples*.jar 10000 

当我测试提交PI-example与定义数量的执行者时,它可以分配更多的资源。在这个例子中,它静态分配每个1个核心的8个容器。 (1个驱动器+ 7执行人)

./bin/spark-submit --class org.apache.spark.examples.SparkPi \ 
--master yarn-cluster \ 
--num-executors 7 \ 
--driver-memory 512m \ 
--executor-memory 512m \ 
lib/spark-examples*.jar 100000 

什么我错了,那个火花不会自动分配的最大可用资源?

谢谢你的帮助:)

+0

Spark不会马上给予内存。如果需要,那么只有火花会分配内存。 –

回答

0

当他想将其运行到动态分配模式时,不应指定--num-executor参数。