Hadoop 源码学习笔记(8)--Yarn 简介

Hadoop 1.x 时使用 JobTracker 对 MapReduce 任务进行任务调度,但这样导致一个结果,部署了 JobTracker 的节点只能够支持 MapReduce 类型的任务,当需要运行其他类型的任务时,我们只能重新搭建一个计算集群去运行。

在大数据开发的过程中,我们会使用到不同的计算框架,如 Hadoop, Spark, Flink, Storm... 如果对于每一种计算框架,我们都需要去单独的部署计算集群,这将是极大的资源浪费。

为了让各种类型的任务能够运行在同一个计算集群上,Hadoop 2.x 引入了一个全新的 Module -- Yarn ( Yet Another Resource Manager )。

Yarn 对任务分配同具体计算逻辑进行了解耦,对整个分布式任务做了两种形式的抽象:

  1. 资源抽象 -- NodeManager 将自身节点的内存和 CPU 核数信息上报给 ResourceManager 进行统一管理。当需要运行任务时,在 NodeManager 中启动拥有一定内存和 CPU 核数的 Container 进行进行任务执行。
  2. 任务抽象 -- Yarn 将需要运行的分布式任务抽象为 Application,放弃对任务执行命令的介入,由 Client 自定义 的AppMaster 进行资源申请和任务执行,从而将自身同任务本身解耦,只负责资源调度,和具体任务类型无关。

通过资源抽象,简化了 Yarn 管理集群资源的复杂度,将任务启动的调度策略简化成对各个 NodeManager 中的资源分配问题。简单来说就是,Yarn 负责为 Application 提供所需要的内存和 CPU 资源,并启动独立进程运行分布式任务,但并不关心分布式任务的具体操作。

通过任务抽象,扩展了 Yarn 的使用场景,将 Yarn 从单一的 MapReduce 任务调度系统扩展成一个通用的任务调度程序。不同的使用场景下,只需要实现自己特定的 YarnApplication 即可运行分布式任务。常用的一些大数据处理程序例如 Spark , Flink 等都支持通过 Yarn 上进行任务调度。

Yarn 的组件构成

Yarn 架构

Yarn 由三个组件构成:

  1. ResourceManager(RM) 负责管理和调度整个 Yarn 集群的预算资源,同时使用和 Hdfs 中 NameNode 相同的代码,基于 ZooKeeper 实现 ActiveStandby 的高可用逻辑。
  2. NodeManager(NM) 部署在各个任务执行节点上,负责节点生命状态的上报以及具体任务的运行。
  3. YarnClient(Client) 用户创建 YarnApplication 后,通过 YarnClient 提交给 RM 进行任务调度执行。

下文中三个组件的名称将会简写为 RM, NM 和 Client。

Yarn 作业类型

之前有说过 Yarn 为了提高整个框架的通用性,将需要执行的分布式任务抽象为 Application,同时引入 AppMaster 机制令 Yarn 同任务操作本身解耦。

Yarn 中的作业类型分为两类:

  1. 普通任务类型: 分布式任务的具体执行者,当从 RM 中申请到任务资源后,会在 NM 单独启动的 Container 中运行,负责执行指定的计算任务。
  2. AppMaster: 分布式任务的协调者,每个 YarnApplication 提交到 RM 后,都会唯一的启动一个 AppMaster,负责具体组织整个分布式任务,从 RM 中申请任务资源,并协调其他任务正常运行。

AppMaster 中的协调代码是由提交的 YarnApplication 中定义的,当分布式任务开始执行时,通过不同的协调代码可以实现不同的任务类型,实现分布式任务的多样化。同时 AppMaster 和普通任务类型一样,运行在 NM 节点中的 Container 中,它的协调过程是在 NM 节点上产生的,实现了不同 Application 资源的物理隔离,使得在逻辑上单个 Application 不会对其他 Application 构成影响。

总结

Yarn 同上一代的 JobTracker 相比,主要特点是将计算逻辑同资源分配解耦。自身只关注对任务所需要的资源进行分配,具体的计算逻辑和资源请求计算交给 Application 自身完成。

剥离出计算逻辑后,Yarn 的职责更加单一,其他的计算框架也可以通过实现 YarnApplication 完成自己的分布式计算任务,使得所有类型的任务都可以在同一个计算集群中进行,提升对整个计算集群资源的利用效率。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容