Hadoop学习之YARN

1 YARN简介

1.1 概述

YARN (Yet Another Resource Negotiator)是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。

YARN 是 Hadoop2.x 版本中的一个新特性。是为了解决第一代 MapReduce 编程框架的不足,提高集群环境下的资源利用率,使其具有更好的扩展性,可用性,可靠性,向后兼容性,以 及能支持除 MapReduce 以外的更多分布式计算程序。

YARN 并不清楚用户提交的程序的运行机制,与运行的用户程序完全解耦,YARN 上可以运行各种类 型的分布式运算程序(MapReduce 只是其中的一种),比如 MapReduce、Storm 程序,Spark 程序等,只要他们各自的框架中有符合YARN 规范的资源请求机制即可,所以yarn 就成为一个通用的资源调度平台,各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享。

1.2 产生背景

Hadoop1.x 版本中是没有yarn的,两大核心组件为HDFS和MapReduce,HDFS负责分布式存储,MapReduce负责分布式计算,即负责编程又负责计算(编程套路+计算流程),计算流程的资源都是有MapReduce调度的,MapReduce在进行任务运算的时候是分为两个进程的jobtracker和tasktracker。

jobtracker:计算的主节点,存在单点故障。主要任务有①既要负责整个集群的资源调度,在每一个集群中还要执行多个mr任务;②还要负责每个任务启动以及进度跟踪,mapreduce任务,跟踪maptask和reducetask的进度。

tasktracker:计算的从节点,提供资源,负责计算。将整个节点的资源分为2部分mapslot和reduceslot,当只有 maptask 时,reduceslot 不能用;当只有 reducetask 时,maptask 不能用,资源极大的浪费。

缺陷总结:

①单点故障,可靠性低

②扩展性差

③资源利用率低

④资源调度只能为MapReduce服务,计算框架的资源调度使用受限

因为hadoop1.x的以上缺陷,hadoop2.x引入了yarn,yarn的最基本的想法是将资源调度和进度跟踪分开,hadoop2.x中mapreduce负责编程套路(逻辑),yarn 负责资源调度。

2 YARN的架构

(1)ResourceManager:主节点,负责接收客户端的请求,提供资源调度,负责整个集群的资源调度。它主要由两个组件构成:ASM(ApplicationsManager,应用程序管理器)和Scheduler(调度器)。

应用程序管理器(ASM):负责所有任务的管理,每一个任务的启动销毁,每一个任务的进度跟踪,管理每一个应用程序的MRAppMaster(即负责每一个MRAppMaster 启动和销毁,跟踪MRAppMaster 运行状态,失败尝试重启)。

MRAppMaster(MapReduce Application Master):MapReduce 中,每一个应用程序运行的时候,先启动MRAppMaster负责管理整个应用程序,它的主要工作有:①帮助当前应用程序申请资源;②启动maptask和reducetask,③跟踪maptask任务和reducetask任务的运行状态和进度;④进行maptask和reducetask 资源的回收。

调度器(Scheduler):决定的任务的执行顺序

Yarn中的三种调度器如下:

①FIFO(First In First Out):队列调度器

内部维护的是单一的队列,哪一个任务先提交,就先进行资源分配,任务运行。

缺点:如果前面有一个大任务  后面的任务阻塞。

②FAIR:公平调度器

只有这一个job在运行,此时它获得了所有集群资源;当有多个任务时,所有任务平分资源。

缺点:没有根据任务大小进行资源分配

③CAPACITY:容器调度器

也称为计算能力调度器,可以根据任务,需要或公司每个组的真是需要,手动配置资源占比。如组1为测试组,占20% ,组2为生产占80%。每个组的内部维护了多个队列,每一个队列,都是FIFO 。

调度器总结:CAPACITY是apache版本默认使用的调度器,FAIR是CDH版本的hadoop默认使用的调度器,使用哪种调度器取决于yarn-site.xml当中的yarn.resourcemanager.scheduler.class 属性。

(2)NodeManager:从节点,真正的资源提供者,为计算任务提供资源,需要资源的时候提供,运行完成时回收资源,动态提供资源是以container为单位提供,一个container对应一个maptask或一个reducetask。

container:抽象出来的逻辑资源容器 ,nodemanager提供资源的基本单位或最小单位   内部封装了一定的资源(cpu,内存,磁盘,网络,io)。

3 资源调度过程

(1)客户端提交任务(如hadoop jar...),客户端先去ResourceManager申请资源;

(2)ResourceManager返回一个资源节点用于启动当前应用程序(job)的MRAppMaster;

(3)ResourceManager到对应的节点上启动MRAppMaster;

(4)MRAppMaster向ResourceManager申请资源(如maptask或reducetask);

