运行图
- 客户端通过hadoop -jar的形式,运行写好的MR程序
2.客户端将任务提交到ResourceManager,并获取ResourcesManage返回的一个JobID
3.客户端得到JobId后将
①根据指定的路径,到HDFS上获取文件
②对文件进行切片,并记录切片信息
③分片信息复制到HDFS文件系统上 - 客户端将信息提交到HDFS上后,通知ResourcesManager运行该JobID的任务
- a.resourcemanager会找空闲的nodemanager
b.在此空闲NodeManager上启动一个MRApplicationMaster,用于Job任务的具体划分 - mrappmaster 会初始化这个job任务,
- mrappmaster会从hdfs上获取这个job的切块信息,以此来判断需要几个
MapTask和ReduceTask - mrappmaster划分好任务后,会请求Resourcesmanager分配资源。RM会返回一个Container,里面是分配的资源(就是让哪个节点执行哪个任务)
- a.mrappmaster根据ResourcesManager分配的NodeManager上分配具体的任务
b.相应的NodeManager节点收到此消息后,会开启一个JVM - 开启JVM后,会启动一个YarnChild线程,YarnChild去HDFS获取相应的分片信息 11. YarnChild线程启动MapTask或者ReduceTask(具体看分配的是啥了)