大数据之Hadoop_Yarn的调度策略及Yarn的基本运行流程

Yarn的调度策略

资源调度分三种:
1.FIFO : 队列的形式调度,即这个节点中只有这一个队列,当这个队列中有个大文件在处理,处理的时间较长,这时其他的小文件就需要等待它执行完成后,其他文件文件才能执行,这种调度策略已经被淘汰.

2.资源调度 : 设置多个节点并行执行不同的任务,不会造成队列的堵塞,但是即使是一个小文件也会占用一个节点,会造成资源的浪费

3.公平调度 : 在一个节点中设两个队列,当只有一个任务在执行时,这个任务会占用所有的资源,即将两个队列都占满,但有另一个任务进来时,就会在另一个队列中根据该任务的大小划分一片区域给他执行该任务.
大数据之Hadoop_Yarn的调度策略及Yarn的基本运行流程

Yarn的基本运行流程

1.提交job任务到ResourceManager中
2.ResourceManager通过AppsMaster生成job任务的jobid到hdfs的工作目录上
2.1初始化job任务,提交配置参数到虚拟目录中
2.2计算任务切片,计算完成后,返回给虚拟目录
3.准备工作做完后,就准备请求启动程序,在启动程序前会先申请一个容器,然后ResourceManager就会通过Scheduler分配一个1.5G 1C的容器,然后将要执行的任务放入容器中,并分配一个任务给nodeManager
4.nodeManager检测到自己有有一个任务,就会领取自己的任务,然后在自己的内存中,生成一个容器.并在容器中创建一个对象MRAppMatser(job)代表一个job工作,
5.去到虚拟的工作目录中,把需要的配置信息下载过来,此时会获取到任务切分后的任务个数
6.此时就会向ResourceManager的Scheduler申请5个容器(3个mt.2个rt)
7.Scheduler就会分配5个任务到任务队列中
8.nodeManager就会领取属于自己的任务,在自己的内存中生成一个容器
9.MRAppMatser就会先让三个mt容器分别执行他们的任务,执行任务时,容器并没有直接执行,而是在容器中会创建一个YanChild去执行任务.
10.YanChild运行时会向MRAppMatser汇报自己的任务进度
11.同时MRAppMatser也会向ResourceManager汇报整体任务
12.mt任务运行完后,就会写入到本地磁盘,然后领取rt任务,创建rt容器,
13.启动rt任务,YanChild执行任务.YanChild运行时也会向MRAppMatser汇报自己的任务进度,同时MRAppMatser也会向ResourceManager汇报整体任务.任务全部执行完之后,将执行结果写入到本地磁盘.
14.释放对象,回收容器:先释放YanChild对象,然后回收nodeManager中的容器,然后释放MRAppMatser对象,回收分配任务的初始容器

大数据之Hadoop_Yarn的调度策略及Yarn的基本运行流程