Spark with Yarn:提供 spark 资源相关参数的要点?

Spark with Yarn: Point in providing spark-resource related parameters?

我正在阅读有关 Spark 和资源管理的文献,在我的例子中就是 Yarn。

我想我理解了基本概念以及 Yarn 如何将 Spark Master/Workers 封装在容器中。

仍然提供 --driver-memory--executor-memory--number-executors 等资源参数是否有意义? Yarn-application-master(spark-master) 不应该找出需求并相应地请求新资源吗? 或者提供这个参数来干扰资源协商过程是否明智?

Spark 需要协商来自 YARN 的资源。提供资源参数告诉 Spark 从 YARN 请求多少资源。

对于 YARN 上的执行者:

  1. Spark 应用程序使用固定数量的执行程序(默认 = 2)。
  2. spark-submit、spark-shell 等的 --num-executors 标志设置了预期的执行者数量。

对于 YARN 上的内存管理:

  1. 使用--executor-memory设置每个执行器使用的内存。
  2. 设置 --executor-cores 告诉 Spark 从 YARN 中声明多少核心。
  3. 使用 --driver-memory 设置驱动程序进程的内存量。

一些通用的 Spark-on-YARN 注释:

  1. 如果您的 YARN 集群将应用程序安排到队列中,请使用 --queue 选项。
  2. Spark 针对内存计算进行了优化,因此请向 YARN 寻求较少数量的内存密集型执行程序(具有多个内核和更多内存)。如果您在 YARN 中设置了内存上限,请小心。

Spark on YARN Documentation 有更多详细信息。