我提到了此链接,并对纱线的工作方式有公平的了解。纱线能够使用多租户应用程序运行,例如MR,Spark等。
关键点是应用程序特定的ApplicationMaster (AM)
。
当客户将作业提交给资源管理器时,资源管理器如何知道它是什么样的应用程序(MR,SPARK(并因此启动适当的应用程序管理员?
谁能帮助RM知道要提交什么样的工作?
编辑:
这个问题是:RM如何知道已提交了哪种工作,而不是纱线或先生或Spark之间的任何关系。
rm收到一份工作,因此必须启动一个运行应用程序特定应用程序管理员的第一个容器,因此RM如何知道已提交了哪种工作?
这是我要问的问题,这不是相同的重复。
纱线不需要/不想知道在其上运行的应用程序的类型。它提供了资源,这是在其上运行的应用程序的关注点,以了解如何从纱线中获取资源以运行它需要运行的内容(Yarn的体系结构并不建议 Yarn想要知道任务如何运行什么/它(。
这里有更多有关如何编写与纱线集成的组件的信息。
我从2步纱线应用程序写作中了解,需要编写纱线客户端以及纱线应用程序主。
-
应用程序客户端确定要以应用程序主的运行:
// Construct the command to be executed on the launched container String command = "${JAVA_HOME}" + /bin/java" + " MyAppMaster" + " arg1 arg2 arg3" + ...
其中
MyAppMaster
是特定于应用程序的主类。 -
第二件事是在容器中运行的任务,请注意应用程序Master运行容器(运行实际任务执行者(的命令类型:
// Set the necessary command to execute on the allocated container String command = "/bin/sh ./MyExecShell.sh";
您可以看到,这些是对任务的了解(或使用问题单词的应用程序类型(的代码。在同一页面上,您可以看到如何将应用程序提交给纱线。
现在将其放在Spark:Spark拥有自己的应用程序主类(在此处检查或整个软件包(。这些框架与YARN提供内置集成,因为它们只是Spark支持的资源经理之一。
,该框架提供了内置的集成。 。如果您要编写自己的纱线客户端,例如执行Python代码,那么您必须按照YARN Application Client/Master Document步骤操作步骤,以便将YARN提供命令,配置,资源,资源,以及用于执行您应用程序的特定逻辑或任务的环境。