YARN【工作机制】

Yarn概念

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

Yarn的四大组件

        YARN 主要由 ResourceManager(整个集群资源的老大) NodeManager(单个节点资源的老大) ApplicationMaster(每个作业的老大)  Container(容器,负责运行MapTask、ReduceTask)  等组件构成。

ResourceManager(RM)

  1. 处理客户端请求,客户端请求提交一个任务,由RM来进行处理
  2. 监控NodeManager,监控所有节点的运行情况,有节点资源不足就进行处理
  3. 启动或监控ApplicationMaster,客户端提交了一个MR程序,对应启动一个ApplicationMaster,如果纸处理这个任务的节点挂了,就把这个任务交给别的节点去处理
  4. 资源的分配和调度

NodeManager

  1. 管理单个节点上的资源
  2. 处理来自RresourceManager的命令
  3. 处理来自ApplicationMaster的命令

ApplicationMaster

  1. 为应用程序申请资源并分配给内部任务
  2. 任务的监控与容错(MapTask、ReduceTask)

Container

        是YARN中对资源的抽象,封装了节点上的资源(内存、CPU、磁盘、网络等),相当于一台小型计算机。

YARN工作机制

YARN【工作机制】_第1张图片

例子:我们提交一个MapReduce程序给集群进行WordCount单词统计。

1.客户端提交MapReduce程序

job.waitForCompletion();  -> 创建一个YarnRunnner ->

2.客户端向RM申请一个Application

3. RM给客户端返回一个集群路径 以及 一个应用id(Application_id)-> 

4. 客户端提交MapReduce作业需要的资源

  • job.split,作业的切片信息
  • job.xml 作业的配置参数信息 
  • wordcount.jar 用户的业务逻辑代码

5. 客户端告诉MR资源提交完毕,申请运行MRAppMaster

6.RM将客户端的请求初始化为一个Task

        由于我们的客户端可能是多个,所以需要将每个客户端的Task都放到一个队列当中,一个一个执行。

7. NodeManager领取Task

        NodeManager领取到Task后创建容器Container(任何Task都是在容器中执行)
Container启动一个MRAppMaster进程

8. 去集群上下载job运行需要的资源到本地

9. MRAppMaster再次向RM申请MapTask容器

10. MRAppMaster创建MapTask需要的容器

        通过多个或一个NodeManager创建多个的容器,开启对应个数的MapTask(即使是多个MapTask也可能在同一个NodeManager的多个容器中)

11. MRAppMaster发送启动命令

        MRAppMaster向新开启的NodeManager发送启动命令,启动对应的MapTask,一个MapTask对应一个YarnChild进程。
        MapTask运行完毕,将数据持久化到磁盘

12. MRAppMaster创建ReduceTask需要的容器

        MRAppMaster一直监控运行的执行情况,当检测到MapTask任务执行完毕之后,立即向RM申请相应数量的容器来执行ReduceTask程序,依旧是开启相应数量的容器,在容器中启动ReduceTask,这些ReduceTask对应的进程任然是YarnChild。

13. 作业完成释放资源

        MRAppMaster检测到ReduceTask执行完毕,向RM申请注销自己,将资源(开启的所有NodeManager)全部释放

你可能感兴趣的:(Hadoop,hadoop,yarn,大数据)