商城网站建设精英,wordpress建单页面论坛,百度推广好做吗,网络规划设计师2022薪资MapReduce为google分布式三驾马车之一。分别为《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。三遍论文奠定了分布式存储和计算的基础。本篇文章来说说mapreduc…MapReduce为google分布式三驾马车之一。分别为《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。三遍论文奠定了分布式存储和计算的基础。本篇文章来说说mapreduce.
一、MapReduce介绍 mapreduce将复杂的、在大规模集群的并行运算抽象到两个函数Map和Reduce。核心思想是“分而治之”。由传输key,value类型的键值对到Map,map则对这些数据根据map函数做相应的处理输出为key,Listvalue的键值对再到reduce中对value做最后的统计。这样说有点抽象。我在另一篇文章中看见一个很形象的例子 我们的目的是做辣椒酱但是有很多种类比如洋葱辣椒酱、番茄辣椒酱、青椒辣椒酱等在输入到map的过程就是将大量的原粮包含洋葱、番茄、青椒等的混合放入map中而map会根据这些品种分类、并且将其分割完成。那么此时的输出就是洋葱,List洋葱瓣、番茄、List番茄块等此时再作为reduce的输入reduce则负责最终的搅拌过程最终输出为各种辣椒酱。这个例子就很形象。
1.Map和Reduce函数表
函数输入输出说明Map k1,v1 1,hello world 2,hello Jack List(k2,v2): hello,1 world,1 hello,1 Jack,1 1.将输入的数据进一步解析成key,value对输入Map函数中进行处理 2.经过map函数输出为一批键值对。此时为中间结果 Reduece k2,Listv2 hello,{1,1} world,1 Jack,1 k3,v3 hello,2 world,1 Jack,1 reduce得到map输出的中间结果合并计算到最后的结果
在这个表中是以单词划分为例可能会疑惑为什么map的输出为LIst的键值对而reduce的输入却是k2,List,这就涉及到MapReduece的管理系统别急继续往下看。
二、MapReduce体系结构 1.client 用户编写的MapReduce程序通过Client提交到JobTracker端用户可以通过Client提供的接口查看作业运行状态
2.JobTracker也就是Master JobTracker负责资源监控和作业调度JobTrack监控所有的TaskTracker与Job的健康情况通过心跳机制来检测一旦发生问题则重新将map中处理的任务重新去完成因为map完成的任务会存放在他本地的磁盘中无法得到。那么Master会重新安排其他的Map去做。而reduce失败之后完成的任务不会再重新进行它会存放在HDFS中。JobTracker会跟踪任务的执行进度、资源使用量等问题并将这些信息告诉任务调度器TaskSchedulerTaskScheduler就会调度任务。
3.TaskTracker TaskTracker会周期性地通过“心跳”将本地节点上的情况告诉给JobTracker,同时执行相应的操作。TaskTracker使用“slot”等量划分本节点上资源量CPU、内存等。一个Task获取到slot后才有机会运行而Hadoop调度器的作用就是将各个TaskTracker上空闲的slot分配给Task使用。slot分为Map slot和Reduce slot 两种分别提供给MapTask和Reduce Task使用。
4.Task Task分为Map Task 和 Reduce Task两种均由TaskTracker启动
5.TaskScheduler则负责任务的分发以及错误发生后未完成的task的重新分发。
2.1MapReduce各个执行阶段
其中Shuffile则负责将将map的输出经过分区、排序、合并过程输出一个分区有序的文件。比如每个URL为key的键值对将他们的value合并起来组成一个统一由某个reduce来进行处理并且也是有序的。这就解决了前面所说的问题。
MapReduce应用程序执行过程: 这里参考大佬的博客MapReduce基本原理及应用 - 黎先生 - 博客园 (cnblogs.com)
同时最好可以读一遍原论文它不管是整个框架还是容错的考虑都是有提到的可以更加深入的了解整个MapReducerfeet.qrk (mit.edu)