HADOOP YARN原理及资源调度

文章目录

  • 1、ResourceManager
  • 2、NodeManager
  • 3、Applicacation Master
  • 4、yarn调度方式
  • 5、Yarn架构及各角色职责
  • 6、Yarn作业执行流程
  • 7、特点
  • 8、MapReduce在Yarn上的运转

1、ResourceManager

ReaouceManager(资源管理器RM)常驻守护进程:
管理集群资源,负责全局资源的监控、分配和管理;
接收来自Nodemanager的心跳信息,进行整体资源的汇总;
监控Application Master的开启和创建

2、NodeManager

yarn中的每一台节点服务器都运行一个Node manager,
Node manager相当于管理当前机器的一个代理;
负责本台机器的程序运行,并且对本台机器资源进行管理和监控;
Node Manager定时向ResourceManager 汇报本节点的资源(cpu、内存)使用情况;
启动并监控Container;

3、Applicacation Master

用户提交一个应用将会产生对应的Applicacation Master(AM),
AM常驻在Node manager上;
每一个AM都需要于Node manager进行资源协商,将获取所需的资源(container)用于任务(Task)的运行监控任务(Task)的运行情况;
如果Task运行失败,他将负责为其重新申请资源和启动任务;

4、yarn调度方式

	1 、先进先出调度
	2、容量调度
	3、公平调度

5、Yarn架构及各角色职责

在这里插入图片描述
这张图足够咱们喝一壶的,来吧,展示!

6、Yarn作业执行流程

1、client向ResourceManager发出任务请求。
2、Resource Manager指定一个NodeManager启动其ApplicationMaster。
3、ApplicationMaster将计算任务反馈给Resource Manager。4、ApplicationMaster将任务分割分发到不同的NodeManager。
5、NodeManager启动Task执行work。

7、特点

1、yarn 具有双层调度策略,Resource Manager将资源分配给Application Master,Application Master再将资源分配给NodeManager。而且,yarn具有预留的调度策略。资源不够时,会为Task预留资源,直到积累充足

2、yarn具有较好的容错机制。当任务失败,ResourceManager将失败任务告诉Application Master。由ApplicationMaster处理失败的任务。ApplicationMaster会保存已经执行的Task,重启不会重新执行

3、yarn支持多种类型资源调度,其基于DRF算法实现。而且,其支持多种资源调度器FIFO、FairScheduler以及Cpacity Scheduler。最后,yarn支持多租户资源调度器包括支持资源按比例分配、层级队列划分方式以及支持资源抢占

4、yarn支持内存和CPU二种资源隔离。内存是一种”决定生死“的资源。CPU隔离包括默认不对CPU资源进行隔离和基于Cgroups的方案

5、 yarn支持的调度语义包括请求某个特定节点/机架上的特定资源量、将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资 源以及请求归还某些资源。不支持的语义包括请求任意节点/机架上的特定资源量、请求一组或几组符合某种特质的资源、超细粒度资源以及动态调整Container资源 。

6、yarn是通用的统一资源管理系统,同时运行长应用程序和短应用程序 。长应用程序通常情况下,指永不停止运行的程序 ervice、HTTP Server等。短应用程序指短时间(秒级、分钟级、小时级)内会运行结束的程序 MR job、Spark Job等 。如下图所示,yarn使得集群中各种任务的执行成为可能。
在这里插入图片描述
Hadoop及YARN架构
在这里插入图片描述

8、MapReduce在Yarn上的运转

在这里插入图片描述
**1、用户向YARN中提交应用程序,其中包括AM程序、启动AM的命令、命令参数、用户程序等;事实上,需要准确描述运行ApplicationMaster的unix进程的所有信息。提交工作通常由YarnClient来完成。
2、RM为该应用程序分配第一个Container,并与对应的NM通信,要求它在这个Container中启动AM;
3、AM首先向RM注册,这样用户可以直接通过RM査看应用程序的运行状态,运行状态通过 AMRMClientAsync.CallbackHandler的getProgress() 方法来传递给RM。 然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4〜7;
4、AM采用轮询的方式通过RPC协议向RM申请和领取资源;资源的协调通过 AMRMClientAsync异步完成,相应的处理方法封装在AMRMClientAsync.CallbackHandler中。
5、—旦AM申请到资源后,便与对应的NM通信,要求它启动任务;通常需要指定一个ContainerLaunchContext,提供Container启动时需要的信息。
6、NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务;
7、各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;ApplicationMaster与NM的通信通过NMClientAsync object来完成,容器的所有事件通过NMClientAsync.CallbackHandler来处理。例如启动、状态更新、停止等。
8、应用程序运行完成后,AM向RM注销并关闭自己。
**

热门文章

暂无图片
编程学习 ·

使用ssh连接window和 oracle virtualBox中的虚拟机 保姆级教程

目录环境基本连接步骤进一步配置hostname环境虚拟机 VM Virtualbox 6.1 虚拟机系统 debain 10.3虚拟机网卡:1.虚拟机网卡2.主机 windows 10配置好以上环境后开始配置虚拟机,当然host-only网络适配器的ip地址可以自己设置。 基本连接步骤 第一步: 虚拟机中运行 ps -e | gr…
暂无图片
编程学习 ·

电信云堤·抗D(电信云堤清洗高防服务器)提供超强T级DDoS处理能力

