从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程。自此Apache Hadoop由下面四个子工程组成:

  • Hadoop Comon:核心库,为其他部分服务
  • Hadoop HDFS:分布式存储系统
  • Hadoop MapReduce:MapReduce模型的开源实现
  • Hadoop YARN:新一代Hadoop数据处理框架

概括来说,Hadoop YARN的目的是使得Hadoop数据处理能力超越MapReduce。众所周知,Hadoop HDFS是Hadoop的数据存储层,Hadoop MapReduce是数据处理层。然而,MapReduce已经不能满足今天广泛的数据处理需求,如实时/准实时计算,图计算等。而Hadoop YARN提供了一个更加通用的资源管理和分布式应用框架。在这个框架上,用户可以根据自己需求,实现定制化的数据处理应用。而Hadoop MapReduce也是YARN上的一个应用。我们将会看到MPI,图处理,在线服务等(例如SparkStormHBase)都会和Hadoop MapReduce一样成为YARN上的应用。下面将分别介绍传统的Hadoop MapReduce以及新一代Hadoop YARN架构。

传统的Apache Hadoop MapReduce架构

传统的Apache Hadoop MapReduce系统由JobTracker和TaskTracker组成。其中JobTracker是master,只有一个;TaskTracker是slaves,每个节点部署一个。

图 1 Apache Hadoop MapReduce系统架构

JobTracker负责资源管理(通过管理TaskTracker节点),追踪资源消费/释放,以及Job的生命周期管理(调度Job的每个Task,追踪Task进度,为Task提供容错等)。而TaskTracker的职责很简单,依次启动和停止由JobTracker分配的Task,并且周期性的向JobTracker汇报Task进度及状态信息。

Apache Hadoop YARN架构

YARN的最基本思想是将JobTracker的两个主要职责:资源管理和Job调度管理分别交给两个角色负责。一个是全局的ResourceManager,一个是每个应用一个的ApplicationMaster。ResourceManager以及每个节点一个的NodeManager构成了新的通用系统,实现以分布式方式管理应用。

图2 Apache Hadoop YARN架构

ResourceManager是系统中仲裁应用之间资源分配的最高权威。而每个应用一个的ApplicationMaster负责向ResourceManager协商资源,并与NodeManager协同工作来执行和管理task。ResourceManager有一个可插入的调度器,负责向各个应用分配资源以满足容量,组等限制。这个调度器是一个纯粹的调度器,意思是它不负责管理或追踪应用的状态,也不负责由于硬件错误或应用问题导致的task失败重启工作。调度器只依据应用的资源需求来执行调度工作,调度内容是一个抽象概念Resource Container,其中包含了资源元素,例如内存,CPU,网络,磁盘等。

NodeManager是每个节点一个的slave,其负责启动应用的container,管理他们的资源使用(内存,CPU,网络,磁盘),并向ResourceManager汇报整体的资源使用情况。

每个应用一个的ApplicationMaster负责向ResourceManager的调度器协商合理的Resource Container并追踪他们的状态,管理进度。从系统角度看,ApplicationMaster本身也是以一个普通container的形式执行。

总结

由于MapReduce在计算模型方面的局限性,Hadoop实现了更加通用的资源管理系统YARN,并将MapReduce作为其一个应用。在YARN上可以实现多种多样计算模型的应用以满足业务需要。另外由于YARN系统将JobTracker的主要工作进行切分,使得master的压力大大减小(ResourceManager承担的工作量远小于JobTracker),这样YARN系统就可以支持更大的集群规模。

转载地址:http://blog.csdn.net/liangliyin/article/details/20729281

参考资料:

【1】http://hortonworks.com/blog/introducing-apache-hadoop-yarn/

【2】http://hortonworks.com/blog/apache-hadoop-yarn-background-and-an-overview/

【3】http://hadoop.apache.org/

