【问题标题】:How are Spark Executors launched if Spark (on YARN) is not installed on the worker nodes?如果工作节点上未安装 Spark(在 YARN 上),如何启动 Spark 执行器?
【发布时间】:2017-05-02 00:55:29
【问题描述】:

我有一个关于在 YARN 上以集群模式运行的 Apache Spark 的问题。根据this thread,Spark 本身不必安装在集群中的每个(工作)节点上。我的问题在于 Spark Executors:一般来说,YARN 或者更确切地说是资源管理器应该决定资源分配。因此,Spark Executors 可以在集群中的任何(工作)节点上随机启动。但是,如果 Spark 没有安装在任何(worker)节点上,YARN 如何启动 Spark Executors?

【问题讨论】:

  • Executors 需要以某种方式提供 Spark 运行时。这可以通过在节点上安装或随您的应用程序一起提供,例如在一个捆绑 Spark 的胖罐子里。我认为...
  • 您不必将二进制文件包含在 fatjar/uberjar 中——它由 spark-submit 自动提供。

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

概括地说,当 Spark 应用程序在 YARN 上启动时,

  1. 将在其中一个 YARN 容器中创建 Application Master(Spark 特定)。
  2. 用于 Spark 工作器(执行器)的其他 YARN 容器

Spark 驱动程序会将序列化的操作(代码)传递给执行器以处理数据。

spark-assembly 提供与 spark 相关的 jar 以在 YARN集群和应用程序会有自己的功能相关 罐子。


编辑: (2017-01-04)

Spark 2.0 不再需要胖组装罐进行生产 部署。source

【讨论】:

  • 感谢您的回答。我确实知道 YARN 容器。据我了解,执行程序(实际上是一个进程)是在容器“中”启动的。但是,执行器本身是 Spark 特定的组件。因此,我的问题是:如果 Spark 未安装在任何工作节点上,如何启动 Spark 执行器(在 YARN 容器内)?
  • 是的! executor 是一个进程,所有的计算逻辑都将通过 spark 驱动程序传递给它。 spark-assembly 等其他 jar 在应用程序启动时将通过将它们移动到 HDFS 对所有工作人员可用(这是一个自动化过程)。
  • 是的,没错,但具体情况如何?
  • 这是否意味着如果工作节点上未安装 Spark,则需要 spark-assembly jar(其中包含应用程序的所有相关依赖项)才能启动 Spark Executors?
  • true.. spark-assembly 提供了与 spark 相关的 jar 来在 YARN 集群上运行 Spark 作业,并且应用程序将拥有自己的功能相关 jar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2015-07-31
  • 1970-01-01
相关资源
最近更新 更多