请详细描述 YARN 提交程序的流程。
YARN(Yet Another Resource Negotiator)是一个资源管理系统,用于管理集群中的计算资源。以下是在 YARN 中提交程序的详细流程:
首先是客户端准备阶段。用户编写好应用程序,这个程序可以是 MapReduce、Spark 或者其他基于 YARN 的计算框架的任务。程序会被打包成一个可执行的 JAR 文件或者其他合适的格式。同时,客户端需要配置好相关的运行参数,包括应用程序的名称、队列名称(用于资源分配优先级)、所需的资源量(如内存、CPU 核数)等。
接着是向 ResourceManager 提交应用。客户端通过 RPC(远程过程调用)向 YARN 的 ResourceManager 发送启动应用程序的请求。这个请求包含了应用程序的基本信息,如应用程序的 ID、用户信息、优先级等。ResourceManager 接收到请求后,会为这个应用程序分配一个唯一的应用程序 ID,并返回给客户端。
然后 ResourceManager 进行资源调度。ResourceManager 根据集群的资源使用情况和应用程序的请求,从可用的 NodeManager 节点中选择一个合适的节点来启动 ApplicationMaster。ApplicationMaster 是一个为特定应用程序管理资源和任务执行的进程。它负责和 ResourceMana