前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YARN学习基础

YARN学习基础

原创
作者头像
拾荒者peanutchen
修改2020-02-11 09:47:55
6280
修改2020-02-11 09:47:55
举报
文章被收录于专栏:陈鹏小课堂陈鹏小课堂

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权威指南

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档