Spark num-executors

问题描述 投票:3回答:2

我在AWS上设置了10节点HDP平台。以下是我的配置2服务器 - 名称节点和备用名称节点7数据节点和每个节点有40个vCPU和160 GB内存。

我试图在提交spark应用程序时计算执行程序的数量,在浏览不同的博客后,我对这个参数的实际含义感到困惑。

看下面的博客,似乎num执行器是所有节点http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/上执行器的总数

但是看下面的博客,似乎num执行器是每个节点或服务器https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit

任何人都可以澄清并审查以下内容: -

  1. num-executors值是每个节点还是跨所有数据节点的执行程序总数。
  2. 我使用以下计算来计算每个执行程序的核心数,执行程序数和内存 核心数<= 5(假设为5)Num执行器=(40-1)/ 5 = 7内存=(160-1)/ 7 = 22 GB

通过以上计算,这将是正确的方法

--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 7 --executor-cores 5 

OR

--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 49 --executor-cores 5 

谢谢,Jayadeep

apache-spark yarn hortonworks-data-platform
2个回答
0
投票

任何人都可以澄清并审查以下内容: -

  1. num-executors值是每个节点还是跨所有数据节点的执行程序总数。

您需要首先了解执行程序在NodeManager上运行(您可以将其视为Spark独立的工作者)。将为YARN上的Spark应用程序分配许多与指定的执行程序数相等的容器(包括vCPU,内存,网络,磁盘等)。现在这些执行器容器将在多个NodeManager上运行,这取决于CapacityScheduler(HDP中的默认调度程序)。

总而言之,执行程序的总数是您为应用程序运行指定的资源容器数。

请参阅this博客以更好地理解。

  1. 我使用以下计算来计算每个执行程序的核心数,执行程序数和内存

核心数<= 5(假设为5)Num执行器=(40-1)/ 5 = 7内存=(160-1)/ 7 = 22 GB

没有用于计算执行者数量的严格公式。相反,您可以尝试为您的应用程序启用Dynamic Allocation in YARN


0
投票

容量调度程序有一个打嗝。据我所知,它允许您只按内存计划。您首先需要将其更改为主导资源计算器调度类型。这将允许您要求更多的内存和核心组合。一旦你改变了它,你应该能够用你的火花应用程序询问杯子和记忆。

对于--num-executors标志,您甚至可以将其保持在1000的非常高的值。它仍将仅分配可在每个节点上启动的容器数。当您的群集资源增加时,附加到应用程序的容器将会增加。每个节点可以启动的容器数量将受到分配给这些节点上的节点管理器的资源量的限制。

© www.soinside.com 2019 - 2024. All rights reserved.