运行示意图:
MapReduce程序是在Yarn上运行的,job任务还没提交到集群之前,客户端要先进行切片,默认是按照128M来切片。切片的信息会序列化成一个文件到hdfs上。接下来客户端将任务提交给了yarn集群,想让yarn集群来运行。Yarn集群又由Resource Manager和Node Manager做成,Resource Manager是管理者,Node Manager是真正要运行任务的节点。yarn接受到了客户端的请求,会要求在某个Node Manager上开辟一个容器,启动APPMaster。
这APPMaster也是个管理者,它不干活,它是分配任务,监控任务,申请资源。APPMaster申请到资源后就会通知Node Manager启动所有需要的任务。Node Manager会创建容器来运行Map Task 和 Reduce Task。各个任务会向AppMaster汇报自己的执行进度和执行状况,任务全执行完毕后APPMaster会向Resource Manager注销自己。
MapReduce工作流程:
这里值得注意的概念是shuffle过程,shuffle过程是从map输出数据开始,到reduce真正接收到要聚合的数据时。这个过程都叫shuffle过程,就是图中黄色的部分。
map处理完数据就会送到缓冲区&#x