Hadoop(三)YARN

Yet Another Resources Negotiatornode

从Hadoop2.0版本开始引入YARN,主要功能:网络

  • 集群资源管理系统
  • 负责集群的统一管理和调度
  • 与客户端交互,处理客户端请求

 

1、基本架构

 

Master/Slave架构架构

资源管理和节点管理器组成app

集群的机器启动nodemanager进程,通常与HDFS的datanode一一对应oop

resourcemanager负责机器资源的统一调度,通常不和nodemanager共同运行于一个节点,nodemanager负责节点资源的监控和管理,其所在节点上的资源状况和运行的任务的状态都会经过nodemanager向resourcemanager进行反馈,这种反馈是经过心跳的方式反馈,周期性汇报blog

resourcemanager负责接收客户端提交的做业请求,是一些计算任务,并非上传文件,上传文件是上传到namenode进程

接收到这些任务后,会调度这些任务在集群中运行,在YARN中真正执行任务的是container,container是cpu和内存等计算资源抽象的容器,真实的任务是运行在container中的内存

resourcemanager调度一个任务的时候首先会和nodemanager进行通讯,要求nodemanager启动一个container,container会根据运行的程序封装须要的内存、cpu和网络等资源资源

启动完container,针对程序还会启动applicationmaster,每一个程序都有程序管理器,负责具体任务的资源申请、任务调度和监控。向resourcemanager申请资源,申请到后与nodemanager进行通讯,要求nodemanager启动container执行具体任务io

任务执行过程当中不断与applicationmaster进行通讯,汇报任务执行状况和状态、

客户端经过resourcemanager得到applicationmaster的链接信息,与applicatinomaster创建链接,不断与applicationmaster进行通讯,获取任务最新的进度信息,直到任务结束,释放占用的资源,container关闭

通常两个resourcemanager,一个active一个standby

 

2、核心组件

1.ResourceManager

只有一个

功能:

  • 处理客户端请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager健康状态
  • 资源分配和调度

2.NodeManager

在mastermanager以外启动NodeManager,通常与DataNode一一对应

功能:

  • 单个节点上的资源监控和管理
  • 定时向ResourceManager汇报本机的资源使用状况
  • 处理来自ResourceManager的请求,为做业的执行分配Container
  • 处理来自ApplicationMaster的请求,启动和中止Container

 

3.ApplicationMaster

每一个应用程序只有一个,负责应用程序的管理,资源申请和任务调度

功能:

  • 与ResourceManager协商为应用程序申请资源
  • 与NodeManager通讯启动/中止任务
  • 监控任务运行状态和失败处理

 

4.Container

任务运行环境的抽象,只有在分配任务的时候才会抽象出一个container

功能:

  • 任务运行资源(节点、内存、CPU)
  • 任务启动命令
  • 任务运行环境

 

3、YARN容错

ResourceManager

  • 基于zookeeper实现高可用 启动多个ResourceManager

NodeManager

  • NodeManager故障将致使运行在该节点的任务失败,任务失败后,ResourceManager将失败任务通知对应的ApplicationMaster
  • ApplicationMaster决定如何处理失败的任务

ApplicationMaster

  • ApplictationMaster失败后,由ResourceManager负责重启

 

4、运行流程

 

 

1.客户端向ResourceManager发送提交做业的请求,收到请求后向客户端返回做业ID

2.ResourceManager会找其中的一个nodemanager向它发送请求来分配container,nodemanager启动container,在container中启动一个ApplicatinMaster,ResourceManager会监控这个ApplicationMaster运行状态

ApplicationMaster启动后会计算其负责的做业须要多少个map,多少个reduce,运行这些任务须要多少cpu,多少内存

3.ApplicationMaster向ResourceManager注册,注册成功后开始申请做业运行须要的资源,当resourcemanager将资源分配给ApplicationMaster以后,ApplicationMaster接收到这些资源,信息当中包含这些资源是由哪些nodemanager提供的,

4.ApplicationMaster会和对应的NodeManager进行通讯,给nodemanager分配container,要求nodemanager启动container并启动对应的任务

运行在container中的任务会向ApplicatinoMaster运行状态和进度

在运行过程中,客户端经过ResourceManager获取到ApplicationMaster通讯地址,客户端与ApplicationMaster进行通讯,周期性的获取到做业运行的状态,由于做业在运行中会周期性向ApplicationMaster进行汇报状态和进度

任务都完成以后,做业就结束了AM会像RM注销,释放掉占用的资源

相关文章
相关标签/搜索