YARN框架:资源管理器,为各类应用程序进行资源管理和调度
一、MR1---没有集成yarn框架,只包含mapreduce
主从架构:
NN:jobtracker节点(作业)--->管理所有的作业的子任务并汇总
DN:TaskTracker节点(任务)
流程:
1、client(客户端)提交一个jar到集群中
2、jobtracker拿到client提交的jar,根据拿到的jar要处理的来源,在哪些DN主机上,将jar发送到各个带有块信息的tasktracker节点(DN主机)上
3、各个tasktracker创建MapTask任务,开始计算,计算完后,还会创建reduceTask在任意一台主机上创建
4、JobTracker在执行任务过程中,会监控各个TaskTracker的执行情况(如果有执行失败的任务,将任务进行重启或者转移)。
5、TaskTracker在执行的过程中,会给一段时间汇报正在执行任务的情况,例如百分比。
6、JobTracker拿到各个TaskTracker的汇报信息进行汇总例,如百分比,反馈给用户。
--
JobTracker的主要职责:接受用户的jar;找到jar中的要用的源的块信息,并将这些jar分发的各个拥有块信息的TaskTracker节点中;监控各个TaskTracker子节点;汇总子节点信息反馈给用户。
缺点1:当job(jar)任务增加到足够多时JobTracker就会管理不过来形成一个瓶颈期
--
在JobTracker 运行时,就会制定好mapTask和reduceTask所使用的资源(内存、cpu、等)
缺点2:当提前分配好mapTask和reduceTask的资源后,有时候map任务执行的时,reduce任务还没有开始的,但是reduceTask已经把资源占用了,所以就会使集群的资源利用率低下。
二、MR2---包含yarn框架和mapreduce
主从架构:
RM:ResourceManager(负责集群资源统一管理和计算框架管理,主要包括调度与应用程序管理)
--->管理所有的作业(每一个jar对应一个作业,不做用管子任务)
解决MR1的缺点1
DN:NodeManager(节点资源管理和容器管理)
DN:ApplicationMaster/AM --->App Master(计算框架的实现、向ResourceManager申请资源通知NodeManager管理相应的资源)--->(管理所有的作业的子任务并汇总)
Container:yarn中的资源抽象,它封装了某个节点上的多维度资源(内存、cpu、磁盘、网络等)
流程:
1、client(客户端)通知RM(ResourceManger)要提交一个jar到集群中
2、RM(ResourceManger)返回给client(客户端)一个应用ID(jobID、APP_ID),RM在NM中找一个节点当作ApplicationMaster(AM、)即创建一个ApplicationMaster(AM)一个jar对应一个ApplicationMaster(AM)
3、client通过RM(ResourceManger)反馈的信息,将jar提交到ApplicationMaster(AM)
4、AM(ApplicationMaster)确定根据拿到的jar要处理的来源,在哪些DN(DATALOND)主机上,使用哪一个节点中的副本块(在哪一个主机上执行最优,通过各个子节点的资源情况判断),如果确定好使用的副本,AM(ApplicationMaster)就将对应的jar传到对接的主机上。同时AM还会向RM(ResourceManger)申请对应的资源,包含对应的container的个数和AM(ApplicationMaster)的自己的Container信息。