YARN框架解析
来源:互联网 发布:mac office2016破解版 编辑:程序博客网 时间:2024/06/07 02:55
YARN框架
Yarn是资源管理框架,其核心思想是把JobTracker的资源管理和作业调度分开,分别由ResourceManager和ApplicationMaster进程实现
Yarn的4大核心组件分别为ResourceManager、NodeManager、ApplicationMaster和Container
(1) ResourceManager(RM):控制集群并管理应用程序对基础资源的分配。
总体而言RM具有以下特征:
1)处理客户端请求
2)启动或监控ApplicationMaster
1) 监控NodeManager
2) 资源的分配与调度
(2) ApplicationMaster(AM):管理在Yarn内运行的每个应用程序实例
总体而言AM具有以下特征:
1)负责数据的切分
2)为应用程序申请资源并分配给内部的任务
1) 任务的监控与容错
(3) NodeManager(NM):管理Yarn集群中的每个节点
总体而言NM具有以下特征:
1) 管理每个节点的资源
2) 处理来自ResourceManager的命令
3) 处理来自ApplicationMaster的命令
(4) Container:对Yarn中资源的抽象
总体而言Container具有以下作用:
对任务运行环境进行抽象,封装CPU,内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息
Yarn作业运行的步骤:
1. 作业提交:
1) Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业
2) 作业ID由ResourceManager分配
3) 作业的Client核实作业的输出,计算输入的split,将作业的资源(Jar包,配置信息,split信息)拷贝至HDFS
4) 调用ResourceManager.submitApplication()提交作业
2. 作业初始化
1) ResourceManager收到submitApplication()的请求后,便将请求转发给调度器(Scheduler),调度器分配container,ResourceManager在该Container中启动ApplicationMaster
2) ApplicationMaster创建bookkeeping对象监控作业的进度,得到任务的进度以及完成报告
3) 由HDFS得到客户端计算好的split信息,为每个split创建map任务,根据mapreduce.job.reduces创建reduce任务
3. 任务分配
若作业很小,ApplicationMaster会选择在自己的JVM中运行任务
若作业不小,则ApplicationMaster向ResourceManager请求container运行所有的map和reduce任务,这些请求通过心跳来传输,包括每个map任务的数据位置,比如存放split的主机名和机架,调度器(schedule)利用·这些信息调度任务,尽量把任务分配给提供给存放split的节点或者分配给和存放split节点相同机架的节点上
4. 任务运行
当任务由ResourceManager的Schdule分配给一个container后,ApplicationMaster联系NodeManager启动Container,任务运行前首先需要本地化任务所需的资源,比如作业配置,JAR文件,以及分布式缓存中的所有文件,最后运行Map或者Reduce任务 ,YarnChild运行在专用的JVM,但Yarn不支持JVM重用
5. 进度和状态更新
Yarn中的任务将其进度和状态返回给ApplicationMaster,客户端每秒向ApplicationMaster请求进度更新
6. 作业完成
客户端每5分钟通过调用waitForCompletion()检查作业是否完成,时间间隔可以配置,作业完成后ApplicationMaster和Container清理工作状态,OutputCommiter的作业清理也会调用,作业的信息会被作业历史服务器存储以备用户检查
- YARN框架解析
- 解析Hadoop新一代MapReduce框架Yarn
- Yarn框架
- YARN-02-YARN的框架
- YARN 框架源码分析
- YARN 框架源码分析
- Yarn框架概述
- yarn框架的简介
- Hadoop MapReduceV2(Yarn) 框架
- Hadoop YARN 框架 一
- YARN基本框架介绍
- YARN基本框架
- 【MR】剖析 YARN 框架
- YARN基本框架分析
- 资源调度框架YARN
- 剖析Yarn框架
- yarn historyserver 使用解析
- YARN Distributedshell解析
- XStream注册自定义转换器进行类型转换
- fresco属性
- Java并发编程技术大纲
- 浅谈JavaScript中forEach与each
- Spring配置报错:通配符的匹配很全面,但无法找到元素‘util:list’的声明
- YARN框架解析
- java基础—JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?
- 深入理解Java中的final关键字
- 阿里的fastJSON的用法
- Haxe手册摘要 一. 类型
- 技术应该怎么学习
- 医院客户关系系统
- 单例模式
- shiro之web配置