当前位置: 首页 > 知识库问答 >
问题:

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

呼延子安
2023-03-14

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

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

Spark-提交-驱动程序-内存3G-num-执行器6-类主。应用程序-执行器-内存11G-主纱-集群myJar.jar

然而,遗嘱执行人的人数仍为2人。

在spark UI上,我可以看到参数spark。执行人。实例是6个,正如我所期望的,但不知何故仍然只有2个执行者。

我甚至试着从代码中设置这个参数

sparkConf.set("spark.executor.instances", "6")

同样,我可以看到参数被设置为6,但仍然只有2个执行器。

有人知道我为什么不能增加遗嘱执行人的人数吗?

纱线节点管理器。资源纱线位置内存mb为12g。xml


共有3个答案

颜昕
2023-03-14
匿名用户

要充分利用spark群集,您需要根据群集设置--num executors--executor cores--executor memory的值:

  • <代码>--num executors命令行标志或spark。执行人。实例配置属性控制请求的执行器数量
  • 执行器核心命令行标志或spark。执行人。cores配置属性控制执行器可以运行的并发任务数
  • 执行器内存命令行标志或spark。执行人。内存配置属性控制堆大小

方波娃
2023-03-14

请注意,yarn.nodemanager.resource.memory-mb是单个NodeManager可以跨一个节点上的所有容器分配的总内存。

在您的例子中,由于yarn.nodemanager.resource.memory-mb=12G,如果您将分配给任何单个节点上所有YARN容器的内存相加,它不能超过12G。

您已经为每个Spark executor容器请求了11G(执行器内存11G)。虽然11G小于12G,但这仍然不起作用。为什么?

  • 因为你必须考虑spark.yarn.executor.memoryOverhead,也就是min(执行内存*0.10,384)(默认情况下,除非你覆盖它)。

因此,以下数学必须成立:

<代码>火花。执行人。内存火花。纱线执行人。内存溢出

请参见:https://spark.apache.org/docs/latest/running-on-yarn.html有关spark的最新文档。纱线执行人。内存溢出

此外,<代码>火花。执行人。实例只是一个请求。应用程序的Spark ApplicationMaster将向Thread ResourceManager请求容器数=Spark。执行人。实例。ResourceManager将根据以下条件在NodeManager节点上授予请求:

  • 节点上的资源可用性。纱线调度有自己的细微差别——这是一本关于纱线FairScheduler工作原理的好入门书

如果请求未被授予,当满足上述条件时,请求将被排队并授予。

施利
2023-03-14

增加yarn.nodemanager.resource.memory-mbyarn-site.xml

对于每个节点12g,您只能启动驱动程序(3g)和2个执行器(11g)。

Node1-驱动程序3g(7%开销)

节点2-执行器1 11g(7%开销)

节点3-执行器2 11g(7%开销)

现在您正在请求11g的执行器3,并且没有节点有11g可用存储器。

对于7%的开销,请参阅spark.yarn.executor.memory开销和spark.yarn.driver.memory开销https://spark.apache.org/docs/1.2.0/running-on-yarn.html

 类似资料:
  • 注意:从2.8版开始,Symfony为服务配置提供了,从3.3版开始,Symfony提供了(而不是)来将具体对象别名到接口,以便将依赖项自动注入到“控制器即服务”中。还有一个包允许控制器“动作”方法的自动接线,尽管我已经离开了这个包,并且更多地关注ADR模式的变化(基本上,这是一个带有接口方法的单个“action”类,而不是在单个类中推送一堆actions方法,最终导致架构噩梦)。这就是我多年来一

  • 我是javascript新手,这可能是一个简单的问题。。。 我在这里所做的是修改div(#box)的css样式,这取决于你所在页面的位置( 我试图实现的是向#box添加多个css更改,并每次执行一个随机更改。例如,每次从最顶端滚动通过200,div的显示高度为:绿色背景为“100px”,蓝色背景为“200px”,或红色背景为“300px”。希望这有意义。。。。

  • 问题内容: 考虑以下查询。 两个查询的执行计划相同,并且同时执行。但是,我期望第二个查询将有不同的计划,并且执行速度会变慢,因为它必须从联系人中选择所有数据并应用过滤器。看来我错了。 我想知道这是怎么回事? 数据库服务器:SQL Server 2005 问题答案: 正在发生“查询优化器”。当您运行查询时,SQL Server使用基于成本的优化器来确定最有可能满足该请求(即执行计划)的最佳方法。将其

  • 我已经将spark.executor.memory设置为2048M,在UI“环境”页面中,我可以看到这个值已经设置正确。但是在“executors”页面中,我看到只有一个executor,它的内存是265.4MB。非常奇怪的价值。为什么不是256MB,或者就像我设定的那样?

  • 我有一个Spring Boot应用程序,我有以下依赖关系:

  • 我对akka-actor是一个新手,对一些问题感到困惑: 当我创建actorSystem并使用actorOf(Props(ClassOf[AX],...))在main方法中创建actor,我的ActorAX有多少实例? 如果Q1的答案只有一个,那么这是否意味着我在AX actor类定义中创建的任何数据结构都只会出现在一个线程中,而我不应该关心并发问题? 如果我执行元的一个操作(receive方法中