标签:master 封装 抽象 环境 命令 alt 组件 基于 contain
Yet Another Resources Negotiator
从Hadoop2.0版本开始引入YARN,主要功能:
Master/Slave架构
资源管理和节点管理器组成
集群的机器启动nodemanager进程,一般与HDFS的datanode一一对应
resourcemanager负责机器资源的统一调度,一般不和nodemanager共同运行于一个节点,nodemanager负责节点资源的监控和管理,其所在节点上的资源情况和运行的任务的状态都会通过nodemanager向resourcemanager进行反馈,这种反馈是通过心跳的方式反馈,周期性汇报
resourcemanager负责接收客户端提交的作业请求,是一些计算任务,并不是上传文件,上传文件是上传到namenode
接收到这些任务后,会调度这些任务在集群中运行,在YARN中真正执行任务的是container,container是cpu和内存等计算资源抽象的容器,真实的任务是运行在container中的
resourcemanager调度一个任务的时候首先会和nodemanager进行通信,要求nodemanager启动一个container,container会根据运行的程序封装需要的内存、cpu和网络等资源
启动完container,针对程序还会启动applicationmaster,每个程序都有程序管理器,负责具体任务的资源申请、任务调度和监控。向resourcemanager申请资源,申请到后与nodemanager进行通信,要求nodemanager启动container执行具体任务
任务执行过程中不断与applicationmaster进行通信,汇报任务执行情况和状态、
客户端通过resourcemanager获得applicationmaster的连接信息,与applicatinomaster建立连接,不断与applicationmaster进行通信,获取任务最新的进度信息,直到任务结束,释放占用的资源,container关闭
一般两个resourcemanager,一个active一个standby
只有一个
功能:
在mastermanager之外启动NodeManager,一般与DataNode一一对应
功能:
每个应用程序只有一个,负责应用程序的管理,资源申请和任务调度
功能:
任务运行环境的抽象,只有在分配任务的时候才会抽象出一个container
功能:
ResourceManager
NodeManager
ApplicationMaster
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注销,释放掉占用的资源
标签:master 封装 抽象 环境 命令 alt 组件 基于 contain
原文地址:https://www.cnblogs.com/aidata/p/11568557.html