美文网首页
分布式资源管理系统:YARN

分布式资源管理系统:YARN

作者: 曹振华 | 来源:发表于2016-12-29 08:28 被阅读1112次

    一 产生背景

    运维成本:
       如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群;进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架的统一管理。
    数据共享:
       随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。
    MR v1版本的缺陷:
       扩展性受限制,单点故障,不支持其他分布式计算框架.

    二 YARN 的由来

    Yet Another Resource Negotiagor:又一个计算框架
    Hadoop2.x 中发布
    它是统一的集群资源管理框架,用来负责集群的管理和调度.


    Paste_Image.png

    三 YARN基本框架

    Paste_Image.png
    • Resource Manager
      整个集群只有一个,负责集群资源的统一管理和调度:
      详细功能:

      • 处理客户端请求
      • 启动/监控ApplicationMaster
      • 监控NodeManager
      • 资源分配与调度
    • Node Manager
      每个节点只有一个,负责资源的管理和使用
      详细功能:

      • 单个节点上的资源管理和任务管理
      • 处理来自ResourceManager的命令
      • 处理来自ApplicationMaster的命令
    • ApplicationMaster
      每个应用程序只有一个,负责应用程序的管理和任务调度
      详细功能:

      • 数据切分
      • 为应用程序申请资源,进一步分配给内部任务
      • 任务监控和容错
    • Container
      对任务运行环境的抽象
      描述一系列信息:

      • 任务运行资源(节点,cpu,内存)
      • 任务启动命令
      • 任务运行环境

    四. YARN运行过程剖析

    Paste_Image.png
    • YARN 容错性

      • Resource Manager
        基于zookeeper实现HA(HADOOP2.6+)
      • Node Manager
        失败后,RM将失败以后任务告诉对于AM
        AM 决定如何处理失败任务.
      • Application Master
        失败后,由RM负责重启。
        AM需处理内部任务的容错问题。
        hadoop已经实现了内部容错,spark的话就需要重头开始跑.
        RMAppMaster会保存已经运行完成的task,重启后无需重新运行.
    • YARN 调度框架

      • 双层调度框架
        RM将资源分配给AM
        AM将资源进一步分配给Task
      • 基于资源预留的调度策略
        资源不够时,会为Task预留,直到资源充足。
    Paste_Image.png
    • YARN资源调度器

      • 多类型资源调度
        支持cpu,内存调度
      • 提供多种资源调度器
        FIFO
        Fair Scheduler
        Capacity Scheduler
      • 多租户资源调度器
        支持资源按照比例分配
        支持层级队列划分方式
        支持资源抢占
    • YARN 资源隔离方案

      • 支持内存和cpu两种资源隔离
        内存是一种“决定生死”的资源
        CPU是一种“影响快慢”的资源
      • 内存隔离
        基于线程监控方案
        基于Cgroups方案
      • CPU隔离
        默认不对cpu资源进行隔离
        基于Cgroups隔离方案

    五. YARN资源调度过程

    Paste_Image.png
    • 调度方法:

      • FIFO

        • 将所有应用程序放到一个队列中
        • 队列前面的程序优先获得资源
        • 局限性明显
          资源利用率不高,无法交叉运行作业
          不够灵活,比如紧急作业无法插队
      • 多队列组织方式

        • 将所有应用程序放到多个队列
        • 每个队列可单独实现调度策略
        • 每个队列对应一定比如的调度资源
          优势明显:
          • 按队列组织资源和用户,符合生产需求
          • 不同队列的资源分配策略不同,更加灵活
            两种多队列调度器: Fair, Capacity
      • Capacity Scheduler

        • 由Yahoo开源,共享资源调度器
        • 每个队列内部采用FIFO调度策略
        • 每个队列分配一定比例资源
        • 可限制每个用户的资源使用量
    Paste_Image.png
    • Fair Scheduler
      • 由Facebook开源共享集群调度器
      • 以队列方式组织作业
      • 基于最小资源量与公平共享量进行调度
      • 作业优先级越高,分配的资源越多
    Paste_Image.png
    • 基于标签的调度机制

      • YARN 基于标签的调度
        • 基于hadoop2.6.0开始,提供基于标签的调度策略
        • 常用于异构集群(操作系统不同,安装的版本不同,硬件不同)
      • 思路
        • 将一些高配机器打上highmemory/highdisk标签,并结合队列配置(比如reporting队列) 使之生效。
        • 将所有mapreduce程序提交到reporing队列中
          hadoop jar ***.jar -Dmapreduce.job.queuename=reporing...
    • 基于标签调度机制:原理

    Paste_Image.png Paste_Image.png

    六. 运行在YARN上的计算框架

    • 运行在YARN上的计算框架

      • 离线计算框架 MapReduce
      • DAG计算框架: Tez
      • 流式计算框架: Storm
      • 内存计算框架: Spark
    • MapReduce on YARN

    Paste_Image.png
    • DAG 计算框架 Tez
    Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png
    • 流式计算框架 Storm
    Paste_Image.png Paste_Image.png Paste_Image.png
    • Spark on YARN
    Paste_Image.png

    七. 日志分析系统架构

    Paste_Image.png
    • 资源管理模块

      • 资源划分
        启用 Capacity Scheduler
        划分多个队列,每个队列设置一定比例资源,每个队列交由一类应用
      • 资源隔离
        启用cgroup资源隔离(linux 内核版本3.19上)
      • 异构集群
        根据机器硬件资源不同,打上不同类型的标签
        不同队列关联不同的机器(标签)
    • 资源划分

    Paste_Image.png
    • 资源划分方法


      Paste_Image.png
    • 资源隔离配置方法

    Paste_Image.png
    • 节点标签
    Paste_Image.png
    • 标签调度,启用步骤
    Paste_Image.png
    • Yarn 配置
    Paste_Image.png Paste_Image.png Paste_Image.png

    相关文章

      网友评论

          本文标题:分布式资源管理系统:YARN

          本文链接:https://www.haomeiwen.com/subject/vepuvttx.html