YARN学习基础

2020-02-11 09:47:55 浏览数 (1)

YARN是当前Hadoop中非常重要的一个组件,我们可以通过本文初步了解一下YARN。

YARN是什么

YARN本质可以认为是一个集群操作系统,各种应用程序都可以通过YARN调用 Hadoop集群的计算和存储资源。YARN的诞生是基于Hadoop 1.x的一系列不足,其具备如下特性:

•支持集群扩展

•同个集群多用户并存,多用户共享节点

•计算本地化

•底层物理资源使用率高

•操作安全且可审计

•交互可靠,高可用

•支持多种编程模型,不只是mapreduce

•支持各个节点的动态资源配置

YARN的结构

YARN基本思想是把Hadoop1.x中JobTracker的资源管理、作业的调度/监控这两个职能拆分为两个独立进程:RM和AM,RM NM=分布式操作系统

这里涉及几个基本概念:

RM:resource manager,负责资源管理和调度(scheduler),以及监控任务运行

NM:node manager,节点上的任务和资源管理器,启动container并监控其资源使用,上报给RM

AM:application master,与RM协商container,应用程序的监控和重启

Container:内存、CPU、磁盘、网络等封装在一起的一个资源单位

下面是经典的YARN架构图:

YARN架构YARN架构

我们通过下边的图具体看下YARN的工作流程:

YARN工作流YARN工作流

1)用户向yarn提交应用程序

2)RM为该程序分配第一个container,并与对应NM通信,在这个container中启动AM

3)AM向RM注册,然后RM为其申请资源并监控其运行,直到任务结束

4)AM采用轮询方式向RM申请资源

5)NM为任务设置环境并运行任务

6)各个任务向AM汇报进度,失败时可以重启

7)应用程序运行完成后,AM向RM注销并关闭自己

各角色与RM的交互

1)客户端与RM的交互:提交和终止应用程序,获取应用程序、队列、集群等的统计信息

•ClientService:处理客户端与RM的所有(远程过程调用)RPC通信

•AdministrationService:单独处理管理员请求,高优先级

•Application ACL Manger:管理应用程序的ACL规则

2)应用程序与RM的通信:通过AM来与RM通信,ApplicationMaster Service响应来自所有AM的请求:

•注册新的AM

•AM的终止/取消注册请求

•认证AM请求,只传递合法请求给RM

•异步转发AM的Container的分配和释放请求给yarn调度器

3)节点和RM通信:Resource Tracker Service:

•注册新节点

•接收注册节点的心跳

•确保只有合法节点可以跟RM通信

YARN非常核心的组件是RM和NM,我们来具体看看:

RM核心组件

1)ApplicationManager:负责管理已经提交的应用程序的集合

• AM资源请求校验和转发给调度器

• 记录和管理已经结束的应用程序

• 保存一个已经结束的应用程序的缓存,便于用户请求对应的数据

2)ApplicationMaster Launcher:拉起应用程序的AM,以及通知NM清理AM

3)YarnScheduler:给正在运行的程序分配资源

4)ContainerAllocationExpirer:负责确保所有分配的Container最终被AM使用(避免闲置浪费,默认10分钟未使用则认为死亡),并在相应NM拉起

NM

本质是yarn的工作守护进程,职责包括:

•保持与RM的同步

•追踪节点的健康状况

•管理各个Container的生命周期,监控其资源情况

•管理分布式缓存(Container所需的jar、库文件等的本地缓存)

•管理各个Container生成的日志

•不同的yarn应用可能需要的辅助服务

NM组件

1)NodeStatusUpdater:向RM发送本节点可用资源信息,以及通知NM杀死正在运行的Container

2)ContainerManager:

• 接受AM启动或者停止Container的请求

• 资源本地化服务Localization,不同localresource的本地存储路径

• public:localdir/filecache

• private:localdir/usercache/username/filecache

• application:localdir/usercache/username/appcache/appid

3)Containers Launcher:维护一个线程池,用于尽快拉起Container

4)Containers Monitor:监控每个Container的资源使用率

5)Log Handler:将Container日志保存在本地或者打包上传

6)Container Executor:与底层操作系统交互,安全的方式管理Container相关进程

7)Node Health Checker Service:定期运行的脚本,进行健康检查

其他

1)RM内的中心调度器保存了应用程序的资源需求信息,帮助它为集群中的所有应用作出更优的调度

2)AM请求资源通过ResourceRequest发起

3)ResourceRequest格式:

•资源名称,优先级,资源需求,container数

•资源名称是期望资源所在主机名、机架名,*表示无特殊要求

•优先级是应用程序内部请求的优先级,优先级决定各个request的次序

4)RM与NM通过心跳通信,RM依赖NM维护集群的全局视图

==========================================割=============================================

下面是一些概念性的内容

JVM:java虚拟机

•一个JVM进程分为3个区(代),young generation、tenured generation、permanent generation,young的通过-XX:NewSize参数初始化,tenured的比率通过-XX:NewRatio设置, NewRatio为2则意味tenured的是young大小的2倍。JVM可以通过-Xms参数设置young和tenured的初始大小,并通过-Xmx将其增大到特定大小。

•young可以分为3个子区域,Eden区、第一Survivor区和第二Survivor区,当一个JVM创建时,先在Eden区创建,然后经过两个Survivor直到tenured

一些配置项

1)资源本地化相关配置,在yarn-site.xml中

•yarn.nodemanager.local-dirs:本地目录列表,逗号分隔

•yarn.nodemanager.local-cache.max-file-per-directory:每个目录最大文件数量

•yarn.nodemanager.localizer.cache.target-size-mb:本地化资源的最大磁盘空间,统计的是所有磁盘的总大小

2)资源调度相关配置,在yarn-site.xml中

•yarn.nodemanager.resource.memory-mb设置NM给container的内存

•yarn.scheduler.minimum-allocation-mb设置RM允许的最小container

•yarn.scheduler.maximum-allocation-mb设置RM允许的最大container

简单安装一个Hadoop后,一些配置项对应配置文件的简单介绍

一些配置项的对应配置文件一些配置项的对应配置文件

YARN命令

参考官网文档https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YarnCommands.html

文章参考资料来源:网络以及Hadoop权威指南

0 人点赞