Yarn 概念

  • 简介
  • 重要概念
  • 执行过程
  • YARN的高可用

简介

Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序

重要概念

  1. yarn 并不清楚用户提交的程序的运行机制
  2. yarn 只提供运算资源的调度(用户向 yarn 申请资源,yarn 就负责分配资源)
  3. yarn 中的主管角色叫 ResourceManager
  4. yarn 中具体提供运算资源的角色叫 NodeManager
  5. yarn 于运行用户程序完全解耦,意味着 yarn 上可以运行各种类型的分布式运算程序(MapReduce 只是其中一种)
  6. spark 等运算框架都可以整合在 yarn 上运行,只要他们各自的框架中有符合 yarn 规范的资源请求机制即可

执行过程

  1. 客户端通过 YarnRunner 向 RM 提交 job 任务。申请运行一个 MR 程序,RM 返回一个 job id,资源提交路径
  2. 客户端提交 MR 相关的资源文件:job.xml,job.jar,job.split,job.splitmateinfo
  3. 客户端通知 RM 资源提交完毕,RM 初始化任务创建一个 Container,RM 随机在一台 NM 上启动一个 MRAppMaster,MRAppMaster 向 RM 申请资源分配容器(CPU,RAM,job 等资源)
  4. 在 NM 上启动 MapTask,Task 在执行的时候会向 MRAppMaster 汇报进度和状态,MRAppMaster 会向 RM 注册,用户可以通过 RM 查看当前作业的状态
  5. MRAppMaster 会向 RM 为各个任务申请资源,并监控状态直到任务完成
  6. MRAppMaster 等待所有 MapTask 执行完毕,再启动 ReduceTask
  7. 所有任务完成后,MRAppMaster 通知 RM 回收资源

yarn

YARN的高可用

ResourceManager:基于 Zookeeper 实现高可用机制,避免单节点故障

NodeManager:执行失败后,ResourceManager 将失败任务告诉对应的 ApplicationMaster,由 ApplicationMaster 来决定如何处理失败的任务

ApplicationMaster:执行失败后,由 ResourceManager 负责重启;ApplicationMaster 需处理内部的容错问题,并保存已经运行完成的 Task,重启后无需重新运行

坚持原创技术分享,您的支持将鼓励我继续创作!