yarn 基本知识

本文大部分内容来自论文《Apache Hadoop YARN :Yet  Another Resource Negotiator》及官网。

YARN主要解决以下10个问题:

【R1】:Scalability

【R2】:Multi-tenancy

【R3】:Serviceability

【R4】:Locality awareness

【R5】:High Cluster Utilization

【R6】:Reliability / Availability

【R7】:Secure and auditable operation

【R8】:Support  for Programming Model Diversity

【R9】:Flexible  Resource Model

【R10】:Backward compatibility


yarn的架构:




yarn 基本知识_第1张图片

yarn 基本知识_第2张图片

RM :运行在一台专用的机器上,他对集群的资源使用起到调度作用。自带的调度器有 Capacity 、Fairshare、FIFO 调度器。通过heartbeat与NM进行通信
           作业通过开放的提交协议被提交到到RM,通过安全机制的检查,进入调度器进行调度;一旦调度器获得了足够的资源,就会将任务调度出去,application的状态会从  
           accepted置成running。
           RM 对外暴露了两个接口:
                                         1)、客户端提交application
                                          2)、AM请求资源,监控NM的资源,以及集群的监控

           RM 对 AM 的回应中,RM 生成container以及允许访问该资源的令牌

           当有新的机器加入集群中,RM 也会通知 AM ,因此让AM 对该机器的资源进行请求

           RM  对资源的调度尽量会依照数据本地化计算的,RM 调度有一个delay策略,在等待一定的时间,如果没有等到合适的资源,RM 会让 NM 强制的终止container

           需要明确一下,RM不负责哪些工作:
                            RM 不负责协调application的执行,不负责task的容错
                            不负责监控application的状态和统计信息,不负责已经完成的jobs的具体的报告

Application Master(AM): 主要作业是管理作业的运行。为了启动container,AM向RM请求资源,请求的形式包括所需container的位置和性能参数。
                                                  一旦一个资源被分配给某个AM,RM会给该资源设置一个租约;
                                                 如果需要,正在运行的container可以通过 application-specific protocol 直接与AM进行通信,报道状态,接收framework-specific commands。
                                               
             AM 将他们对资源的需求以以下形式给出:
                                        1)、container的数量
                                        2)、每个container所需的资源(2GB RAM,1 CPU)
                                        3)、位置选项
                                        4)、该请求在该application的优先级

             AM 也是运行在一个container中,他会定时的给RM 发送心跳以确认他还存活着。
            AM  在对作业进行调度的时候,如果AM 决定在某个container中运行一个map 任务 mi,那么将会减少对 存储mi任务所需数据的副本的 host 机器的请求需要。

Container : container是资源的抽象,比如一个container包含 (2GB 内存、1CPU)

NM :NM的作用是监控资源是否可用,报告异常,以及container的生命周期
                  NM 会对container进行授权,管理 container 的依赖,监控他们的执行,并未container提供多种服务。





你可能感兴趣的:(yarn 基本知识)