一.MapReduce 计算流程
1 首先是通过程序员所编写的MR程序通过命令行本地提交或者IDE远程提交
2 一个MR程序就是一个Job,Job信息会给Resourcemanger,向Resourcemanger注册信息
3 在注册通过后,Job会拷贝相关的资源信息(从HDFS中)
4 紧接着会向Resourcemanger提交完整的Job信息(包括资源信息)
5a Resourcemanger 会通过提交的Job信息,计算出Job所需的资源,为Job分配Container资源
5b 计算资源会分发给对应的NodeManger,NodeManager会创建一个MRAppMaster
6 MRAppMaster初始化Job
7 获取输入切片信息
8 MRAppMaster向ResourceManager 请求资源
9a 启动计算资源(连接到对应的资源所在NodeManager)
9b 启动YARN Child
10 从文件系统中获取完整的Job信息
11 启动对应的Maptask或者ReduceTask 进程,执行计算。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P6qO3erJ-1570629607821)(D:/%E5%A4%A7%E6%95%B0%E6%8D%AE/Note/Day02-Hadoop/assets/1568950626404.png)]
二 Job 提交流程(重点)
(1)建立连接
判断是在本地运行还是集群运行,分别会创建不同的运行对象 YARN | Local
(2)提交Job
1)校验空间 checkSpecs()
2)缓存处理
3)创建资源路径 Staging路径
4)获取Job ID ,在Staging路径下创建Job路径
5)拷贝相关资源到jobID路径
files
libjars
archives
jobJar
6)计算切片 生成切片规划文件
切片是一个逻辑上的概念,不会文件进行实际物理拆分,默认切分为128MB(本地为32MB)