Spark num-executors

Jay*_*man 5 hadoop-yarn hortonworks-data-platform apache-spark

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

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

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

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

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

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

  2. 我正在使用下面的计算来计算每个执行程序的核心数、执行程序数和内存

    内核数 <= 5(假设为 5) 执行器数 = (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 
Run Code Online (Sandbox Code Playgroud)

谢谢,贾亚德普

Rak*_*hit 2

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

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

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

综上所述,执行器总数就是您为应用程序指定运行的资源容器的数量。

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

  1. 我使用下面的计算来得出核心数、执行器数和每个执行器的内存

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

执行者数量的计算没有严格的公式。相反,您可以尝试在 YARN 中为您的应用程序启用动态分配