• YARN


    YARN

    概述:
    是hadoop2.x版本引入的资源管理系统
    直接从MR1演化而来
    新的hadoop资源管理器,通用的资源管理器
    可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率,资源统一管理和数据共享等方面带来了巨大的好处
    核心思想:
    将MapReduce1中的JobTracker的资源管理和作业调度两个功能分开,分别由
    ResourceManager和ApplicationMaster进程来实现
    ResourceManager:负责整个集群的资源管理和调度
    ApplicationMaster:负责应用程序相关的事务,比如任务调度,任务监控和容错等

    YARN的出现可以使得多个计算框架运行在一个集群当中
    每个应用程序对应一个ApplicatonMaster
    目前可以支持多种计算框架运行在YARN上,比如MapReduce,Strom,Spark,Flink,


    YARN与MapReduce关系:


    YARN是一个资源管理系统,负责资源管理和调度
    MapReduce只是运行在YARN上的一个应用程序
    如果把YARN看作androd,则mapreduce只是一个app
    mapreduce1.0是一个独立系统,直接运行在linux上
    mapreduce2.0则是运行在YARN上的框架,且可以与多种框架一起运行在YARN上

     

    YARN 系统架构:

    ResourceManager
    负责集群中所有资源的统一管理和分配,它接受来自各个节点的NodeManager的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序,是整个YARN集群中最重要的组件之一,他的设计直接决定了系统的可扩展性,可用性和容错性,它的功能较多,包括ApplicationMaster管理,NodeManager管理,Application管理,状态机管理等


    主要有以下几个功能:
    1.与客户端交互,处理来自客户端的请求
    2.启动和管理ApplicationMaster,
    并且在它失败时重新启动它
    3.管理NodeManager,接受来自NodeManager的资源汇报信息,下达管理指令
    4.资源管理和调度,接受来自ApplicationMaster的资源申请请求并向让NodeManager为之分配资源

     


    Nodemanager
    是运行在单个节点上的代理,管理hadoop集群中单个计算节点,他需要与相应用程序的ApplicationMaster和集群管理者ResourceManager交互
    1.从ApplicationMaster上接收有关Contioner的命令并执行
    2.向ResourceManager汇报各个container运行状态和节点健康状况,并领取有关的Container的命令并执行


    ApplicationMaster
    与应用程序相关的组件
    1.负责数据切分,把每份数据分配给对应的Map Task
    2.为应用程序申请资源并进一步分配给内部的任务。比如从ResourceManager获取分配的资源,然后分配给Task任务
    3.任务的监控与容错。一旦一个任务挂掉之后,他可以重新向ResourceManager申请资源


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

     

    MapReduce on YARN

    运行在YARN上的应用程序分为两类:短应用程序和长应用程序
    短应用程序:是指在一定时间内可以运行完成并正常退出的应用程序,不如MapReduce作业 离线计算
    长应用程序:
    是指不出意外,永不停止的应用程序,通常是一些服务
    比如Strom Service(主要包括Nimbus和Supervisor两类服务)
    HBase Service(包括Hmaste:和RegionServer两类服务)等,而他们本身作为一个框架提供了编程接口供用户使用 spark 实时计算
    当用户向YARN中提交一个应用程序后,YARN将分为两个阶段运行该应用程序:
    第一个阶段是启动ApplicationMaster
    第二个阶段是由ApplicationMater创建应用程序,,为它申请资源,并监控它的整个运行过程,直到运行完成

    YARN 高可用:

    yarn里面的zkfc和ResourceManager是在一块的 不同于HDFS

    MasterHADaemon:与Master服务运行在同一个进程中,可以接收外部RPC命令,以控制Master服务的启动和停止

    SharedStorage共享存储系统,Active Master将信息写入共享存储系统,而Standby Master则读取该信息以保持与Active Master的同步

    ZKFailoverController:基于Zookeeper实现的切换控制器,主要由ActiveStandbyElector和HealthMonitor两个核心组件构成。
    ActiveStandbyElector:负责与Zookeeper集群交互通过尝试获取全局锁,以判断所管理的Master是进入Active还是进入Standby状态
    HealthMonitor:监控各个活动Master的状态,以根据他们的状态进行状态切换
    Zookeeper:核心功能是通过维护一把全局锁控制整个集群有且仅有一个Active Master。当然,如果Sharedstorge采用了Zookeeper,则还会记录一些其他状态和运行时信息。

     

  • 相关阅读:
    python学习之函数基础
    Java并发编程之支持并发的list集合你知道吗
    Java并发编程之CAS第三篇-CAS的缺点及解决办法
    Java并发编程之CAS二源码追根溯源
    Java并发编程之CAS第一篇-什么是CAS
    Java并发编程之验证volatile指令重排-理论篇
    【免费百度网盘不限速】爱奇艺万能联播 百度网盘不限速的方法
    Java并发编程之验证volatile不能保证原子性
    Java并发编程之验证volatile的可见性
    Java并发编程学习前期知识下篇
  • 原文地址:https://www.cnblogs.com/libin123/p/10330226.html
Copyright © 2020-2023  润新知