一、yarn运行机制
yarn是一种全新的 Hadoop资源管理器,他是一个通用资源管理平台和调度平台,可为上层应用提供统一的资源管理和调度,mapreduce等运算程序则相当于运行于操作紫铜上的应用程序,yarn为这些程序提供运算所需的资源内存、cpu()
- yarn并不清楚用户提交的程序的运行机制
- yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源)
- yarn中的主管角色叫resourceManager
- yarn具体提供运算资源的角色叫做NodeManager
- yarn与运行的用户程序完全解耦,意味着yarn上可以运行各种类型的分布式运算程序,比如mapruduce、storm、spark、
- spark、storm等原酸框架都可以整合在yarn上运行,只要他们各自的框架中符合yarn过饭的资源请求机制即可
- yarn主要包含三大模块 :ResourceMannger、nodemanager、applicationmaster
- ResourceMannager负责所有资源的监控,分配和管理 是一个全局的资源管理系统
- nodemanager负责每一个节点的维护,以心跳的方式向resourcemanager汇报我元试用情况(目前主要是内存和cpu的使用情况)rm只接受nm的资源汇报信息,对于具体的资源处理则交给nm自己处理
- applicationmaster负责每一个具体应用程序的调度和协调,与nm通信以启动和停止任务,监控所有的任务运行状态,并在任务失败的时候为其重新去申请资源以重启任务
- client向RM提交医用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。
- ResourceManager启动一个containe来运行applicationmaster
- 启动中的applicationmaster向resourcemanager祖册自己,启动成功后与rm保持心跳
- ApplicationMaster 向 ResourceManager 发送请求,申请相应数目的 container。
- ResourceManager 返回 ApplicationMaster 的申请的 containers 信息。申请成功的container,由 ApplicationMaster 进行初始化。container 的启动信息初始化后, AM与对应的 NodeManager 通信,要求 NM 启动 container。 AM 与 NM 保持心跳,从而对 NM
上运行的任务进行监控和管理。 - container 运行期间, ApplicationMaster 对 container 进行监控。 container 通过 RPC协议向对应的 AM 汇报自己的进度和状态等信息
- 应用运行期间, client 直接与 AM 通信获取应用的状态、进度更新等信息。
- 应用运行结束后, ApplicationMaster 向 ResourceManager 注销自己,并允许属于它的container 被收回。