在弄清楚yarn是什么之前,先来看一下MRv1。

它的由编程模型+数据处理引擎(map/reduceTask)+运行时环境组成(JobTracker/TaskTracker)。其中JobTracker存在很多问题,如下:

1、JobTracker本身承担了调度和计算的任务,太累了

2、JobTracker是单点的,不好扩展不能支持其他计算框架,还有单点故障风险

3、资源是以槽位的方式来调度。粗粒度,不合理。比如提交了一个特别占用资源的任务,整个节点就被占用了。还有map阶段往往reduce槽位就是闲置,反之也是这样。

针对以上问题,MRv2做了以下优化:

1、拆分为资源调度和作业管理两个独立的服务。

2、可以部署集群,可以在yarn上运行其他框架(比如内存计算、流式计算)

3、资源的管理方式是Container,他是一组硬件资源(内存、cpu)等的集合。控制的更细粒度。

这样,新版MRv2,的组成为:编程模型+数据处理引擎(map/reduceTask)+运行时环境组成(yarn),前两者基本实现原理不变。

yarn的概念呼之欲出:

YARN 是Hadoop 2.0 中的资源管理系统,它是一个通用的资源管理模块,可为各类应
用程序进行资源管理和调度。

1、管理系统资源(ResourceManager)

2、管理作业(监控、容错)(ApplicationMaster)

YARN 不仅限于MapReduce 一种框架使用,也可以供其他框架使用。

yarn都包含哪些基本模块呢?

1、ResourceManager(RM) 全局资源管理器。负责资源的管理和分配。

2、ApplicationMaster(AM)应用程序主管,每一个作业对应一个。协调资源,分配任务,与NM通信启动任务,监控任务等。

3、NodeManager(NM)各个节点上的资源管理器。它有两个作用,监控本机资源使用情况汇报到RM;接收来自AM的Container启动/停止等指令

4、Container逻辑意义上的资源隔离机制。

其中,RM有两个主要组成模块:

1、Scheduler调度器

2、ApplicationManager应用程序管理器,作用是接收作业->向Scheduler请求资源(Container)分配给AM->启动AM->监控AM->容错AM。

 学习yarn,主要应该从以下几个类入手:

Job,ResourceManager,NodeManager,MRAPPMaster,YarnClient,MapTask,ReduceTask

其中ResourceManager,NodeManager,MRAPPMaster是类似的实现机制。都是服务模型,都是事件监听机制。如下图:

本篇主要介绍了yarn的组成模块,下一篇将从代码级别分析一个job提交过程。

Hadoop总结篇之二--yarn的概况的更多相关文章

  1. Apache Hadoop 2.9.2 的YARN High Available 模式部署

    Apache Hadoop 2.9.2 的YARN High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.官方文档(htt ...

  2. Hadoop总结篇之一------开篇

    从今天开始新的系列:Hadoop总结篇 之前的hadoop学习篇由于是学习过程中随手记下来的一些内容,不具有系统性.所以在这个系列中,将凭着这段时间的研究心得,来记录一些自认为比较重要的东西. 本系列 ...

  3. Java提高篇(三二)-----List总结

    前面LZ已经充分介绍了有关于List接口的大部分知识,如ArrayList.LinkedList.Vector.Stack,通过这几个知识点可以对List接口有了比较深的了解了.只有通过归纳总结的知识 ...

  4. java提高篇(二九)-----Vector

    在java提高篇(二一)-–ArrayList.java提高篇(二二)-LinkedList,详细讲解了ArrayList.linkedList的原理和实现过程,对于List接口这里还介绍一个它的实现 ...

  5. Java提高篇(二六)-----hashCode

          在前面三篇博文中LZ讲解了(HashMap.HashSet.HashTable),在其中LZ不断地讲解他们的put和get方法,在这两个方法中计算key的hashCode应该是最重要也是最 ...

  6. Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

    前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...

  7. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

  8. 【重走Android之路】【路线篇(二)】知识点归纳

    [重走Android之路][路线篇(二)]知识点归纳   参考:http://blog.csdn.net/xujing81/article/details/7313507   第一阶段:Java面向对 ...

  9. java提高篇(二二)-----LinkedList

    摘自http://blog.csdn.net/chenssy/article/details/18099417  java提高篇(二二)-----LinkedList 一.概述 LinkedList与 ...

随机推荐

  1. Android TextView设置多彩文字

    在应用开发中时常会遇到需要在一段文字中插入几个不一样颜色文字的需求; 以前本人都是用多个TextView拼起来,不仅感觉很蠢,操作起来也蛮恶心; 直到接触到了SpannableStringBuilde ...

  2. etl工具

    ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)   Datastage 8.0 BT种子下载:http://files.cnblogs.com/ta ...

  3. 基于IE内核的浏览器:WebBrowser上的网页与Winform本身交互[Demo下载]

    http://blog.udnz.com/Article/Invoke_Javascript_On_Webbrowser_In_Winform.aspx C# 中调用 网页上的 Javascript ...

  4. hibernate.hbm2ddl.auto配置详解

    hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties><property name="hibernate. ...

  5. 使用qmake构建程序(有关.pro和.vcproj编译选项对应关系)

    houjinxin 为了方便统一构建,准备使用qmake构建所有的vc工程,无论是否使用了Qt库,可是在网上找了几天,有几个选项根本就不知道怎么在pro里面配置,才能生成预期的vcproj文件... ...

  6. Python 基礎 - 列表的使用

    如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做- #!/usr/bin/env python3 # -*- coding:utf-8 - ...

  7. http 学习 1-1 chapter1-HTTP概述

    Web浏览器.服务器和相关的Web应用程序都是通过HTTP相互通信的.HTTP是现代全球因特网中使用的公共语言. 1.1HTTP – 因特网的多媒体信使 HTTP使用的是可靠的数据传输协议,确保数据在 ...

  8. MCMC: The Metropolis Sampler

    本文主要译自 MCMC: The Metropolis Sampler 正如之前的文章讨论的,我们可以用一个马尔可夫链来对目标分布 \(p(x)\) 进行采样,通常情况下对于很多分布 \(p(x)\) ...

  9. Linux IO漫谈

    本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background IO可能是我们接触最频繁的系统调用,比如printf到终端,send content到对端, ...

  10. Socket实现粗略的Android聊天功能

    面试时写过,但是很乱,今天看到代码库里有一个,还是很规范的,贴出来. 主要用到俩类,一个是ServerSocket.class 一个是Socket.class. 记得要加权限:  <uses-p ...