zoukankan      html  css  js  c++  java
  • YARN学习总结之架构

    一、yarn产生背景

    1) 源于MRv1的缺陷:扩展性受限、单点故障、难以支持MR之外的计算框架;

    2) 多计算框架各自为战,数据共享困难,资源利用率低;

      MR: 离线计算框架
      Storm:实时计算框架
      Spark:内存计算框架

    催生了YARN的产生

    二、yarn架构

    1、ResourceManager:RM

        RM是一个全局的资源管理器,集群只有一个(通常生产上会做高可用,有一主一备两个RM),负责整个系统的资源管理和分配,包括处理客户端请求、启动/监控ApplicationMaster、监控nodemanager、资源的分配与调度。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。

    2、NodeManager:NM

        整个集群中有多个,负责自己本身节点的资源管理和使用

        定时向RM汇报本身节点的资源使用情况

        接收并处理来自RM的各种命令:例如启动Container。Nodemanager管理着抽象容器,这些抽象容器代表着一些特定程序使用针对每个节点的资源。Nodemanager定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态(cpu和内存等资源)

        处理来自AM的命令

        单个节点的资源管理

    3、ApplicationMaster:AM

       管理YARN内运行的应用程序的每个实例。

       每个应用程序对应一个:例如MR、Spark;负责应用程序的管理,为应用程序向RM申请资源(如core,memory 等)分配给task

       需要跟NM通信:启动/停止task。Task和AM都是运行在container里面。

    4、Container

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

    三、YARN的执行流程:

    1、用户向YARN中提交应用程序,其中包括ApplicationMaster(AM)程序,启动AM的命令,用户程序等。
    2、ResourceManger(RM)为该程序分配第一个Container,并与对应的NodeManger通讯,要求它在这个Container
    中启动应用程序AM。
    3、AM首先向RM注册,这样用户可以直接通过RM查看应用程序的运行状态,然后将为各个任务申请资源,并监控
    它的运行状态,直到运行结束,重复4--7的步骤。
    4、AM采用轮询的方式通过RPC协议向RM申请和领取资源。
    5、一旦AM申请到资源后,便与对应的NM通讯,要求它启动任务。
    6、NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过
    运行该脚本启动任务。
    7、各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务
    失败的时候重新启动任务。
    8、应用程序运行完成后,AM向RM注销并关闭自己。

  • 相关阅读:
    js 数组,字符串,json互相转换
    数据库相关概念
    信号量,Event, 定时器
    解决Navicat远程连接mysql很慢的方法
    Ubuntu安装mycli,让mysql命令行可以自动提示
    Requests模块调用接口
    selenium chrome浏览器对应chrome版本
    selenium 元素定位+显示等待 方法封装
    smtplib 发送文本文件和附件文件 的类方法封装
    python 数据库的方法封装
  • 原文地址:https://www.cnblogs.com/jnba/p/10550404.html
Copyright © 2011-2022 走看看