前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起揭开 YARN 的神秘面纱

一起揭开 YARN 的神秘面纱

作者头像
Sam Gor
发布2021-10-19 14:45:01
4580
发布2021-10-19 14:45:01
举报
文章被收录于专栏:SAMshareSAMshare

我们知道MapReduce1.0,是把计算框架和资源调度框架都弄在一起了,所以Master端的JobTracker会大包大揽去执行任务,存在很多问题,比如资源分配不均、单点故障会导致整个集群不可用、没办法集成多个不同的计算框架(比如Spark、Storm)。因此,YARN的设计思路就是把原先JobTracker的资源管理调度和监控的功能剥离出来,在YARN中实现,而MapReduce2.0仅仅就是做计算框架的事情。同时,YARN还可以兼容搭建多个不同的计算框架,实现同一个集群内资源和数据的共享。

YARN系统架构中有3个核心组件:ResourceManager、ApplicationMaster和NodeManager。

1. ResourceManager

一个全局的资源管理器,负责整个系统的资源调度,包含两个核心组件:Scheduler(调度器)和Application Manager(应用程序管理器)

  • Scheduler:接收来自ApplicationMaster的应用资源请求,把集群中的资源以 Container(容器)的方式分配下去。其中,Container作为动态资源分配单位,每个容器中会封装一定数量的CPU、内存资源;
  • Application Manager:负责系统中所有应用程序的管理,主要包括了应用程序的提交、与Scheduler的资源协商、启动ApplicationMaster、监控ApplicationMaster以及失败重启。

这个组件主要实现:

1)处理客户端请求

2)启动/监控 ApplicationMaster

3)监控 NodeManager

4)资源分配与调度

2. ApplicationMaster

主要负责任务调度、监控以及容错机制,为应用程序向ResourceManager申请,并在内部进行分配。

这个组件主要实现:

1)ResourceManager接收来自用户的作业需求,按照Job的上下文信息启动调度,为用户作业启动一个ApplicationMaster。

2)ApplicationMaster会根据用户作业,与ResourceManager协商获取资源,以容器形式从NodeManager请求获得。接着ApplicationMaster会将获取的资源,进一步在内部分配给各个task任务。

3)与NodeManager保持交互通信(程序状态、资源使用情况、进度等等)

4)定时向ResourceManager发送“心跳”信息,报告资源使用情况和进度

5)当作业完成时,ApplicationMaster向ResourceManager注销容器,发送请求到NodeManager去执行注销

3. NodeManager

驻留在一个YARN集群中每个节点上的代理。负责单个节点上的资源管理,处理来自于 ResourceManager和ApplicationMaster的命令。

这个组件主要实现:

1)负责容器生命周期管理

2)监控每个容器的资源(CPU/内存)使用情况

3)以“心跳”方式与ResourceManager保持通信

4)向ResourceManager汇报作业的资源使用情况以及每个容器的运行状态

5)跟踪节点的健康状态

6)接收来自ApplicationMaster的启动/停止容器的请求

4. YARN工作流程

YARN-打横看高清图

1、用户编写客户端应用程序向YARN提交;

2、YARN中的ResourceManager负责接收和处理来自客户端的请求,为应用分配一个容器,在容器中启动一个ApplicationMaster,并且在ResourceManager内注册;

3、ApplicationMaster采用轮询的方式向ResourceManager申请资源(Resource Scheduler);

4、ResourceManager以容器的形式向提出申请的ApplicationMaster分配资源;

5、在容器中启动任务(资源的二次分配);

6、各个任务向ApplicationMaster汇报自己的状态和进度;

7、应用程序运行完成后,ApplicationMaster向ResourceManager的Application Manager注销并关闭自己,释放资源。

Reference

  1. 林子雨-大数据技术原理与应用- B站视频 https://www.bilibili.com/video/BV1EE411x7wk?p=68
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. ResourceManager
  • 2. ApplicationMaster
  • 3. NodeManager
  • 4. YARN工作流程
  • Reference
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档