YARN架构[官网整理]

【MapReduce Yarn架构(2.2+)】

    Mapreduce经过hadoop-0.23的修正之后,有了新的框架Mapreduce 2.0(MRv2),或者成为YARN。

    MRv2的基本思想就是将JobTracker的两个功能拆分成resourceManager和job Scheduling/monitoring两个独立的守护进程。这个思想是有一个全局的ResourceManager(RM)和每个应用(application)一个ApllicationMaster(AM)。application可以是一个传统意义上的mapreduce的job或者jobs的DAG(多个job形成的有向关系图)。

    ResourceManager和多个称为NodeManagers的slave最终构成了YARN的计算框架。ResourceManager是一个最终的仲裁者,用来管理系统的所有applications。

    per-application ApplicationMasger事实上是框架的特定的library,主要用来与ResourceManager协商资源(jobs)并任务化,将这些资源将在NodeManager上运行,然后跟踪tasks



 

    ResourceManager有两个主要的组件:Scheduler和ApplicationManager。

    Scheduler负责将资源(resources)分配给正在运行的applications,它们(applications)受到capacities或者queues等的限制。Scheduler是意义纯粹的Scheduler,它不运行任何monitoring或者tracking应用的状态。此外,当application失效时,它不提供重启失效tasks的担保。Scheduler根据applicaton对资源的需求来运行它的调度功能;它基于一个抽象的概念“Resource Containner”来实现(资源调度),其中“Resource Container”有“内存”、“磁盘”、“CPU”、“networker”等组成(resource),目前只支持“menory”。

    Scheduler有一个可插拔的策略插件,它的职责是将集群的资源在多个queues、applications间划分,当前的MapReducer Scheduler有CapacityScheduler、FairScheduler。

    The CapacityScheduler supports hierarchical queues to allow for more predictable sharing of cluster resources.[CapacityScheduler支持多级queue,以允许更多可预测的集群资源共享]

    ApplicationManager的职责是接受来自Client端的job-submissions,为每个Application(job)创建一个Container来运行ApplicationMaster,然后提供一个服务,当ApplicationMasters失效时重启它们。

    NodeManager是运行在每个机器上的agent,它的职责就是为application(的task,每个application有AM拆分为多个tasks)创建containers,监控它们的资源使用情况,并把他们的情况报告给ResouceManager/Scheduler。(Scheduler知道每个NodeManager上的资源分配情况后,就可以动态的为后续的application分配资源。)

    per-application ApplicationMaster的职责为从Scheduler中协调获取“Resource Containers”,跟踪它们的状态以及监控它们的进度。

    MRv2兼容旧版本,这意味着不需要修改mapreduce程序急需要重新编译(使用新API),即可运行。

猜你喜欢

转载自shift-alt-ctrl.iteye.com/blog/2105587
今日推荐