【问题标题】:How YARN decides which type of Application master to launch?YARN 如何决定启动哪种类型的 Application master?
【发布时间】:2018-09-09 07:39:48
【问题描述】:

我参考了this 链接,对 YARN 的工作原理有了相当的了解。 YARN 能够运行多租户应用程序,例如 MR、Spark 等。

关键点是特定于应用程序的ApplicationMaster (AM)

当客户端向资源管理器提交作业时,资源管理器如何知道它是什么类型的应用程序(MR、Spark)并因此启动适当的 ApplicationMaster?

谁能帮助 RM 如何知道提交给它的 Job 类型?

编辑:

这个问题是:RM如何知道提交了什么样的Job而不是YARN或MR或Spark之间的任何关系。

RM 收到一个 Job,所以它必须启动第一个 Container 来运行特定于应用程序的 ApplicationMaster,因此 RM 是如何知道向它提交了什么样的 Job?

这是我要问的问题,这与复制的内容不同。

【问题讨论】:

  • 这肯定不是真的_“当客户向资源管理器提交作业时”,因为 RM 甚至不处理任何类型的作业。您到底想知道哪些特定于 Apache Spark 的信息?否则,我看不出它与 Spark 有什么关系。请详细说明。
  • 我并没有说任何特定于 Spark 或 MR 的内容。我的问题是:RM 怎么知道提交了什么样的工作?它可能是 MR、Spark 或其他任何东西?因为根据提交的Job的类型,启动了对应的Application Master,那么RM怎么知道提交的是什么类型的Job呢。
  • 实际上是一个很好的问题,因为 Spark 究竟如何与 YARN 集成?参与这种关系的组件有哪些?
  • @ErnestKiwele:这个问题与您所建议的问题不重复。这个问题说:RM如何知道提交了什么样的Job,可能是MR Job,Spark Job等。

标签: apache-spark hadoop mapreduce hadoop-yarn hadoop2


【解决方案1】:

YARN 不需要/不想知道在其上运行的应用程序的类型。它提供资源,运行在其上的应用程序关心的是了解如何从 YARN 获取资源以运行它需要运行的内容(YARN 的架构并不建议 yarn 想知道任务在什么/如何运行它)。

有更多信息here关于如何编写与纱线集成的组件。

正如我从两步编写 YARN 应用程序中了解到的那样,需要编写一个 YARN 客户端以及一个 YARN 应用程序主控。

  • 应用程序客户端决定作为应用程序主机运行什么:

    // Construct the command to be executed on the launched container 
    String command = 
        "${JAVA_HOME}" + /bin/java" +
        " MyAppMaster" + 
        " arg1 arg2 arg3" +
        ...
    

    其中MyAppMaster 是特定于应用程序的主类。

  • 第二件事是在容器中运行的任务,注意应用程序主机提供的用于运行容器的命令类型(它运行实际的任务执行器):

    // Set the necessary command to execute on the allocated container 
    String command = "/bin/sh ./MyExecShell.sh";
    

如您所见,这些是应用程序提供的代码,用于了解任务(或使用问题词语的应用程序类型)。 Further down在同一个页面,你可以看到申请是如何提交到yarn的。

现在从 Spark 的角度来看:Spark 有自己的应用程序主类(检查herethe entire package)。这些对 Spark 应用程序开发人员是隐藏的,因为该框架提供了与 YARN 的内置集成,而 YARN 恰好是 Spark 支持的资源管理器之一。

如果您要编写自己的 YARN 客户端来执行 Python 代码,那么您必须按照 YARN 应用程序客户端/主文档步骤中的步骤为 YARN 提供命令、配置和资源,以及用于执行应用程序的特定逻辑或任务的环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多