Hadoop YARN 架构详解

2019-11-17  本文已影响0人  Michaelhbjian

通过对Hadoop1.0和2.0的架构对比,引出了YARN作为资源调度和管理器的作用。

1、YARN产生的背景

YARN是MRv1基础上演化而来的,克服了MRv1中的各种局限性。在正式的介绍YARN之前,我们先要了解MRv1的一些局限性,这可概括为以下几个方面:

2、什么是YARN?

YARN实际上是一个弹性计算平台,它的目标已经不再局限于支持MapReduce一种计算框架了,而是朝着对多种框架进行统一管理的方向发展。YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序。 拥有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。 应用程序可以是单个作业,也可以是作业的DAG。

image-20191117175429041 image-20191117175447804

3、YARN的作用是什么?

3.1、Hadoop v1.0的方式

在Hadoop v1.0的框架中,对数据的处理、资源调度主要依赖MapReduce完成,具体过程如下所示:

image-20191117175531487

从以上图中,我们可以了解到Hadoop v1.0的数据处理方式。在小规模的数据处理过程中,这套方法没有太大问题。但是,在真实的场景中往往需要处理大量数据,这套方法便会遇到以下问题:

image-20191117175553600

3.2、YARN的方式

基于上述问题,Hadoop在2.0版本上推出了YARN (Yet Another Resource Negotiator)。YARN的核心思想是将资源管理和Job的调度/监控进行分离。YARN的架构如下图所示。

image-20191117175612400 image-20191117175634723

YARN的核心组件可以分为两大部分:

全局组件

Per-applicaiton组件

当YARN接受用户提交的Job时,其工作过程为:

image-20191117175658829

YARN通过以下方式,解决了上述问题。

4、YARN和其他的资源管理器的对比

即便Hadoop v2.0应用来YARN的设计思路,也仍有一个难题:当大量的job提交、用尽所有计算资源后,新的job要等待很久才能被处理,即便新的job是非常重要的任务,也只能等待。在YARN中,通过scheduler plugin(例如:FIFO SchedulerFair SchedulerCapacity Scheduler)的方式,配置不同的资源调度规则,来尽量缓解该问题,让重要的job可以优先获得资源调配。

5、参考资料

https://www.jianshu.com/p/952d59b7cbe7

https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

上一篇 下一篇

猜你喜欢

热点阅读