Hadoop学习之yarn

                                       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提交流程

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj1308

#include<stdio.h>#include<string.h>//判断是否有环&#xff0c;判断是否是一个根节点。判断空树的情况#define N 1000000int pre[N10],dis[N10],degree[N10];int find(int n) {return pre[n]npre[n]?n:find(pre[n]);}int main() {int a,b,cnt,flag,f1,f2,i,min,…

天池在线编程 2020国庆八天乐 - 8. 分糖果

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270016 描述&#xff1a; 给定长度为偶数的整数数组&#xff0c;该数组中不同的数字代表不同种类的糖果&#xff0c; 每个数字表示一种糖果。 您需要将这些糖果平均分配给弟弟和…

1.Redis简介与基本命令

Redis是一个高性能的key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash&#xff08;哈希类型&#xff09;。 配置 绑定ip&#xff1a;如果需要远程访问&…

Hive基础知识

Hive基础知识 1 Hive相关概念 1.1 Hive是什么 Hive是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表&#xff0c;并提供 HQL(Hive SQL)查询功能&#xff0c;最终底层将HQL语句转换为MapReduce任务的&#xff0c;底层数据是存储在 HDFS 上…

【转】【C#.NET】ASP.NET状态管理之一:Cookie

【C#.NET】ASP.NET状态管理之一:Cookie 状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于 HTTP 的技术一样&#xff0c;Web 窗体页是无状态的&#xff0c;这意味着它们不自动指示序列中的请求是否全部来自相同的客户端&#xff0c;或者单个浏览器实例…

2.Redis数据操作

redis是key-value的数据结构&#xff0c;每条数据都是一个键值对 键的类型是字符串 注意&#xff1a;键不能重复 值的类型分为五种&#xff1a; 字符串string 哈希hash 列表list 集合set 有序集合zset string&#xff08;主要 string是redis最基本的类型 最大能存储512MB数…

天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270018 描述&#xff1a; 给你一个长度为 n 的序列&#xff0c;在他的子序列中让你找一个山谷序列&#xff0c;山谷序列定义为&#xff1a; 序列的长度为偶数。假设子序列的长…

向量点积(Dot Product)

http://www.evernote.com/shard/s146/sh/e0d95bd1-68df-49d9-87c8-e21647d94e18/4d7af393bd986fd0c462ebd138f494b1转载于:https://www.cnblogs.com/dyfzwj/p/3408588.html

天池在线编程 2020国庆八天乐 - 4. 生成更大的陆地(BFS)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324262601668 LeetCode 上也有该题 827. 最大人工岛 描述 在一个0和1的2D网格中&#xff0c;我们最多将一个0改为1。 之后&#xff0c;最大岛屿的大小是多少&#xff1f; &#xff0…

python操作MySQL 模拟简单银行转账操作

一、基础知识 1、MySQL-python的安装 下载&#xff0c;然后 pip install 安装包 2、python编写通用数据库程序的API规范 &#xff08;1&#xff09;、数据库连接对象 connection&#xff0c;建立python客户端与数据库的网络连接&#xff0c;创建方法为 MySQLdb.Connect(参数) 参…

使用data()方法缓存数据

使用data()方法缓存数据1、根据元素中的名称定义或返回存储的数据&#xff0c;其调用格式为&#xff1a;  data([name])其中&#xff0c;参数name为字符型&#xff0c;表示存储数据的名称。 2、根据元素中的名称在元素上存储或设置数据&#xff0c;其调用的格式为&#xff1a…

LeetCode 1007. 行相等的最少多米诺旋转

文章目录1. 题目2. 解题1. 题目 在一排多米诺骨牌中&#xff0c;A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。&#xff08;一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。&#xff09; 我们可以旋转第 i 张多米诺&a…

Hive内置函数大全

Hive内置函数大全 目录 Hive内置函数大全 1.复合类型构造函数 2 复合类型操作符 3 数值计算函数 4 日期函数 5 条件函数 6 字符串函数 7 汇总统计函数&#xff08;UDAF&#xff09; 8 表格生成函数(UDTF) 9 类型转换函数 10 数学函数 11 数学运算 12 逻辑运算 13…

python-mysql超简单银行转账

1首先先建数据库bank&#xff0c;数据结构表的名称为accoment&#xff1a; 2.python与mysql交互代码如下&#xff1a; # coding utf-8 # 1.导入模块 from pymysql import * import sys import pymysql# 2.接受命令行参数 if __name__ __main__:source_acctid 11target_acctid…

Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞

漏洞名称&#xff1a;Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞CNNVD编号&#xff1a;CNNVD-201311-054发布时间&#xff1a;2013-11-06更新时间&#xff1a;2013-11-06危害等级&#xff1a; 漏洞类型&#xff1a;信息泄露威胁类型&#xff1a;本地CVE编号&#x…

LeetCode 948. 令牌放置(贪心)

文章目录1. 题目2. 解题1. 题目 你的初始能量为 P&#xff0c;初始分数为 0&#xff0c;只有一包令牌。 令牌的值为 token[i]&#xff0c;每个令牌最多只能使用一次&#xff0c;可能的两种使用方法如下&#xff1a; 如果你至少有 token[i] 点能量&#xff0c;可以将令牌置为…

Python 中操作 MySQL 步骤

1.引入模块 在py文件中引入pymysql模块 from pymysql import *2.Connection 对象 用于建立与数据库的连接 创建对象&#xff1a;调用connect()方法 connconnect(参数列表)参数host&#xff1a;连接的mysql主机&#xff0c;如果本机是localhost参数port&#xff1a;连接的m…

nacos配置中心配置已经常见错误总结

&#x1f4bb;目录 前言1、基础架构2、依赖3、配置文件3.1、bolg-product配置文件3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.1.3、nacos远程配置 3.2、bolg-system3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.2.3、nacos远程配置 4、测试…

Hive解题思路

Hive解题思路 1 相关知识讲解 1.1 HQL语句的语法 sql语句的语法&#xff1a; select ..... from .... join ..... where .....group by ... having...order by|sort by|cluster by|distribute by .... &#xff08;1&#xff09;group by&#xff1a;按照某些字段的值进行…

3.Redis与python交互

#导入模块、包 from redis import* if __name__"__main__": try: #1.创建StrictRedis对象&#xff0c;与redis服务器建立连接 srStrictRedis() #2、redis正常操作 #添加键py1&#xff0c;值为gj resultsr.set(py1,gj) #输出响…