• MapReduce On Yarn的执行流程


     

     

    1、概述

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

     Yarn的架构如下图所示:

      

     从Yarn的架构图来看,他主要由ResourceManager、NodeManager、ApplicationMaster和Container等一下几个组件构成。

     1)ResourceManager  

       Yarn分层结构的本质是ResourceManager,这个实体控制整个集群并管理应用程序向基础计算资源的分配。Resourcemanager将各个资源(计算,内存,带宽等)精心安排给基础NodeManager。ResourceManager还与ApplicationMaster一起分配资源,与NodeManager一起启动和监视他们的基础应用程序。

      总的来说,RM有以下功能:

      (1)处理客户端的请求

      (2)启动和监控ApplicationMaster

      (3)监控NodeManager

      (4)资源分配与调度

       2)ApplicationMaster

     ApplicationMaster管理在Yarn内运行的每个应用程序。负责协调来自RM的资源,并通过NodeManager监控容器的执行和资源的使用(CPU、内存等的资源分配)。总体来说,AM有以下作用

     (1)负责数据的切分

     (2)为应用程序申请资源并分配给内部的任务

     (3)任务的监控与容错

     3)NodeManager

      NodeManager管理Yarn集群中的每个节点,并提供针对集群每个节点的服务,从监督一个容器的终生管理到监视资源和跟踪节点健康。而NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。

     总体来说,NM有以下作用

     (1)管理单个节点上的资源

     (2)处理来自ResourceManager的命令

     (3)处理来自ApplicationMaster的命令

    4)、Container

      Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

       总的来说,Container有以下作用

    对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息

    2、Yarn的运行机制

      运行流程步骤为:

      (1)用户向Yarn提交应用程序(job  Application),jar文件,其中包裹着ApplicationMaster程序,启动ApplicationMaster的命令等

      (2)RM为该job分配第一个Container,并选中一个NodeManager在其上运行job的ApplicationMaster

      (3)ApplicationMaster向ApplicationsManager注册,这样就可以在RMWeb界面查询这个job的运行状态

      (4)ApplicationMaster采用轮询的方式通过RPC协议向RM申请和领取资源

      (5)一旦ApplicationMaster拿到资源,就与对应的NM通信,要求启动任务。

      (6)NodeManager为任务设置好运行环境(jar包等),将任务命令写在一个脚本里。并通过该脚本启动任务 task。

      (7)各个task通过rpc协议向ApplicationMaster汇报自己的状态和进度,以此让ApplicationMaster随时掌握各个task的运行状态。

      (8)ApplicationMaster向ApplicationsManger注销且关闭自己。

    总体来说,分为两步:

      1、启动ApplicationMaster,申请资源

      2、运行任务,直到任务运行完成。

  • 相关阅读:
    js练习-两个栈实现队列
    js练习- 给你一个对象,求有几层
    React Context上下文
    react-native StatusBar透明
    react-native-splash-screen 隐藏statusbar
    掘金转载-手写一个Promise
    multipart/form-data
    (转)浅谈测试驱动开发(TDD)
    Objective-C urlEncode urlDecode
    (转)在Xcode 7上直接使用Clang Address Sanitizer
  • 原文地址:https://www.cnblogs.com/zourui4271/p/12745436.html
Copyright © 2020-2023  润新知