Hadoop学习笔记(四)之YARN

小闫辛苦码了 2920 个字 

文章可能占用您 8 分钟 

欢迎关注「全栈技术精选」

今日分享

小闫同学pythonnote.cn

查看:13144回复:541

The only way of finding the limits of the possible is by going beyond them into the impossible.

——  Arthur C. Clarke

Hadoop 之 YARN,你了解吗?更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

前情回顾

Hadoop学习笔记(一)

Hadoop学习笔记(二)之HDFS

Hadoop学习笔记(三)之MapReduce

1.YARN

1.1 背景

YARN 的出现是为了解决在 Hadoop1.x 版本中存在的一些问题。

之前,MapReduce 是 Master/Slave 结构,也就是集群中一个 Job Tracker 多个 Task Tracker 。 Job Tracker 负责资源管理和作业调度,Task Tracker 负责定期向 Job Tracker 报告节点的状态(节点死活,资源使用情况、任务执行情况)以及接收 Job Tracker 的命令来执行。不知你是否发现,问题就出现在这一个 Job Tracker 上,它挂掉,整个集群都完蛋。而且它由于负责了所有节点的RPC 请求,压力可想而知,也因此成为了节点规模扩大的瓶颈。最后一点便是集群仅支持 MapReduce,不支持其他计算框架。如果想使用 Spark 呢?对不起,再搭建一个集群,想使用 HBase 只能再搭建一个集群。这样的一堆集群既不好管理,又使得资源利用率极低(一段时间内这个集群忙,那个集群闲),同时跨集群的数据转移更是问题。于是乎,YARN 诞生了。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.2 简介

1) YARN 全称是 Yet Another Resource Negotiator 「另一种资源协调者」。

2) 它是一个通用的资源管理系统。

3) 它的引入提高了集群的利用率,便于资源统一管理调度,在数据共享方面也带来了极大好处。

4) 它是 Job Tracker 的替代者。

1.3 架构

1) YARN 由四部分组成:Client 、ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。

2) 采用了 Master/Slave 结构。一个 ResourceManager 对应多个 NodeManagerClient 向 ResourceManager 提交任务或终止任务。ApplicationMaster(AM) 由对应的应用程序完成,每个应用程序对应一个 ApplicationMaster(AM) ,ApplicationMaster(AM) 向 ResourceManager 申请资源用于在 NodeManager 上启动相应的任务。NodeManager(NM) 通过心跳信息向 ResourceManager 汇报自身状态信息。MapTask 对应的是 MapReduce 作业启动时产生的任务,MPITask 是 MPI 框架对应的执行任务。

MPI 是消息传递接口,可以理解为更原生的一种分布式模型

1.4 核心组件功能

1) ResourceManager :整个集群只有一个。负责集群资源的统一管理和调度;启动或监控 ApplicationMaster (一旦某个 AM 出现故障,RM 将会在另一个节点上启动该 AM);监控 NodeManager ,接收其心跳信息并为其分配任务(一旦某个 NM 出故障,标记一下该 NM 上的任务,来告诉对应的 AM 如何处理)。

2) NodeManager:整个集群中有多个,负责单节点资源管理和使用。定时向 ResourceManager 汇报节点状态信息;接收并处理来自 ResourceManager 的 Container 启动或停止的各种命令;处理来自 ApplicationMaster 的命令。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3) ApplicationMaster :每个应用一个,负责应用程序的管理。数据切分;为应用程序或作业向 ResourceManager 申请资源(Container),并分配给内部任务;与 NodeManager 通信以启动或者停止任务;任务监控和容错(在任务执行失败时重新为该任务申请资源以重启任务);处理 ResourceManager 发过来的命令:终止 Container、让 NodeManager 重启等。

4) Container:对任务运行环境的抽象。任务运行资源(节点、内存、CPU);任务启动命令;任务运行环境;任务是运行在 Container 中,一个 Container 中既可以运行 ApplicationMaster,也可以运行具体的 MapReduceMPISpark Task

1.5 工作原理

1) 用户向 YARN 中提交应用程序/作业,其中包括 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。

2) Resource Manager 为作业分配第一个 Container,并与对应的 NodeManager 通信,要求它在这个 Container 中启动该作业的 ApplicationMaster

3) Application Master 首先向 Resource Manager 注册,这样用户可以直接通过 Resource Manager 查询作业的运行状态;然后将为各个任务申请资源并监控任务的运行状态,直到运行结束。即重复步骤(7)。

4) Application Master 采用轮询的方式通过 RPC 请求向 ResourceManager 申请和获取资源。

5) 一旦 ApplicationMaster 申请到资源,便与对应的 NodeManager 通信,要求它启动任务。

6) NodeManager 启动任务。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

7) 各个任务通过 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以便 ApplicaitonMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;在作业运行过程中,用户可随时通过 RPC 向 ApplicationMaster 查询作业当前运行状态。

8) 作业完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。

1.6 特点

1) ResourceManager 基于 ZooKeeper 实现高可用机制,避免发生单点故障。

2) Node Manager 执行失败后,ResourceManager 将失败任务告诉对应的 ApplicationMaster,由 ApplicationMaster 决定如何处理失败的任务。

3) Application Master 执行失败后,由 ResourceManager 负责重启 ApplicationMaster 需处理内部任务的容错问题,并保存已经运行完成的 Task,重启后无需重新运行。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

学习自《基于Hadoop与Spark的大数据开发实战》一书

排版:小闫

图片素材:小闫

文案:小闫

长按扫描下方二维码即刻关注小闫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值