一、Yarn基础架构
二、 Yarn工作机制
YARN的主要组件包括:
-
ResourceManager:负责整个集群的资源管理和调度。它接收应用程序的请求并将资源分配给不同的应用程序。
-
NodeManager:运行在每个工作节点上,负责监控该节点的资源使用情况(如CPU、内存等)并向ResourceManager报告。
-
ApplicationMaster:每个应用程序都有一个独立的ApplicationMaster,负责协调和管理该应用的运行,包括资源请求、任务监控和失败处理等。
-
Container:YARN的基本资源分配单位,包含了执行任务所需的资源(如内存、CPU等)。每个Container在NodeManager上运行并执行具体的任务。
这里的调度过程有些难理解,这里给大家解释一下:
- 程序提交一个YarnRunner也就是申请一个Application,这个申请会发送给Yarn的老大:ResourceManager
- ResourceManager同意,将提交的job放到集群路径上
- 提交的job运行所需的资源:切片(决定开启几个maptask)、xml(指定任务参数)、jar包
- 提交完毕,向老大申请运行mrAppMaster
- ResourceManager 内部产生一个Task(这个任务来自一个客户端,别的客户端也会产生Task,所以这里会有FIFO的队列)
- NodeManager主动领取对应的任务
- 并且首先会创建一个container用来运行
- 将提交的job下载到本地准备工作
- NodeManager继续向老大申请运行MapTask容器
- NodeManager又领取到任务并创建对应数量的容器(不一定在几个NodeManager上)
- mrAppmaster发送程序启动脚本,对应的container开始maptask
- mrAppmaster(老二)向ResourceManager(老大)申请reduce个容器再去进行ReduceTask
- Reduce再去获取对应分区的数据,计算完成写入磁盘之后
- 老二告诉老大job完成,自动销毁自己
三、hdfs、yarn、Mapreduce三者之间的关系
图已经特别清楚了!
今天的blog就到这儿吧,下次再见!