(5)ResourceManager向MRAppMaster返回对应的资源节点;

(6)MRAppMaster到对应的资源节点上启动一个container在其中运行maptask任务;

(7)maptask向MRAppMaster汇报自己的状态和进度;

(8)当MRAppMaster获取到有一个maptask运行完成之后,就启动一个container在其中运行reducetask任务;

(9)reducetask启动后,向MRAppMaster汇报自己的状态的进度;

(10)每一个maptask和reducetask运行完成之后,MRAppMaster就会到对应的节点上进行资源回收;

(11)整个任务运行完成,MRAppMaster向ResourceManager汇报并注销自己,并把整个运行结果返回给客户端。

4 job提交流程

Hadoop学习之yarn相关推荐

  1. Hadoop学习笔记 --- YARN执行流程与工作原理

    一.YARN简述 首先介绍一下YARN 在Hadoop2.0版本引进的资源管理系统,直接从MapReduce V1演化而来(由于引擎的功能缺陷): 原因是将MapReduce1中的Job Tracke ...

  2. Hadoop 学习路线图

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  3. hadoop 学习路线

    Posted: Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comments: 40 Comments Hadoop家族学习路线图 Hadoop家族系列文 ...

  4. Hadoop学习(二)——MapReduce\Yarn架构

    其他更多java基础文章: java基础学习(目录) 学习资料 理解Hadoop YARN架构 本文先讲MapReduce 1.x的框架.再讲MapReduce 1.x升级改进后MapReduce 2 ...

  5. Hadoop学习之MapReduce

    Hadoop学习之MapReduce 目录 Hadoop学习之MapReduce 1 MapReduce简介 1.1 什么是MapReduce 1.2 MapReduce的作用 1.3 MapRedu ...

  6. Hadoop学习之HDFS

    Hadoop学习之HDFS 1 HDFS相关概念 1.1 设计思路 分散存储,冗余备份. 分散存储:大文件被切割成小文件,使用分而治之的思想让多个服务器对同一个文件进行联合管理: 冗余备份:每个小文件 ...

  7. Hadoop学习之整体介绍及环境搭建

    Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...

  8. Hadoop学习笔记(四)HDFS部分下

    Hadoop学习笔记(四)HDFS部分下 一.HDFS 的数据流 1.1 HDFS的写数据流程 客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,Nam ...

  9. 大数据hadoop新手快速入门视频教程 Hadoop学习视频教程

    最新在学习hadoop .storm大数据相关技术,发现网上hadoop .storm 相关学习视频少之又少,我这里整理了hadoop学习视频,给大家学习. 视频下载地址:http://demo.li ...

最新文章

  1. zookeeper 集群安装
  2. mysql表名忽略大小写
  3. oracle 如何获取表的主键列名,如何获取表的所有列名
  4. 微型计算机硬件认识和拆装,贵州省习水县第一中学张天梅
  5. php软删除代码,PHP laeavel软删除以及软删除还原 易错点
  6. FPGA实现低高速接口更新说明
  7. oracle到pg不停机增量迁移,研究 Oracle 到 PostgreSQL 的数据迁移 – 以 pgloader 为例 – Phy 的博客...
  8. MySQL 5.5 日志管理
  9. LuaForUnity4:Lua的函数
  10. javaweb JAVA JSP学生信息管理系统源码(JSP学生成绩管理系统 学生管理 JSP学生管理系统)
  11. windows 远程桌面连接(mstsc)删除下拉框的记录
  12. 台式机鼠标失灵打开计算机,台式电脑鼠标没反应是怎么回事
  13. win10网络工作组看不到其他计算机,win10系统工作组不显示其他计算机的解决方法...
  14. 王之泰 201771010131《面向对象程序设计(java)》第十六周学习总结
  15. 深信服虚拟服务器设置ip,深信服网关怎么设置端口映射
  16. html autocomplete 多个参数切换
  17. 【OCP|052】OCP最新题库解析(052)--小麦苗解答版
  18. 如何用计算机算p,‎App Store 上的“计算器++P”
  19. 【探索】excel VBA的任意坐标画线问题
  20. 好东西,就要一起分享。

热门文章

  1. Stream、FileStream、MemoryStream的区别
  2. 【NOIP 模拟赛】 道路
  3. var与dynamic区别
  4. COJ 1081 集训队分组
  5. 简单实用的铁道部12306.cn网站自动化登录
  6. MVVM更容易内存泄露吗?
  7. Java代码优化方案 J2ME内存优化
  8. UDT源代码下载链接
  9. 准备 KVM 实验环境 - 每天5分钟玩转 OpenStack(3)
  10. 智能硬件开发神器免费送!距离产品智能化,只差一个“三明治”的距离