Apache Hadoop YARN: 背景及概述的更多相关文章

  1. hadoop错误org.apache.hadoop.yarn.exceptions.YarnException Unauthorized request to start container

    错误: 14/04/29 02:45:07 INFO mapreduce.Job: Job job_1398704073313_0021 failed with state FAILED due to ...

  2. Hadoop -YARN 应用程序设计概述

    一概述        应用程序是用户编写的处理数据的统称,它从YARN中申请资源完毕自己的计算任务.YARN自身相应用程序类型没有不论什么限制,它能够是处理短类型任务的MapReduce作业,也能够是 ...

  3. Apache Hadoop YARN – NodeManager--转载

    原文地址:http://zh.hortonworks.com/blog/apache-hadoop-yarn-nodemanager/ The NodeManager (NM) is YARN’s p ...

  4. spark on yarn 动态资源分配报错的解决:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:spark_shuffle does not exist

    组件:cdh5.14.0 spark是自己编译的spark2.1.0-cdh5.14.0 第一步:确认spark-defaults.conf中添加了如下配置: spark.shuffle.servic ...

  5. spark 笔记 4:Apache Hadoop YARN: Yet Another Resource Negotiator

    spark支持YARN做资源调度器,所以YARN的原理还是应该知道的:http://www.socc2013.org/home/program/a5-vavilapalli.pdf    但总体来说, ...

  6. Apache Hadoop YARN – ResourceManager--转载

    原文地址:http://zh.hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/ ResourceManager (RM) is the ...

  7. org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do

    在yarn-site.xml 配置文件中增加: <property> <name>yarn.nodemanager.aux-services</name> < ...

  8. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException

    这个是Flink 1.11.1  使用yarn-session 出现的错误:原因是在Flink1.11 之后不再提供flink-shaded-hadoop-*” jars 需要在yarn-sessio ...

  9. Caused by:java.lang.ClassNotFoundException:org.apache.hadoop.yarn.util.Apps

    错误原因 缺少hadoop-yarn.jar包. 导入jar包就好了~-~

随机推荐

  1. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  2. Python - 利用flask搭建一个共享服务器

    零.概述 我利用flask搭建了一个简易的共享服务器,分享给大家 一.python代码 import os import time from flask import Flask,render_tem ...

  3. Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

    前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. Auto ...

  4. JavaFx 中常见的包和类(javafx笔记 )

    JavaFx 中常见的包和类(javafx笔记 ) 更多详细内容请参考<Pro JavaFX 8>. javafx.stage 包包含以下类: Stage 类 ​ Stage 类是任何 J ...

  5. 虚拟机克隆后导致两台机器的IP都不显示的解决方法

    centos7中输入ifconfig出现ens33,没有eth0,也没有ip,不能上网,输入ifconfig后如下图 之前在网上也找了很多的方法,比如删除文件70-persistent-ipoib.r ...

  6. for循环的灵活性

      for循环把初始化.测试和更新组合在一起,其基本形式如下所示: for(初始化:测试条件:更新表达式) { //循环体 }   关键字for后面的圆括号中3个表达式,分别用两个分号隔开:   第一 ...

  7. POJ.1752.Advertisement(差分约束 最长路SPFA)

    题目链接 \(Description\) 有\(n\)个人在一条直线上跑步,每个人的起点 \(Si\).终点 \(Ei\) 已知:每个点可以放一个广告牌,一个人\(i\)能看到的广告牌数量为 \(Ei ...

  8. BZOJ.2707.[SDOI2012]走迷宫(期望 Tarjan 高斯消元)

    题目链接 一个点到达终点的期望步数 \(E_i=\sum_{(i,j)\in G}\frac{E_j+1}{out[i]}\),\(out[i]\)为点\(i\)的出度. 那么对于一个DAG可以直接在 ...

  9. 11.2 正睿停课训练 Day15

    目录 2018.11.2 正睿停课训练 Day15 A 郁闷的小G(二分) B 小G的树(树形DP) C 数的距离(思路) 考试代码 B C 2018.11.2 正睿停课训练 Day15 时间:3.5 ...

  10. Codeforces.297C.Splitting the Uniqueness(构造)

    题目链接 \(Description\) 给定一个长为n的序列A,求两个长为n的序列B,C,对任意的i满足B[i]+C[i]=A[i],且B,C序列分别至少有\(\lfloor\frac{2*n}{3 ...