千家信息网

Hadoop 之 Yarn

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1 概述Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。2 Yarn 基本架构3
千家信息网最后更新 2026年11月01日Hadoop 之 Yarn

1 概述

Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。

2 Yarn 基本架构

3 Yarn 工作机制

工作机制详解:

1)MR 程序提交到客户端所在的节点。

2)YarnRunner 向 ResourceManager 申请一个 Application。

3)RM 将该应用程序的资源路径返回给 YarnRunner。

4)该程序将运行所需资源提交到 HDFS 上。

5)程序资源提交完毕后,申请运行 mrAppMaster。

6)RM 将用户的请求初始化成一个 Task。

7)其中一个 NodeManager 领取到 Task 任务。

8)该 NodeManager 创建容器 Container,并产生 MRAppmaster。

9)Container 从 HDFS 上拷贝资源到本地。

10)MRAppmaster 向 RM 申请运行 MapTask 资源。

11)RM 将运行 MapTask 任务分配给另外两个 NodeManager,另两个 NodeManager 分别领取任务并创建容器。

12)MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager 分别启动 MapTask,MapTask 对数据分区排序。

13)MrAppMaster 等待所有 MapTask 运行完毕后,向 RM 申请容器,运行 ReduceTask。

14)ReduceTask 向 MapTask 获取相应分区的数据。

15)程序运行完毕后,MR 会向 RM 申请注销自己。

4 作业提交全过程

4.1 作业提交过程之 YARN

作业提交全过程详解:

1)作业提交

  • Client调用 job.waitForCompletion() 方法,向整个集群提交 MapReduce 作业。
  • Client 向 RM 申请一个作业 id。
  • RM 给 Client 返回该 job 资源的提交路径和作业 id。
  • Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径。
  • Client 提交完资源后,向 RM 申请运行 MrAppMaster。

2)作业初始化

  • 当 RM 收到 Client 的请求后,将该 job 添加到容量调度器中。
  • 某一个空闲的 NM 领取到该 Job。
  • 该 NM 创建 Container,并产生 MRAppmaster。
  • 下载 Client 提交的资源到本地。

3)任务分配

  • MrAppMaster 向 RM 申请运行多个 MapTask 任务资源。
  • RM 将运行 MapTask 任务分配给另外两个 NodeManager,另两个 NodeManager 分别领取任务并创建容器。

4)任务运行

  • MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager 分别启动 MapTask,MapTask 对数据分区排序。
  • MrAppMaster 等待所有 MapTask 运行完毕后,向 RM 申请容器,运行 ReduceTask。
  • ReduceTask 向 MapTask获取相应分区的数据。
  • 程序运行完毕后,MR 会向 RM 申请注销自己。

5)进度和状态更新

  • YARN 中的任务将其进度和状态(包括 counter )返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval 设置)向应用管理器请求进度更新, 展示给用户。

6)作业完成

  • 除了向应用管理器请求作业进度外, 客户端每 5 秒都会通过调用 waitForCompletion() 来检查作业是否完成,时间间隔可以通过 mapreduce.client.completion.pollinterval 来设置。作业完成之后, 应用管理器和 Container 会清理工作状态,作业的信息会被作业历史服务器存储以备之后用户核查。

4.2 作业提交过程之 MapReduce

5 资源调度器

目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler。

[yarn-default.xml]

    The class to use as the resource scheduler.    yarn.resourcemanager.scheduler.class    org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

先进先出调度器

容量调度器

公平调度器

6 任务的推测执行

作业完成时间取决于最慢的任务完成时间,一个作业由若干个 Map 任务和 Reduce 任务构成,因硬件老化、软件Bug等,某些任务可能运行非常慢,系统中有 99% 的 Map 任务都完成了,只有少数几个 Map 老是进度很慢,完不成,怎么办?

推测执行机制

为拖后腿的任务启动一个备份任务,同时运行,谁先运行完用谁的结果

执行推测任务的前提条件

  • 每个 Task 只能有一个备份任务
  • 当前 Job 已完成的 Task 必须不小于 0.05(5%)
  • 开启推测执行参数设置,mapred-site.xml 文件中默认是打开的。

不能启用推测执行机制情况

  • 任务间存在严重的负载倾斜
  • 特殊任务,比如任务向数据库中写数据。

原理图:

任务 作业 运行 资源 程序 两个 调度 数据 应用 容器 进度 机制 管理 客户 客户端 时间 状态 用户 系统 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 上海喔噻互联网科技有限公司 互联网科技工作委员会主任 互联网 科技 成都互联网科技公司 互联网科技logo设计 互联网 视角下的科技创新 上海亿帐通互联网科技 重庆科技学院互联网 港股科技和互联网 阿大互联网科技有限公司 互联网企业科技类企业如何做账 西安有哪些互联网高科技企业 昆明中奇联合互联网科技 唯美互联网科技 互联网科技收购价值 北京互联网科技类企业分布 求路客互联网科技电话 华人运通互联网科技公司 科技互联网企业在行动 华服互联网科技怎么样 互联网公司 科技公司 甘肃拓世互联网科技有限公司 互联网软件和科技 重庆互联网医院沙龙医盟信息科技 中国航天科技大学国际工业互联网 知域互联网科技有限公司大骗子 互联网公司高科技产品 广东鹅鹅鹅互联网科技有限公司 唐山双旺合互联网科技产业园
0