Hadoop架构-YARN
hadoop 1.x 架构
MRv1中各角色的作用:
JobTracker:
- 核心,主,单点
- 调度所有的作业
- 监控整个集群的资源负载
TaskTracker:
- 从,自身节点资源管理
- 和JobTracker心跳,汇报资源,获取Task
Client:
- 作业为单位
- 规划作业计算分布
- 提交作业资源到HDFS
- 最终提交作业到JobTracker
Job Tracker和Task Tracker是MR框架的长服务。Job Tracker干的事情就是:调度作业 & 资源使用情况的管理
Client做了两件事:
- 1.根据路径计算文件切片清单,同时取出切片对block的位置信息
核心:切片清单是很重要的,计算向数据移动,getfileblocklocations得到文件所有的块,得到位置信息。有了文件,就可以并行计算。jar包+切片清单+配置信息,作为分布式计算的资源 - 2.资源上传到hdfs
Client做完这两件事,告诉Job Tracker我这要作业要跑,你给调度一下。Job Tracker优先从HDFS拿回清单文件、参考资源、调度任务。最终Task Tracker通过3s心跳询问到Job Tracker有没有任务要做。之后Task Tracker就知道做哪个任务(里面有jar包、路径)。下载jar包到本地,开jvm跑Map Task或者Reduce Task。
MRv1的架构中,存在着很大的弊端:
- JobTracker:负载过重,单点故障
- 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
- 不同框架对资源不能全局管理
Hadoop 2.x架构
Hadoop 2.x架构中最大的改变,就是引入了YARN(Yet Another Resource Negotiator)。从MRv1进化到MRv2,就是引入了资源管理系统。核心思想就是将Job Tracker的两大功能(任务调度、资源管理)拆开,“分权”给ResourceManager和ApplicationMaster。使RM负责整个集群的资源管理,使ApplicationMaster负责任务调度。
同时,YARN的引入,使得多个计算框架可以运行在同一个集群中(MapReduce、Spark、Storm等),每个应用程序对应一个ApplicationMaster。
MRv2中各角色的作用:
YARN:解耦资源与计算
- 1.ResourceManager
- 主,核心
- 集群节点资源管理
- 2.NodeManager
- 与RM汇报资源
- 管理Container生命周期
- 计算框架中的角色都以Container表示
- 3.Container:【节点NM,CPU,MEM,I/O大小,启动命令】
- 默认NodeManager启动线程监控Container大小,超出申请资源额度,kill
- 支持Linux内核的Cgroup
- 3.MR :
- MR-ApplicationMaster-Container
- 作业为单位,避免单点故障,负载到不同的节点
- 创建Task需要和RM申请资源(Container)
- Task-Container
- MR-ApplicationMaster-Container
- 4.Client:
- RM-Client:请求资源创建AM
- AM-Client:与AM交互
Client将写好的程序打成jar包,上传给ResourceManager(后面统称为“RM”)。RM监控着所有NodeManager的资源情况(内存、CPU、磁盘io等),因此RM就知道哪个NodeManager(后面统称为“NM”,和DataNode站在一起的。NodeManager和RM做心跳,NodeManager负责统计本节点资源情况并汇报给RM。如此,RM就能采集到整个集群的资源使用情况了)是空闲的。
假设NodeManager2的资源是足够的,RM就会在NM2上创建一个Application Master进程(调度功能,因为它“不忙”,所以才挑选它)。然后NM2中的ApplicationMaster进程运行jar包程序,就知道要对哪个数据进行计算。既然拥有调度功能,就可以从HDFS拿回切片清单。
ApplicationMaster进程首先对数据切片,假如切5个片段,app mstr就会根据切片的位置信息,去RM申请5个map任务的资源(App Mstr对RM说:我这可能有xx个map任务、xx个reduce任务要跑,你根据你的资源情况,给我分配一下看看在哪跑比较合适)。
RM按照就近原则(也就是优先分配数据所在节点的资源),比如AppMstr有3个map任务要跑,RM就会根据实际情况返回3个combiner容器,并告诉AppMstr你就让3个map任务在这3个combiner容器里面跑就行了。app mstr收到通知后,就会通知各个combiner容器对应所在的NodeManager启动Combiner。combiner启动成功后会向AppMstr注册,然后AppMstr根据曾经RM下达的命令,将几个map任务放在combiner中去跑了。之后,combiner中就会启动YarnChild进程,YarnChild进程就会创建对应的MapTask线程来跑map任务了。
当所有map任务跑完了,就申请reduce任务的资源(按照就近原则、资源空闲原则)。
就近原则带来的好处,就是数据没有移动,避免了大量IO。如果想充分利用就近原则,就尽可能多的设置副本数。
总结:
将MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTracker构建的MRv1系统中。
基本功能模块:
- YARN:负责资源管理和调度
- MRAppMaster:负责任务切分、任务调度、任务监控和容错等
- MapTask/ReduceTask:任务驱动引擎,与MRv1一致
每个MapRduce作业对应一个MRAppMaster
- MRAppMaster任务调度
- YARN将资源分配给MRAppMaster
- MRAppMaster进一步将资源分配给内部的任务
MRAppMaster容错
- 失败后,由YARN重新启动
*任务失败后,MRAppMaster重新申请资源
Hadoop架构-YARN相关推荐
- Hadoop之Yarn面试知识复习
Hadoop之Yarn面试知识复习 目录 简述hadoop1与hadoop2 的架构异同 为什么会产生 yarn,它解决了什么问题,有什么优势? Hadoop之Yarn工作机制详解 HDFS的数据压缩 ...
- Hadoop之Yarn工作机制详解
Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...
- Hadoop体系结构– YARN,HDFS和MapReduce
Before reading this post, please go through my previous post at "Hadoop 1.x: Architecture and H ...
- Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)
文章目录 大数据的简介 Hadoop框架 Hadoop的优缺点 Hadoop1.x和2.x的版本区别 Hadoop架构 Hadoop目录结构 正常工作的Hadoop集群中Hadoop都分别需要启动哪些 ...
- Hadoop之Yarn
目录 1 Hadoop1.x和Hadoop2.x架构区别 2 Yarn概述 3 Yarn基本架构 4 Yarn工作机制 5 作业提交全过程 6 资源调度 ...
- Hadoop运维工程师专家之路--第二章Hadoop架构简介
第二章Hadoop架构简介 本章包括 l Hadoop架构 l 分布式集群 l HDFS架构 l YARN架构 本章介绍Hadoop架构.在你学习管理Hadoop集群之前,有必要先了解下Had ...
- Hadoop系列文章 Hadoop架构、原理、特性简述
Hadoop系列文章 Hadoop架构.原理.特性简述 Hadoop HDFS HDFS介绍 HDFS架构图 HDFS写入数据流程图 HDFS读取数据流程图 数据块的副本集 Hadoop YARN Y ...
- linux hadoop 关系,最全hadoop架构总结
最全hadoop架构总结一.什么是Hadoop?它包含哪些模块? ① Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构: ②主要解决,海量数据的存储和海量数据的分析计算问题. ③ ...
- MPP架构与Hadoop架构是一回事吗?
计算机领域的很多概念都存在一些传播上的"谬误". MPP这个概念就是其中之一.它的"谬误"之处在于,明明叫做"Massively Parallel P ...
最新文章
- PyTorch中如何使用tensorboard可视化
- 第12章 存储器的保护
- Python 卸载python
- 修改 Chrome浏览器主页被劫持 chrome 主页被篡改成hao.qquu8.com的解决方案
- CCF201612-5 卡牌游戏(募集解题代码)
- java map 教程_Map和Set
- Windows中的磁盘分区、MBR、GPT
- Atitit gui的实现模式文本 dom ast 像素绘图api native 目录 1. Pl ast xml domAst	1 1.1. 简介	1 1.1.1. 【具体语法树】	2 2.
- array在java_在Java中的ArrayLists之间进行转换
- oracle sql详细教程下载,Oracle SQL 实用基础教程 PPT
- 特征选择算法之ReliefF算法python实现
- Android Native Crash的log分析和定位
- logback分环境配置
- android程序设计学习,android编程入门很简单 android编程入门自学
- 干活,分享!!三套简单有趣的后台登录页面模板分享
- [Bullet3]常见物体和初始化
- 新购电脑已装显卡,但控制面板里找不到“NVIDIA 控制面板”怎么办?
- 利用资源文件实现对软件的保护
- 微x模块怎么导入主题_WESHOP | 基于微服务的小程序商城系统
- 编译原理:语法制导翻译
热门文章
- 蓝桥杯 密文搜索(全排列)
- 探究Java虚拟机栈
- 【Leetcode】刷题的开始
- System center 2012 R2 实战十、妙用SCO+SCOM实现声音告警
- WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
- 【BZOJ】4430: [Nwerc2015]Guessing Camels赌骆驼
- i386平台和x86-64平台机器代码的区别
- XHProf的安装和使用(PHP性能测试神器)
- MVC5+EF6 入门完整教程七
- JS中定义式函数与变量时函数的差别