一、MapReduce工作流程
二、yarn的工作机制
0、MapReduce程序提交的客户端所在的节点上。
1、客户端向ResourceManager申请一个Application。
2、ResourceManager 返回一个Application资源提交的HDFS路径和Application_id。
3、客户端将运行job的资源(job.xml、job.split、wordcount.jar) 提交到对应的HDFS路径上。
4、客户端通知ResourceManager资源提交完毕,申请运行MRAppMaster。
5、ResourceMange将用户的请求初始化为一个task,这个task进入任务调度队列中等待分配资源。
6、ResourceManager将队列中的task分配给一个空闲的NodeManager。
7、这个领到task的NodeManager开始创建Container容器,并产生MRAppMaster。
8、该Container到HDFS上拷贝资源到本地。
9、MRAppMaster向ResourceManager申请运行map task的容器。
10、ResourceManager将map task分配给其他空闲的NodeManager,然后NodeManager领到map task后创建Container容器。
11、MRAppMaster向领到map task的节点发送启动脚本,这两个NodeManager分别启动map task。
12、MRAppMaster等待所有的map task执行完后,向ResourceManager申请运行Reduce task的容器。
13、ResourceManager 分配NodeManager运行Reduce task 并创建Container容器。
14、reduce task 获取map task上对应的分区数据进行操作。
15、MRAppMaster 等待所有的任务执行完后,向ResourceManager申请注销自己。