写在前面。本文并未具体描述YARN的使用细节,而是从YARN出现的背景、解决什么问题、怎么解决这些问题的角度出发,希望帮助已经使用YARN的、刚接触YARN的读者更好的了解YARN。
Hadoop
对于大数据的处理,Hadoop俨然已是业界认可、成熟的数据存储、处理框架。目前,Hadoop经历主要经历了两个版本。在Hadoop v2.0的版本中,YARN被引入,YARN的引入主要是解决了Hadoop v1.0中的一些问题(在下文中将主要探讨)。
YARN要解决什么问题?
在Hadoop v1.0的框架中,对数据的处理、资源调度主要依赖MapReduce完成,具体过程如下所示:
从以上图中,我们可以了解到Hadoop v1.0的数据处理方式。在小规模的数据处理过程中,这套方法没有太大问题。但是,在真实的场景中往往需要处理大量数据,这套方法便会遇到以下问题:
由于大量的数据处理Job提交给Job Tracker,且Job Tracker需要协调的Data Node可能有数千台,Job Tracker极易成为整个系统的性能、可用的瓶颈。
无法有效地调配资源,导致资源分配不均。如以下例子,假设有3台Data Node(DN),每个DN的内存为4GB。用户提交了6个Job,每个Job需要1GB内存进行处理,且数据均在DN#2上。由于DN#2只有4GB内存,所以Job#1-4在DN#2上运行,Job#5和#6则在排队等待。但是,此时DN#1和#3均在闲置的状态下,而未能有效的被利用。
- 只能接受MapReduce的方式,且技术栈仅为Java。
YARN的解决方案
基于上述问题,Hadoop在2.0版本上推出了YARN (Yet Another Resource Negotiator)。YARN的核心思想是将资源管理和Job的调度/监控进行分离。YARN的架构如下图所示。
YARN的核心组件可以分为两大部分:
-
全局组件
- Resource Manager: 作为全局统一的资源管理、调度、分配。Resource Manager由Scheduler和Applicatio Manager组成。Scheduler根据节点的容量、队列情况,为Application分配资源;Application Manager接受用户提交的请求,在节点中启动Application Master,并监控Application Master的状态、进行必要的重启。
- Node Manager: 在每一个节点上都有一个Node Manager作为代理监控节点的资源使用情况(cpu, memory, disk, network)并向Resource Manager上报节点状态。
-
Per-applicaiton组件
- Application Master: 负责数据处理job的执行调度。Application Master与Resource Manager进行沟通,获取资源进行计算。得到资源后,与节点上的Node Manager进行沟通,在分配的Container汇总执行任务,并监控任务执行的情况。
- Container: 资源的一种抽象方式,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当Application Master向Resource Manager申请资源时,Resource Manager为Application Master返回的资源便是Container。
当YARN接受用户提交的Job时,其工作过程为:
YARN通过以下方式,解决了上述问题。
通过Application Master来解决Job Tracker的瓶颈问题。每当新的job提交进来后,Resource Manager会在恰当的节点启动一个新的Application Master,从而避免在Hadoop v1.0中Job Tracker成为性能瓶颈的尴尬。
更有效的进行资源的调度。Resource Manager可以为Application Master分配空余的资源,帮忙Application Master完成任务。
支持MapReduce以外的数据处理方式,例如:Spark等。
YARN的一些问题
即便Hadoop v2.0应用来YARN的设计思路,也仍有一个难题:当大量的job提交、用尽所有计算资源后,新的job要等待很久才能被处理,即便新的job是非常重要的任务,也只能等待。在YARN中,通过scheduler plugin(例如:FIFO Scheduler、Fair Scheduler、Capacity Scheduler)的方式,配置不同的资源调度规则,来尽量缓解该问题,让重要的job可以优先获得资源调配。
Reference
- Apache Hadoop YARN - https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
- Yarn Tutorial for Beginners - https://www.youtube.com/watch?v=nmaA5_d4E8c&t=0s&list=LL91Ldd6Q_h4q8D04sWs5Qpw&index=4
- Hadoop 新 MapReduce 框架 Yarn 详解 - https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/
- Getting Started with Hadoop 2.0 - http://www.tomsitpro.com/articles/hadoop-2-vs-1,2-718.html
- Hadoop Tutorial - The YARN - https://www.youtube.com/watch?v=DMHf_xiSSgA
pstrike 2018.08.31 于深圳
【尊重版权:转载之前请先联系我】