相关疑难解决方法(0)

Apache Spark:设置执行程序实例不会更改执行程序

我在集群模式下在YARN集群上运行Apache Spark应用程序(spark在此集群上有3个节点).

当应用程序运行时,Spark-UI显示2个执行程序(每个执行程序在不同的节点上运行)和驱动程序在第三个节点上运行.我希望应用程序使用更多的执行程序,所以我尝试将参数--num-executors添加到Spark-submit并将其设置为6.

spark-submit --driver-memory 3G --num-executors 6 --class main.Application --executor-memory 11G --master yarn-cluster myJar.jar <arg1> <arg2> <arg3> ...

但是,执行人数仍然是2.

在spark UI上我可以看到参数spark.executor.instances是6,正如我的意图,并且不知何故仍然只有2个执行器.

我甚至尝试从代码中设置此参数

sparkConf.set("spark.executor.instances", "6")
Run Code Online (Sandbox Code Playgroud)

再次,我可以看到参数设置为6,但仍然只有2个执行程序.

有谁知道为什么我不能增加执行人的数量?

yarn.nodemanager.resource.memory-mb在yarn-site.xml中是12g

hadoop-yarn apache-spark

15
推荐指数
2
解决办法
2万
查看次数

EMR 忽略 Spark 提交参数(内存/核心/等)

我正在尝试使用 EMR 集群上的所有资源。

集群本身是 4 台 m4.4xlarge 机器(1 个驱动程序和 3 个工作程序),具有 16 个 vCore、64 GiB 内存、EBS 存储:128 GiB

通过 cli 启动集群时,我会看到以下选项(所有 3 个选项都在同一数据管道中执行):

只需使用“maximizeResourceAllocation”,无需任何其他 Spark-submit 参数

这只给了我这里介绍的 2 个执行者 在此输入图像描述

不要放置任何东西,让 Spark-defaults 完成他们的工作

提供以下低质量的执行者 在此输入图像描述

使用 AWS 指南了解如何在 EMR 中配置集群

按照本指南,我推导出以下spark-submit参数:

      "--conf",
      "spark.executor.cores=5",
      "--conf",
      "spark.executor.memory=18g",
      "--conf",
      "spark.executor.memoryOverhead=3g",
      "--conf",
      "spark.executor.instances=9",

      "--conf",
      "spark.driver.cores=5",
      "--conf",
      "spark.driver.memory=18g",

      "--conf",
      "spark.default.parallelism=45",

      "--conf",
      "spark.sql.shuffle.partitions=45",

Run Code Online (Sandbox Code Playgroud)

但仍然没有运气: 在此输入图像描述

现在,我确实在互联网上查找了 所有可以查找的地方,但找不到任何关于为什么 EMR 不使用所提供的所有资源的解释。也许我遗漏了一些东西,或者也许这是预期的行为,但是当“maximizeAllocation”仅跨越具有 3 个工作线程的集群上的 2 个执行程序时,就会出现问题。

更新:

因此,今天在运行不同的数据管道时,我使用“maximizeResourceAllocation”得到了这个: 在此输入图像描述 这比其他的要好得多,但在使用的内存和执行器方面仍然缺乏很多(尽管EMR团队的有人说emr将执行器合并为超级执行器以提高性能)。

amazon-web-services amazon-emr apache-spark

7
推荐指数
1
解决办法
1457
查看次数