Hadoop-YARN架构技术

YARN产生的背景:
     1)MapReduce1.x:单点故障,节点压力大不易扩展   ,只能运行mapreduce框架。

Hadoop-YARN架构技术_第1张图片     

Hadoop-YARN架构技术_第2张图片

2)集群集成复杂,资源利用率很低(各集群资源不能共享,各集群数据要相互移动)

     Hadoop-YARN架构技术_第3张图片

于是催生了YARN(各个集群的资源管理调度框架):支持不同的计算框架共享一个HDFS集群的数据,享受整体的资源调度,提高了集群资源利用率。

Hadoop-YARN架构技术_第4张图片

YARN概述:

    Yet Another Resource Negotiator

    通用的资源管理系统

     为上层应用提供统一的资源管理和调度

YARN的架构:

   Hadoop-YARN架构技术_第5张图片

     1)ResourceManager(RM):

               整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度处理客户端的请求:

               提交一个作业,杀死一个作业

               监控NodeManager,一旦某个NM挂了,那么该NM上运行的任务就会告诉各自任务

               的AM该如何处理。              

                Resourcemanager中有两个主要组件:Scheduler和 ApplicationsManager
                               ApplicationsMaster:检测状态和从调度中获取资源。
                               Scheduler:负责分配资源给正在运行的应用程序。

     2)NodeManager(NM):

                集群中有很多,负责自己本身节点资源管理和使用,定时向RM汇报本节点的资源使用情况

                接受并处理来自RM的各种命令:启动Container等。

                 处理来自AM的命令

                单个自己节点的管理

     3)ApplicationMaster(AM):

               每个应用程序(MR,Spark等)对应一个AM,负责应用程序的管理。为应用程序向

               RM申请资源(core,memory等),再分配给内部的task。

               需要与NM通信:启动或停止task。task运行在container里面,AM也是运行在里面

              (客户端提交一个任务被集群作为一个应用程序,一个应用程序会通过RM在某个NM上

                创建一个AM,但是该应用程序会被分解为很多task,分布在不同的NM上)

     4)Container:

              封装了CPU,Memory等资源的一个容器,是一个任务运行环境的抽象

     5)Client:

            提交任务作业,查看作业进度,杀死作业

YARN执行流程:

      Hadoop-YARN架构技术_第6张图片

大致流程:

(1) Client向 Resourcemanager提交任务。
(2) Reourcemanager分配创建 Container任务并告知 Nodemanage启动进程 MRAppMastere
(3) NodeManager接收指定任务并开辟空间启动 MRAppMaster
  (4)    Nodemanager完成任务之后会及时汇报给 Resourcemanager

(5) Mrappmaster 和 Resourcemanager 交互,获取运行任务所需要的资源
(6) MRAppmaster获取资源后和 Nodemanager进行通信,启动 MapTask或Reducetask进程
(7)任务正常运行、定时向 Mrappmaster汇报工作情况。

详细流程:

   1) Client提交ー个Job到 ResourceManager,进入ResourceManager中的Scheduler队列等待调度。
   2) ResourceManager根据 NodeManager汇报的资源情况( NodeManager会定时汇报资源和Container使用情况,

          请求一个合适的 NodeManager启动Container,并在该Container中启动运行 Applicalionmaster.
   3) ApplicationMaster启动后,住册到 ResourceManager上,以使Client可以查询到ApplicationMaster的信息,

         便于Client直接和 ApplicationMaster通信。
   4) ApplicationMaster根据Job划分的Task状况,向 ResurceManager协商申请Container资源。

   5) ResourceManager分配给 ApplicationMaster  Container资源后, ApplicationMaster根据 Container内描述

         的资源信息,向对应的 NodeManager请求启动 Container,
   6) NodeManager启动 Container并运行Task,各个Task在运行过程中向 ApplicationMaster汇报进度状态信息,

          同时 NodeManager也会定时向 ResourceManager汇报Container的使用情况。
   7)在Job执行过程中, Client可以和 ApplicationMaster通信,获取 Application相关的进度和状态信息。
   8)在Job完成后, ApplicationMaster通知 ResourceManager清除自己的相关信息,并释放 Container资源。

你可能感兴趣的:(Hadoop)