YARN——Hadoop的资源管理系统

简介: YARN——Hadoop的资源管理系统

一、YARN是如何产生的

1.在Hadoop1.x中,mapreduce在集群中的架构是:1个Job Tracker(负责资源管理和作业调度)带多个Task Tracker(定期向Job Tracker汇报本节点的健康状况、资源使用情况、任务执行情况以及接收来自Job Tracker的命令并执行)。


Hadoop1.x存在的问题:

单点故障:由于Job Tracker只有一个,如果它挂了,集群就没法使用了。

Job Tracker会接收来自各个Task Tracker节点的RPC请求,随着节点规模增大,Job Tracker压力会很大。

而这系列版本的Hadoop仅支持mapreduce计算框架,不支持其他类型的计算框架。

2.从资源利用率的角度来看,在没有yarn之前,集群之间是独立的,例如Hadoop是一个集群,spark(计算框架)是一个集群,而Hbase又是一个集群,这样的情况就造成集群管理起来很复杂,而各个集群独立使得资源不能共享导致集群间资源浪费。


解决的思路:将所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配。哪个集群需要资源就将资源分配给哪个集群,这样的集群资源利用率就高于多个独立集群的资源利用率。


3.从数据共享角度来看,海量数据在集群间移动不但耗时,硬件成本也会增加。共享集群模式可以让多种框架共享数据(HDFS上的数据)、共享硬件资源,大大减少了移动数据带来的成本(即移动计算要比移动数据好,将作业任务分配到数据所在节点上去运行,减少数据网络传输的开销)。

二、YARN(Yet Another Reource Negotiator,另一资源协调者)

一个通用的资源管理系统,为上层应用提供统一的资源管理和调度。解决了集群资源利用率、数据共享、资源统一管理等方面的问题,yarn取代了Job Tracker的角色。


YARN架构(采用Master/Slave结构——主从设备模式)

20200617123557795.jpg

组成:

Client:向Resource Manager提交任务、终止任务

Resource Manager(RM):

集群只有一个RM,一个RM对应多个NM;


处理客户端的请求(启动/终止应用程序);


启动/监控AM,若AM挂掉,RM会在另一NM节点上启动AM;


监控NM,接收NM汇报的心跳信息并分配任务给NM执行;一旦某个NM故障,标记下该NM上的任务,告诉对应的AM如何处理。


Node Manager(NM):

集群中有多个NM,负责单个节点资源管理和使用;


周期性地通过心跳信息向RM汇报本节点上资源使用情况和各个Container的运行状态;


接收并处理来自RM的Container启动/停止的各种命令 。


Application Master(AM):

对应每一个应用程序,负责应用程序的管理;


AM向RM申请资源用在NM上启动相应的任务;


为应用程序/作业向RM申请资源(Container),并分配给内部任务;


与NM通信,以启动/停止任务;


任务监控和容错,在任务执行失败时重新为该任务申请资源以重启任务;


处理RM 发过来的命令(终止Container、让NM重启)。


Container(任务运行环境的抽象):任务是在Container中运行的,一个Container既可以运行AM,也可以运行具体的Map、Reduce、MPI、SparkTask。

Mapreduce作业启动时产生Map任务——Map Task

MPI框架对应的执行任务——MPI Task

三、YARN的架构设计

yarn的工作原理

20200617123557795.jpg

用户向yarn提交应用程序/作业,包括AM程序,及启动AM程序的命令和用户程序;


RM为作业分配第一个Container,并与对应的NM通信,要求它在这个Container中启动该作业的AM;


AM首先向RM注册,这样用户就可以直接通过RM查询作业的运行状态;然后再为各个任务申请资源并监控任务的运行状态,直到运行结束(AM采用轮询的方式通过RPC请求向RM申请资源);


AM一旦申请到资源,便与对应的NM通信,要求它启动任务;


NM启动任务;


各个任务通过RPC协议向AM汇报自己的状态和进度,以便AM随时掌握各个任务的运行状态,从而在任务失败时重新启动任务;


作业在运行过程中,用户可随时通过RPC向AM查询作业当前的运行状态;


作业完成后,AM向RM注销并关闭自己。


yarn的容错性

RM可基于Zookeeper实现HA(高可用),避免单点故障;

NM执行失败后,RM将失败任务告诉对应的AM,由AM决定如何处理失败任务;

AM执行失败后,由RM负责重启(AM需处理内部任务的容错问题,保存已经运行完成的Task,重启后不用再运行).

相关文章
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
517 27
|
SQL 分布式计算 Hadoop
Hadoop生态系统:从小白到老司机的入门指南
Hadoop生态系统:从小白到老司机的入门指南
725 13
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
619 7
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
1054 3
YARN(Hadoop操作系统)的架构
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
879 1
使用YARN命令管理Hadoop作业
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
418 5
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
306 4
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
695 5
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
770 5

热门文章

最新文章

相关实验场景

更多