【问题标题】:Better understanding of communication between YARN and Spark更好地理解 YARN 和 Spark 之间的通信
【发布时间】:2019-02-19 08:50:17
【问题描述】:

我想更好地了解 YARN 和 Spark 之间的通信交换。 例如:

  1. 从触发 Spark 作业到 YARN 分配资源会发生什么?
  2. 当 Spark 作业请求的资源超过 YARN 可用的资源时会发生什么?
  3. 当 Spark 作业请求的资源超过集群容量时会发生什么?

【问题讨论】:

    标签: apache-spark hadoop-yarn hortonworks-data-platform cloudera-cdh


    【解决方案1】:

    在 Yarn 客户端模式下运行 spark-submit 时完成的步骤 -

    1. Spark 驱动程序内部调用ClientsubmitApplication 方法。这会将 Spark 应用程序提交到 YARN 集群(即 YARN ResourceManager)并返回应用程序的 ApplicationId。

    2. 之后,spark使用步骤1中生成的application_id,调用createContainerLaunchContext方法。此方法为 YARN NodeManager 创建一个 YARN ContainerLaunchContext 请求以启动 ApplicationMaster(在容器中)。

    3. 第 2 步负责为应用程序启动 ApplicationMaster。如果集群没有资源来启动 AM,那么它将失败并且驱动程序将异常关闭。一旦 AM 启动并运行,它会联系驱动程序并确认它已启动。此时,spark yarn 应用程序已启动并正在运行。

    4. 在此驱动程序向 AM 请求资源(执行程序)后,AM 向 Yarn ResourceManager 请求相同的资源。

    5. 如果纱线没有那么大的容量,它将为 Spark 应用程序提供任何可能的东西。如果它有容量,它会提供任何要求的东西。

    更多细节在这里 - https://jaceklaskowski.gitbooks.io/mastering-apache-spark/yarn/spark-yarn-client.html

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 2017-03-08
      • 2014-09-14
      • 2015-05-20
      • 2017-04-08
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 2010-09-23
      相关资源
      最近更新 更多