【大数据分析】Yarn的工作流程

1、用户编写客户端程序,向 ResourceManager 提交程序,程序包括:ApplicationMaster、ApplicationMaster 的启动命令、用户程序等。
2、ResourceManager 负责接收和处理来自客户端的用户请求,收到请求后,ResourceManager 里面的 Resource Scheduler 会为应用程序分配一个 container,同时,ResourceManager 的 Applications Manager 会与 container 所在的 NodeManager 通信,为该应用程序在 container 中启动一个 ApplicationMaster
3、ApplicationMaster 被创建后会首先向 ResourceManager 注册,从而使得用户可以通过 ResourceManager 来直接查看应用程序的运行状态
4、ApplicationMaster 采用轮询的方式通过 RPC 通信向 ResourceManager 的 Resource Scheduler 申请资源。
5、ResourceManager 为提出申请的 ApplicationMaster 分配资源(以 “container” 的方式),ApplicationMaster 申请到资源后,就会与container 所在的 NodeManager 通信,要求启动任务。
6、当 ApplicationMatser 要求 container 启动任务前,NodeManager 会先设置好运行环境(包括环境变量、Jar包、二进制程度等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务。
7、各个任务通过 RPC 通信向 ApplicationMaster 汇报自己的状态和进度,让 ApplicationMaster 可以随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
8、应用程序运行完成后,ApplicationMaster 向 ResourceManager 的应用程序管理器注销并关闭自己,若 ApplicationMaster 失败,ResourceManager 中的 Application Manager 会检测到失败的情形,然后将其重新启动,直到所有的任务执行完毕。
【大数据分析】Yarn的工作流程_第1张图片

你可能感兴趣的:(Spark,大数据)