hadoop纱线-Spark动态分配不起作用



我想为我提交的应用程序使用spark的动态分配功能,但应用程序无法扩展。

我的集群由3个节点组成,每个节点都有:

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

我使用hdp 2.4,并按如下方式设置所有需要的动态分配属性(它们在hdp中预先配置,但我用文档进行了验证):

  • 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

我使用yarn ResourceManager UI来查找使用过的核心。

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

./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示例时,可以分配更多的资源。在这个例子中,它静态地分配8个容器,每个容器有1个核心。(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

我做错了什么,火花没有自动分配最大的可用资源?

感谢您的帮助:)

我认为这个博客(http://jerryshao.me/architecture/2015/08/22/spark-dynamic-allocation-investigation/)可以帮助你。你的申请最多可以申请10名执行人,但不需要那么多执行人。

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

相关内容

  • 没有找到相关文章

最新更新