前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yarn框架深入理解

Yarn框架深入理解

作者头像
Tim在路上
发布2020-08-05 00:03:28
4730
发布2020-08-05 00:03:28
举报
文章被收录于专栏:后台技术底层理解

我们都知道Hadoop诞生的目标是为了支持十几台机器的搜索服务,但是随着数据的增加,数据的可用性也是一个待解决的问题。但是Hadoop框架的自身问题限制了集群的发展。

首先是,JobTracker和NameNode的单点问题,严重制约了集群的扩展和可靠性。

其次我们通过:

知道。MapReduce采用了基于slot的资源分配模型,slot是一种粗粒度的资源 划分单位,通常一个任务不会用完槽位对应的资源,且其他任务也无法使用这些空闲资源,同时map的槽位和reduce的槽位是不可以通用的。会导致部分资源紧张,部分资源空闲。

同时为了满足在线计算等新的计算框架,MapReduce这种离线计算框架已经不能满足需求。

Yarn框架

JobTracker在 YARN 中JobTracker大约分成了 3 块:

  • 一部分是 ResourceManager,负责 Scheduler 及 ApplicationsManager;
  • 一部分是 ApplicationMaster,负责 job 的生命周期管理;
  • 最后一部分是 JobHistroyServer,负责日志的展 示。 为了支持更多的计算模型,把以前的 TaskTracker 替换成了 NodeManager。NodeManager 管理各种各样的 container。Container 才是真正干活的。计算模型相关的事情可以放在 NodeManager 的一个扩展服务中,如 MAP-REDUCE 的 shuffle。

各大模块分析

ResourceManager

RM 是一个全局的资源管理器,负责整个系统的资源管理和分配,包括 scheduler 和 Application Manager, NM Manager

对调度器来说,YARN 提供了多种直接可用的调度器, Fair Scheduler 和 Capacity Scheduler 等。调度器仅根据各个应用程序的资源需 求进行资源分配,分配的基本单位是Container,而容器里面是将内存,CPU,网络,磁盘封装到一起。

同时用户也可设计自己的调度器。
ApplicationMaster

对应用程序管理器来说,,包括应用程序提交、与调度器协商 资源以启动 ApplicationMaster、监控 ApplicationMaster 运行状态并在失败时重新启动它等。用户提交的每个应用程序均包含一个 ApplicationMaster,ApplicationMaster可以与RM协商获取资源,也可以将得到的任务进行再分配,与NM通信,同时可以监控所有的任务状态。

NodeManager

NodeManager 管理 container、资源下载、健康检测后汇报 对节点管理器来说,NM是每个节点上的资源和任务管理器,一方面,它会定时地向 RM 汇报本节点上的 资源使用情况和各个 Container 的运行状态;另一方面,它接收并处理来自 AM 的 Container 启动 / 停止等各种请求。

Container

Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、 CPU、磁盘、网络等,当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是用 Container 表示的。YARN 会为每个任务分配一个 Container,且该任务只能使用该 Container 中描述的 资源。容器是一个动态划分资源。

Jobhistory 机制

在 MRv1 中,JobHistroy server 是嵌入在 Jobtracker 中的,当有大量的查询 时,对 Jobtracker 造成很大的压力.Yarn中实现一套单独的 JobHistroy server 服务。AggregatedLogDeletionService:日志文件的 管理。  HistoryClientService:提供一些服务供 JobClient 查询。

Yarn工作流程

  • 1.用户向 YARN 中提交应用程序,其中包括 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。
  • 2.ResourceManager 为该应用程序分配第一个 Container,并与对应的 NodeManager 通信,要求它在这个 Container 中启动应用程序的 ApplicationMaster。
  • 3 ApplicationMaster 首先向 ResourceManager 注册,这样用户可以直接通过 ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运 行状态,直到运行结束,即重复步骤 4~7。
  • 4 ApplicationMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和 领取资源。 步骤
  • 5. 一旦 ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求 它启动任务。
  • 6. NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序 等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
  • 7. 各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以 让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。 在应用程序运行过程中,用户可随时通过 RPC 向 ApplicationMaster 查询应用程序的当 前运行状态。
  • 8. 应用程序运行完成后, ApplicationMaster 向 ResourceManager 注销并关闭自己。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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