zoukankan      html  css  js  c++  java
  • 大数据 技术入门03

    YARN是资源管理系统,理论上支持多种资源,目前支持CPU和内存两种资源
     
    YARN产生背景
        直接源于MRv1在几个方面的缺陷
                扩展性受限
                单点故障
                难以支持MR之外的计算
        多计算框架各自为战,数据共享困难
                MR:离线计算框架
                Storm:实时计算框架
                Spark:内存计算框架
    YARN设计目标
        通用的统一资源管理系统
            同时运行长应用程序和短应用程序
        长应用程序
            通常情况下,永不停止运行的程序
            Service、HTTP Server等
        短应用程序
            短时间(秒级、分钟级、小时级)内会运行结束的程序
            MR job、Spark Job等
    YARN基本架构
     
    ResourceManager
    整个集群只有一个,负责集群资源的统一管理和调度
    详细功能
            处理客户端请求
            启动/监控ApplicationMaster
            监控NodeManager
            资源分配与调度
    NodeManager
    整个集群有多个,负责单节点资源管理和使用
    详细功能
            单个节点上的资源管理和任务管理
            处理来自ResourceManager的命令
            处理来自ApplicationMaster的命令
    ApplicationMaster
    每个应用有一个,负责应用程序的管理
    详细功能
            数据切分
            为应用程序申请资源,并进一步分配给内部任务
            任务监控与容错
    Container
    对任务运行环境的抽象
    描述一系列信息
            任务运行资源(节点、内存、CPU)
            任务启动命令
            任务运行环境
    YARN运行过程
     
    YARN容错性
    ResourceManager
            存在单点故障;
            正在基于ZooKeeper实现HA。
    NodeManager
            失败后,RM将失败任务告诉对应的AM;
            AM决定如何处理失败的任务。
    ApplicationMaster
            失败后,由RM负责重启;
            AM需处理内部任务的容错问题;
            RMAppMaster会保存已经运行完成的Task,重启后无需重新运行。
    YARN调度框架
        双层调度框架
            RM将资源分配给AM
            AM将资源进一步分配给各个Task
        基于资源预留的调度策略
            资源不够时,会为Task预留,直到资源充足
            与“all or nothing”策略不同(Apache Mesos)
    YARN资源调度器
        多类型资源调度
            采用DRF算法(论文:“Dominant Resource Fairness: Fair Allocation of Multiple Resource Types”)
            目前支持CPU和内存两种资源
        提供多种资源调度器
            FIFO
            Fair Scheduler
            Capacity Scheduler
        多租户资源调度器
            支持资源按比例分配
            支持层级队列划分方式
            支持资源抢占
     
    YARN资源隔离方案
        支持内存和CPU两种资源隔离
            内存是一种“决定生死”的资源
            CPU是一种“影响快慢”的资源
        内存隔离
            基于线程监控的方案
            基于Cgroups的方案
        CPU隔离
            默认不对CPU资源进行隔离
            基于Cgroups的方案
    YARN支持的调度语义
        支持的语义
            请求某个特定节点/机架上的特定资源量
            将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源
            请求归还某些资源
        不支持的语义
            请求任意节点/机架上的特定资源量
            请求一组或几组符合某种特质的资源
            超细粒度资源
            动态调整Container资源
     
    运行在YARN上的计算框架 (还有别的)
            离线计算框架:MapReduce
            DAG计算框架:Tez
            流式计算框架:Storm
            内存计算框架:Spark
     
    离线计算框架:MapReduce 
        仅适合离线批处理
            具有很好的容错性和扩展性
            适合简单的批处理任务
        缺点明显
            启动开销大、过多使用磁盘导致效率低下等
     
    DAG计算框架:Apache Tez 
        DAG计算:多个作业之间存在数据依赖关系,并形成一个依赖关系有向图( Directed Acyclic Graph ),该图的计算称为“DAG计算”
    和Mapreduce相比
    Tez应用场景
        直接编写应用程序
            Tez提供了一套通用编程接口
            适合编写有依赖关系的作业
        优化Pig、Hive等引擎
            下一代Hive:Stinger
            好处1:避免查询语句转换成过多的MapReduce作业后产生大量不必要的网络和磁盘IO
            好处2:更加智能的任务处理引擎
     
    流式计算框架:Storm
     
    Storm on YARN(和其他如mapreduce、tez、spartk等都不同,其他计算框架的client)
     
    内存计算框架:Spark
        已经形成了自己的生态系统

    原创不易,如果感觉不错,希望给个推荐!您的支持是我写作的最大动力!
    版权声明:
    作者:Ken
    企鹅交流群:790845561 791372870
    腾讯课堂直播:https://ke.qq.com/course/144677?flowToken=1003848
    如果你对生活感觉到了绝望,请不要气馁。因为这样只会让你更加绝望! 所谓的希望往往都是在绝望中萌发的,所以,请不要放弃希望!

  • 相关阅读:
    Dubbo支持的协议的详解
    db2 SQL6036N解决办法
    9-5 HTTP注解演示及注意事项讲解
    9-4 Feign之HTTP注解介绍
    9-3 Feign演示及Feign注解解析
    9-2 Feign环境准备
    9-1 Feign自我介绍
    8-30 Hystrix章节总结
    8-29 实战技巧:如何设置线程池
    8-28 Hystrix监控讲解与演示
  • 原文地址:https://www.cnblogs.com/wyfblog/p/9373068.html
Copyright © 2011-2022 走看看