通俗说基于Yarn的Map-Reduce过程

叁叁肆2018-11-09 09:01

此文已由作者刘超授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验


先看全图是基于Yarn的Map-Reduce运行过程,下面通俗的说一下这个过程。


从前有一个老板Resource Manager,开了一家外包公司,这家公司有很多的团队Node,每个团队都有个经理Node Manager,每过一段时间,团队经理Node Manager都要到老板那里开会,向老板的人事部门Manage NMs的ResourceTackerService报告当前的人员使用情况。


这一天,来了一个客户Client,来到总部的接待处ClientRMService说,我有个项目,你们干不?getNewApplication


当老板觉得这个项目干得过,于是就给客户Client拿了一个号Application ID,说项目我们接,把你们的项目材料提交一下吧。


于是客户Client回去整理了一下项目的材料,将项目的具体材料,例如项目执行所需要的jars,项目的说明文档job.xml,项目的进度规划splits,上传到了同一的云盘HDFS上,然后向总部提交了申请表submitApplication。


老板Resource Manager对项目管理组Manage AMs的人说,接了项目,弄个项目经理ApplicationMaster(MRAppMaster)吧(startContainter),专门负责这个项目的对接。于是在一个团队里面Node Manager下面抽了一个人,做项目经理,然后告诉客户,以后由着项目经理进行对接了。


项目经理MRAppMaster说:是,老板!,于是走马上任registerApplicationMaster。


项目经理MRAppMaster对客户说:以后这个项目的事情,就由我来对接了,我会不断将项目进度反馈给你的getJobReport。


新官上任三把火,项目经理MRAppMaster开始撸起袖子干革命了。


第一件事情,就是从云盘HDFS上将项目资料下载下来,仔细阅读,发现这个客户要干的事情真不少,需要很多人一起干,于是按照splits里面的规划,将任务分成很多份,大家一起干MapTask,这样干的快,但是最终的结果,还是需要几个可靠的人将大家的结果收集起来,做个汇总ReduceTask,然后将项目结果也写到云盘HDFS上去,告诉客户任务执行完了,结果在云盘上,自己去看吧。


好了,项目经理MRAppMaster做好了上述的规划,开始干。


项目经理先去总部申请人头allocate,由于每个人都是算工时的,因而MapTask的部分可以先安排人,做总结汇报的ReduceTask的人还不着急。


于是总部Resource Manager经过协调部门Scheduler找到了足够的人选,然后由项目管理组ApplicationMasterService告诉项目经理MRAppMaster,团队一Node Manager手下有两个人可以干活,团队三Node Manager手下有三个人可以干活,团队七手下有一个人可以干活。


于是项目经理MRAppMaster告知各团队经理Node Manager,总部给我说了,你们说下各有N个人可以加入我的项目,开始干活了。


于是Node Manager将人分ContainerExecutor到项目组,先进行MapTask的任务,分到项目组的人不断将MapTask的结果向项目经理汇报。


当项目经理发现MapTask的任务执行的差不多了,于是向总部申请人头allocate来做汇总的工作ReduceTask。


做汇总工作的人也是从各团队分配的,也是要不断的将结果向项目经理汇报。


做汇总工作的人ReduceTask,会将MapTask的结果收集起来,做一定的处理,得到汇总的结果,写入云盘HDFS。


当结果汇总完毕,任务就结束了,项目经理告诉客户任务圆满完成,也告诉总部项目我交差了finishApplicationMaster,可以开始干下一个项目了。


有人问,有什么项目需要这样兴师动众呢?下面举几个例子。


大数据方法论之Nutch基于Map-Reduce的爬取方法

大数据方法论之PageRank的Map-Reduce计算

大数据方法论之网页消重的Map-Reduce算法



11.1—11.15云计算基础服务全场5折起

免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击