电信云堤”下辖四大产品: 电信云堤DDoS攻击防护(简称“电信云堤抗D”) 电信云堤域名安全防护(简称“电信云堤域名无忧”) 电信云堤反钓鱼网站处置(简称:“电信云堤反钓鱼”) 电信云堤网站安全专家(简称:“电信云堤网站安全专家)电信云堤抗D “电信云堤抗D”依托于中…
暂无图片
编程学习 ·

文献管理之 Citavi & Latex

文章目录为什么选择Citavi安装地址使用指南不足之处官方文档 为什么选择Citavi 比较好的文献管理软件主要有Citavi、Endnote、Mendeley、Zotero,根据Citavi、Endnote、Mendeley 功能大比拼!到底哪一款才是众望所归的终极文献管理软件?总结,Citavi不仅是个免费的软件,而且功…
暂无图片
编程学习 ·

js实现复制并能保留原格式粘贴

使用textarea能粘贴的时候保留原格式。使用input粘贴的时候格式会丢失。const input = document.createElement(textarea);document.body.appendChild(input);input.value = “复制我呀”;// input.setAttribute(value, "复制我呀");input.select();if (document.ex…
暂无图片
编程学习 ·

qtdesigner-尝试连接数据库

参考教程:基于PyQt5的数据库可视化操作界面MainWindow:生成的一个类,下面有setupUi和retranslateUi两个方法。 接下来是登录操作。教程中用的是pymssql,我们用pyodbc,目测应该差不多。 import pyodbc cnxn = pyodbc.connect(DRIVER={SQL Server};SERVER=localhost;DATABASE…
暂无图片
编程学习 ·

ECharts雷达图详细配置说明

// 指定图表的配置项和数据 var option = {backgroundColor: rgba(204,204,204,0.7 ),// 背景色,默认无背景 rgba(51,255,255,0.7)title: {text: 各教育阶段男女人数统计,link: https://www.xxx.com,target: blank,top: 5%,left: 3%,textStyle: {color: #fff,fontSize: 20,…
暂无图片
编程学习 ·

浅析深究什么是SOA

1. 背景 IT行业就是术语和缩写流行的行业,各大厂商都喜欢隔三差五地推出一些新概念。为了不落人后,大家都喜欢争先恐后地跟进。有深入研究、务实研发的供应商,能够将概念落地,不断推出创新的产品和服务,赢得竞争优势。但“贴标签”的也大有人在,而且趋势是越贴越多,跟风…
暂无图片
编程学习 ·

父子组件传值

父子组件传值 子组件要给父组件传值方法,使用$emit 子页面 <template> <div class="testCom"><input type="text" v-model="message" /><button @click="click">发送消息给爸爸</button></div> …
暂无图片
编程学习 ·

iOS逆向 | 数字签名与证书

参考来源 https://ke.qq.com/course/314070 什么是数字签名 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密…
暂无图片
编程学习 ·

git学习日志-标签

git也可以像svn一样打标签,以此来标记发布节点,以示重要性。 对标签的操作,一般包括: 1. 列出标签 2. 创建标签 3. 删除标签 4. 检出标签 一、列出标签 执行git tag命令,就可以看到当前仓库中已经打过的标签。注意: 这个命令会以字母顺序列出标签。 也可以加上-l或--list…
暂无图片
编程学习 ·

JavaScript(ES5)字符串的方法

字符串的方法toString 、indexOf 、lastIndexOf 、toUpperCase 、toLowerCase 、split 、replace 、substr 、substringtoString-----其他类型转换为字符串 let num = 837; let str = num.toString(); console.log(str);// 语法: 字符串变量名=非字符串变量.toString();【注】…
暂无图片
编程学习 ·

mysql 获取本周每天时间

mysql 获取本周每天时间语句 (evt_t_event换成自己的表) SELECT@date := DATE_ADD(@date, INTERVAL + 1 DAY) daysFROM(SELECT@date := DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),%w)-1), INTERVAL - 1 DAY)FROMevt_t_eventLIMIT 7) time
暂无图片
编程学习 ·

斐波那契(黄金分割法)查找算法(FibonacciSearch)

斐波那契(黄金分割法)查找算法(FibonacciSearch) 1.基本介绍1)黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神奇的数…
暂无图片
编程学习 ·

实施java 的web项目需要掌握的技术

实施java 的web项目需要掌握的技术如下:1.java语言:JSP、Servlet、JDBC、javaBean(Application)从这四部分开始创建web项目。(一)java Database Connectivity(JBDC)技术它是一种执行SQL语句的java API,由一组用java编程语言编写的类与接口组成,为开发人员提供了一个标准…
暂无图片
编程学习 ·

Vue循环渲染&key的原理

v-for用于循环的数组里面的值可以是对象,也可以是普通元素<ul id="example-1"><!-- 循环结构-遍历数组 item 是我们自己定义的一个名字 代表数组里面的每一项 items对应的是 data中的数组--><li v-for="item in items">{{ item.mess…
暂无图片
编程学习 ·

__use_two_region_memory ?

设置堆 0X6000设置栈 0X3000注意 根据启动代码.S 看出heap是8字节对齐的。这个extern __value_in_regs struct __argc_argv __rt_lib_init(unsigned /*heapbase*/, unsigned /*heaptop*/);进行heap分配经测试看起来这个函数本身耗费了一些字节,如下:char *initial_heap;char…