【问题标题】:Should the number of executor core for Apache Spark be set to 1 in YARN mode?在 YARN 模式下,Apache Spark 的执行器核心数是否应该设置为 1?
【发布时间】:2019-08-10 08:49:08
【问题描述】:

我的问题:在 YARN master 中运行 Apache Spark 应用程序,将部署模式作为客户端或集群,executor-cores 是否应该始终设置为 1?

我正在使用200 data nodes 每个具有14 cores 的集群上运行一个处理数百万个数据的应用程序。当我在 YARN 上使用 2 executor-cores150 executors 时,它运行完美,但其中一位集群管理员要求我使用 1 个执行器核心。他坚持认为 YARN 中的 Spark 应该与 1 个执行器核心一起使用,否则它将从其他用户那里窃取资源。他将我指向 Apache 文档上的这个页面,其中说 executor-core 的默认值是 1 对于 YARN。

https://spark.apache.org/docs/latest/configuration.html

那么,我们真的应该只使用 1 来作为执行器核心吗?

如果执行器使用 1 个核心,它们不是单线程的吗?

亲切的问候,

【问题讨论】:

  • 它建议每个执行器更少的核心和更多的总执行器。这样并行性会更好。前任; 100个节点;每个都有 8 核和 16 GB 内存。推荐配置为 1core、2gbram、700executor。

标签: apache-spark hadoop-yarn apache-spark-2.0


【解决方案1】:

当我们使用 Yarn 之类的集群管理器运行 spark 应用程序时,会有几个守护进程在后台运行,例如 NameNode、Secondary NameNode、DataNode、JobTracker 和 TaskTracker。因此,在指定 num-executors 时,我们需要确保留出足够多的内核(每个节点约 1 个内核)以使这些守护进程顺利运行。

ApplicationMaster 负责从 ResourceManager 协商资源,并与 NodeManager 一起执行和监控容器及其资源消耗。如果我们在 yarn 上运行 spark,那么我们需要预算 AM 所需的资源

Example 
**Cluster Config:**
200 Nodes
14 cores per Node

为 Hadoop/Yarn 守护程序每个节点保留 1 个核心 => 每个节点可用的核心数 = 14-1 = 13 因此,集群中可用的内核总数 = 13 x 200 = 2600

让我们为每个执行器分配 5 个核心 => --executor-cores = 5(以获得良好的 HDFS 吞吐量)

可用执行器数 =(总核心数/每个执行器的核心数)= 2600/5 = 520

为 ApplicationManager 留下 1 个执行者 => --num-executors = 519

请注意:这只是一个示例推荐配置,您 不妨根据您的应用程序的性能进行修改。

另外一个更好的做法是在你使用的时候监控节点资源 执行你的工作,这可以更好地了解资源 集群中的利用率

【讨论】:

  • 谢谢内哈。这正是我所知道的。在上面的假设示例中,您在每个执行程序中使用了 5 个核心,在我的案例中我只使用了 2 个(并且分布在 200 个执行程序中),并且发现性能是可以接受的。管理员的评论是我应该始终为 YARN 每个执行器使用 1 个核心,这是我需要澄清的。他说这是 Apache Spark 文档所说的。这没有任何意义吗?
  • 文档清除说“大多数控制内部设置的属性都有合理的默认值。”这些是默认值,而不是强制性的。在 yarn master 模式下,默认值为 1,因此每个 executor 默认只使用 1 个 core。但是,如果你有更多内核,那么使用更多内核绝对没有坏处,只要你为 hadoop 守护进程留出至少 1 个内核
  • 对于我的用例,我通常认为 1 个执行器核心性能最好,尽管您看到许多博客文章建议每个执行器 4 或 5 个核心为最佳
  • 您必须记住的另一件事是,假设您有一个正在消化单个任务的执行程序——这可能由于各种原因导致数据本地性等。在这种情况下,您的执行程序将被赋予2 个核心,但可能只有 1 个核心在使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多