当前位置: 首页 > news >正文

大数据_YARN的工作原理

目录

一、YARN产生的背景

二、YARN的设计思想

三、YARN的基本架构

四、YARN的工作流程


一、YARN产生的背景

YARN是从MRv1(hadoop1.0时代)进化到MRv2(hadoop2.0时代)过程中,解决了扩展性差、可靠性差以及资源利用率低等问题应运而生的。下面是MRv1和MRv2的介绍。

MRv1

1、编程模型:Map阶段和Reduce阶段

2、数据处理引擎:MapTaskReduceTask

3、运行时环境:JobTracker(资源管理和作业控制)和TaskTracker(接受具体命令并具体执行)

     4mRv1的局限性:

•  扩展性差( JobTracker兼具资源管理及作业调度, 容易负载过大)

•  可靠性差( Master/Slave架构中, Master的单点故障)

•  资源利用率低( Slot资源分配模型)

•  无法支持多种计算平台  

MRv2

1、编程模型,数据、处理引擎,与MRv1是一样的

2、唯一不同的是运行时环境。MRv2是运行于YARN之上的MapReduce计算框架·

3、YARN(资管理与调度)和ApplicationMaster(作业控制)。

YARN

支持多中计算框架的资源管理器

•  资源利用率高

•  运维成本低

•  数据共享  

二、YARN的设计思想

MRv1MRv2的框架对比图

MRv1MRv2的编程模型对比

1、编程模型( MapReduce应用程序的两套编程接口: 新API(mapred) 和旧API(mapreduce))

2、向后兼容问题: 采用MRv1的旧API写的APP, 可以直接使用之前的 Jar包运行于MRv2上, 但采用MRv1; 但采用MRv1的新API写的APP, 不可以如此, 需要使用MRv2编程库重新编译并修改不兼容的参数和 返回值。  

MRv1MRv2的运行环境对比

•  JobTracker: 资源和任务的管理和调度

•  TaskTracker: 单个节点的资源管理和任务执行 

•  YARN: 资源管理和调度

•  ApplicationMaster: 具体应用程序相关的任务切分、 任务调度和容错等。  

三、YARN的基本架构

AYARN的基本组成结构

ResourceManager全局的资源管理器,负责整个集群的资源管理、分配与调度。

Scheduler(调度器),纯调度器,默认下是FairScheduler

NodeManager:对每一个slave上的资源和任务做管理

1、定时的向RM汇报HeartBeat(资源的使用情况和Container的运行状态)

2、接受来自AM的启动/停止的请求

Container:资源分配单位(MRv1中slot),动态分配。

ApplicationMaster:每个APP都会包含一个AM,AM的功能包括:

1、向RM申请资源(用Container)

2、将任务做进一步的分配

3、与NM通信启动/停止任务

4、跟踪每一个Task的运行状态(包括Failed后的操作)

BYARN的通信协议

1、Client与RM通信的协议,ApplicationClientProtocol,作业的提交,应用程序的状态等。

2、AM与RM通信协议,ApplicationMasterProtocol,向RM注册AM,申请资源。

3、AM与NM通信协议,ContainerManagementProtocol,启动/停止Container。

4、RM与NM通信协议,ResourceTracker,汇报slave节点的资源信息包括Container的状态(运行状况)

四、YARN的工作流程

 下图的数字表示了YARN的从client提交任务,到申请资源,到创建task,以及task完成后返回结果RM的处理流程。

相关文章:

  • anaconda,docker和Jupyter Notebook常见问题解答
  • 【Rust日报】2022-10-01 Rumqtt:基于rust的mqtt代理
  • STM32 GPIO模拟UART串口:外部时钟及TIM方式
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • 知识点17--如何将spring boot项目布置在外部tomcat中
  • 面向对象——抽象类
  • C++ 异常处理机制讲解
  • 【软考 - 高级系统架构设计师】考前冲刺计划 及 国庆作息时间
  • Typescript的数组类型
  • 【分治法】第k个数(快速选择算法,结合快速排序)
  • 西瓜书研读——第四章 决策树:ID3、C4.2、CSRT算法
  • aistudio 常规赛:钢铁缺陷检测挑战赛 经验总结,轻松复现map 47排名再度提升
  • 学习小发现-04-如何从字符串中提取数字并转换为整型输出、如何在%d输入内容中判断整型并只读取数字以整型输出、scanf的各种用法
  • Python中的闭包
  • Java知识【继承中的成员访问特点】
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Android Volley源码解析
  • FineReport中如何实现自动滚屏效果
  • java2019面试题北京
  • JavaScript类型识别
  • js递归,无限分级树形折叠菜单
  • laravel 用artisan创建自己的模板
  • Linux Process Manage
  • scrapy学习之路4(itemloder的使用)
  • spring boot 整合mybatis 无法输出sql的问题
  • 彻底搞懂浏览器Event-loop
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于web的全景—— Pannellum小试
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端之Sass/Scss实战笔记
  • 如何胜任知名企业的商业数据分析师?
  • 删除表内多余的重复数据
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用Swoole加速Laravel(正式环境中)
  • 王永庆:技术创新改变教育未来
  • 一份游戏开发学习路线
  • # 数论-逆元
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (利用IDEA+Maven)定制属于自己的jar包
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)详解PHP处理密码的几种方式
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***检测工具之RKHunter AIDE
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 的程序集加载上下文
  • .Net8 Blazor 尝鲜
  • ?
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [100天算法】-不同路径 III(day 73)