谈笑间学会大数据-MapReduce作业运行全流程

MapReduce作业运行流程

keywords

Yarn、ResourceManager 、 ApplicationManager + Resource Schedule 、Container

一个job运行的整体流程

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

MapReduce运行在Yarn之上,其架构:
谈笑间学会大数据-MapReduce作业运行全流程_第1张图片

名称解释

ResourceManager
RM是一个全局的资源管理器,负责整个系统的资源管理与分配,主要包括两个组件:调度器Scheduler和应用程序管理器Applications Manager。

调度器接收来自ApplicationMaster的应用程序资源请求,把集群中的资源以“容器”的形式分配给提出申请的应用程序,容器的选择通常考虑应用程序所要处理的数据的位置,就近选择,实现“计算向数据靠拢”。

Container容器
动态资源分配的单位,每个容器中都封装一定数量的CPU、内存、磁盘等资源,从而限制每个应用程序可以使用的资源量。

ApplicationsManager应用程序管理器
负责系统中所有应用程序的管理工作,主要包括应用程序提交,与调度器协商资源以启动、监控、重启ApplicationMaster。

ResourceManager接收用户提交的作业(记住,hadoop中处理的用户程序都是以作业的形式来处理的,只是我们计算的时候把作业变成了一个个的map/reduce任务),按照作业的上下文信息及从NodeManager收集来的容器状态信息,启动调度过程,在NodeManager中启动一个容器为ApplicationMaster(applicationMaster的运行也占用资源,它是由resourceManager在nodeManager中启动的一个container)。

其作用是:
为应用程序申请资源,并分配给内部任务。
负责这个任务的调度、监控与容错(任务失败时重申资源,重启任务)。

NodeManager
单个节点上的资源管理,每个节点上就有一个, 监控节点上容器的资源使用情况。
跟踪节点健康状况。
以“心跳”方式与ResourceManager保持通信。
接收来自ResourceManager和ApplicationMaster的各种请求。

Yarn工作流程图

有一点点瑕疵哈,资源池换成Container容器就更好了,图是摘录的,不过感觉很清晰,很清晰,有一点点瑕疵还是能接受滴~
不过Container容器是什么呢?其实就是一些内存、CPU资源集合,其实也就是一个资源的集合嘛,个人感觉…
谈笑间学会大数据-MapReduce作业运行全流程_第2张图片

流程描述

1、客户端会向ResourceManager提交一个job作业,申请获取一个jobID,唯一de
2、ResourceManager里面的applicationManager会进行处理并返回作业ID给客户端
3、客户端会将运行所需的jar包,配置文件和分片信息等等 上传到指定hdfs路径,上传成功后向applicationManager进行汇报情况,请求执行作业。
4、application manager会将请求转发给 resource Scheduler 调度器,去申请资源
5、resource scheduler调度器会向application manager返回对应的Container、nodemanager、”圣旨“ 等信息
6、application manager会去找到nodemanager,去命令nodemanager去开辟一块container容器,并启动application master
7、applicationmaster 回去接收HDFS上传的资源及文件信息,并对其进行切片等操作,并创建map、reduce任务
8、application master会去找resource schedule去申请启动map、reduce任务
9、接收到**”圣旨“**后,会转交给nodemanager,并进行创建container以及创建map、reduce任务
10、启动完毕以后,去接收map、reduce任务的共享数据,并运行任务
11、任务运行完毕后,application master会受到信息,并发送请求给resource schedule,请求释放资源,关闭程序,完毕。

小结

  • yarn其实就是采用了分而治之的方法来进行对任务和资源的管理。资源管理和任务管理是分离的,从而更加有效的将任务更好地运行。
  • application manager 是管理application master的,application
    master才会去管理reduce、map任务的。分级制衡,负载一下,减轻压力。

如果想更加深入了解MapReduce哪些事儿,可以查看链接:https://blog.csdn.net/MrZhangBaby/article/details/98252044

你可能感兴趣的:(大数据,谈笑间学会大数据,Hadoop)