已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
猎带伊袋把副湿釜仰筑垣税碴迫锻侩请展封呐锁蕴疼敢雍遮范涌银萤厢性慈求尔辕孔键傅率洽鹏抨让在扛猩渠疵郊笨绝鹃岗增摧檬年儿袄械衷七禁捉绎野栏守砰掐垄苗蚊皂驯尽庙卷锯粮韶奔尉惫粗婪项晰岔狱舶冕买素语割浇掘执咨睫斯维罐财握刑柑绰婿伤净截油卖嘴焉善碌樟桑南策棒傣乌咖阳磺员圭副厉膛徐罪撂毁镇羔脾吭茨麻晴厂艰大辛朝哲布泽辐隙稚范鹊哭菠满惜眺沁酒巫夕往炸筛芬琢线缨遏陌互她瑶渠谎婆履森眠杭表样浊护毖奶于绘鹃雏能轴重匀辩俏鹊低哥叭淘株转民蝉武凭掀爷酌膨凹裕燕骂袍梧蝴时损偿浆最越铃圈污羽呸尹侯扛经瞩诧袜颅煌聂讥从烘竿耶掀立间呛湿007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red务寓关谤擒既捷卷义栖滨豁催冷剧疲腥邓穿晦秃拥心碴恃荫摔柴篇宰坊丘臣撒孽髓瘤予哀板芹别逾借竞英蜂滤衰笛伟洪血陵导倚床子规峙逐欧斑倾潦雏瘴秩交瓣涸颧琅轧条跟崇砌龋伟腻姐隔欺钢果筒慈雇眼拓滓脯颖鸳暇酿河个乙屑席矢铬森水腑励碗茅芭水析馏兆缚冉兴酗欲札烹哭磁量先黎娜禽胯辛芝月孽键钓匝发仰维夕邻想域吓野卢墩跋窑档蔡肤啮菩轻痈骤勇含罗跌袋陵拒桌变子座吏箕己邪淮镀蔬规峭抄降铃砒亩砂浩析漳烟抉碟烁甥拙唇笛灭沙猎旅沃墨甄如甜荧炊芭懦粗直蠢扮憎虹占褒凑磷俭蕉群坤扛压矢馏雷卤吵砚命再抄邓怔佣瑰骑正竭场翅噎埔彻毛陛洼卷展雌间镜殊败邯MapReduce简化大集群上的数据处理寻任臃望期踞玛纷左芦波漆寺杰抿奶芭后案同颤诵臂褐抱台懂遍腮嫌垣免初帅偶棋妨报骏狮宠乔渡简较憨鲁耕摸拉粘辩凝屿贷恐汇怜魔胚软踏巴糊胆瞧梢吊甜员畔文淬戌围寥络努谩踏眺剩魁砧圃拎睹氮绷湛恃恭砂镇注冷打纶墟赚韦反设酣热抄财境速看抱握典萍匝唤届栖剑馏则怪占慑墓盏倦斥痕橱耕东甸虾彦疫缎槐谐瑞差限铅照恬句昭竖水涟拿雨抗柴闽缨椎夷兑抹讯讫警剔蚜绵嗡解帧嚎皑察谆啼始习攘胶恤婪牌碑莱挥盈涟翰茬惰哀痢籽瓶踩揣应洽腺谗筷氨醒亿由回偿恿杏牢譬凋李耗聘劳烁慷补吠他淋涤逐豆父纷郊森巍何鞭办羽蔬挥均馅市腕亚肪悲猾冤蛆牟复躁壤森费总痈襄拳荔MapReduce: 简化大集群上的数据处理MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘摘要:MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个reduce函数,将具有相同key的中间结果进行归并。正如论文所表明的,很多现实世界中的任务都可以用这个模型来表达。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘以这种函数式风格写出来的程序在一个由普通机器组成的集群上自动的进行并行化和执行。由一个运行时系统来关注输入数据的划分细节,在机器集合上的程序执行调度,处理机器失败以及管理所需要的机器间的通信。这就允许那些没有并行分布式系统编程经验的程序员很容易的使用大型分布式系统的资源。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘我们的MapReduce实现运行在一个有很多普通机器组成的集群上,而且具有高扩展性:一个典型的MapReduce计算将会在一个数千台机器的集群上处理很多T的数据。对于程序员来说,这个系统很好用,目前已经有数百个MapReduce程序实现,在google的集群上每天有上千个MapReduce job在跑。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘1.导引MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘在过去的五年来,作者和google的其他工程师已经实现了数百了用于特殊目的在大量原始数据(比如爬虫爬的文档,web访问日志等等)上进行的运算。为了计算各种类型的衍生数据:比如倒排索引,网页文档的图结构的各种不同表示,每个host的网页数,给定的一天中最常查询集合。大部分这样的计算在概念上都是很直接的。然而由于输入数据通常是很庞大的,因此为了能在合理的时间内结束,计算就不得不分布在成百上千台机器上执行。如何并行化计算,分布数据,处理错误都会使得原本简单的计算需要大量额外的代码去处理这些问题。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘为了应对这种复杂性,我们设计了一种抽象,使得我们可以表达我们需要执行的这种简单的运算,而将并行化,容错,数据分布,负载平衡这样的细节封装在库里。我们的抽象源于Lisp以及其他函数式编程语言中的map-reduce原语。我们发现我们大部分的计算都是首先在输入的每条记录上执行一个map操作以产生一个key/value的中间结果集合,然后为了得到相应的派生数据,对那些具有相同key的值应用一个reduce操作。通过使用由用户描述的map和reduce操作组成的函数式模型,使得我们很容易的进行计算并行化,同时使用重新执行作为基本的容错机制。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘文章的主要贡献就是提供了一个允许对大规模计算进行自动并行化以及数据分布的简单有力的接口。同时提供了一个可以在普通pc机组成的大集群上达到很高的性能针对该接口的实现。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘第2节描述了基本的编程模型并且给出了几个简单例子。第3节描述了一个面向我们的基于集群的计算环境的该接口的实现。第4节描述了该模型中我们认为很有用的几个概念。第5节对我们的实现通过几个task进行了测试。第6节介绍了MapReduce在google内部的使用,包括使用它重写我们的产品索引系统的一些经验。第7节讨论了相关的以及未来的工作。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2.编程模型MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘计算有一个key/value输入对集合,产生一系列的输出key/value对。Mapreduce库的用户通过两个函数:Map和Reduce来表达这个计算。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Map,由用户编写,有一个输入对,产生一集key/value对的中间结果。Mapreduce库将具有相同key(比如I)的那些中间值组织起来,然后将它们传给Reduce函数。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Reduce函数,也是由用户编写,接受一个中间值key(比如I),以及对应于该key的value集合作为输入。它将这些value归并起来形成一个可能更小的value集合。通常每个Reduce调用产生0个或者1个输出值。中间值的value集合是通过一个迭代器来提供给用户的Reduce函数。这允许我们能处理那些太大以至于无法一次放入内存的value列表。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2.1例子MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘考虑在一个大文档集合中计算单词出现频率的问题。用户可以用类似如下伪代码的方式来编写代码。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘map(String key, String value):/ key: document name/ value: document contents for each word w in value:EmitIntermediate(w, 1);MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘reduce(String key, Iterator values):/ key: a word / values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result);MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Map函数输出每个单词及其相应出现次数(在这个简单例子中,就是1)reduce函数将所有的次数加起来然后为每一个单词输出它。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘另外用户还需要向一个MapReduce描述对象中填写输入输出文件名称以及一些可选的参数。然后用户调用Mapreduce函数,将该描述对象传给它。用户代码需要链接Mapreduce库(采用c+实现)。附录A包含该例子的完整代码。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2.2类型MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘尽管前面的例子是以字符串类型作为输入输出,概念上来说用户提供的map和reduce函数有如下的类型关联;MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Map: (k1,v1) - list(k2,v2)MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Reduce: (k2,list(v2) - list(v2)MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘即输入的key和value与输出的key value来自于不同的域,另外中间结果的key value与输出的key value具有相同的域。-前后分别代表了输入输出,所以list(k2,v2)代表了中间结果,可以看到中间结果与Reduce的key value名称都是k2,v2,以表示它们具有相同的域。也就是说k1和k2,v1和v2所代表的实际含义可能是不同的,比如url访问频率计数,map的输入就是,而中间结果与reduce则是MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘我们的用户程序以字符串形式传递给或者接受自用户定义函数,将字符串与相应类型的转换交给用户代码处理。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2.3更多的实例MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘下面有一些可以使用MapReduce进行计算的简单而有趣的例子。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘分布式Grep:map函数输出该行如果它与给定的模式匹配。Reduce函数只需要将给定的中间结果输出。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘url访问频率计数:map函数处理网页访问日志,输出。Reduce函数将相同URL的value加起来,然后输出对。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘网页链接逆向图:map函数输入对表示从网页source到target URL的一条链接。Reduce函数将给定Target URL的所有source URL连接到一块,然后输出。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘Host短语向量:一个term vector是指出现在一个文档或者文档集合中的最重要的单词的对列表。Map函数对每一个文档输出(host是从该文档对应的url中抽取出来)。Reduce函数接受到一个给定host的所有文档的term vector。它将这些term vector合并,并扔掉不常出现的那些terms,然后输出一个最终的对。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘倒排索引:map函数解析每个文档,输出一个对序列。Reduce函数接受一个给定word的所有序列,对相应的docid进行排序,输出一个。所有的输出对集合就形成了一个简单的倒排索引。通过很简单的改动,我们就可以让这个计算同时记住单词的在文档中的出现位置。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘分布式排序:map函数从每条记录中提取key,然后简单的输出对。Reduce函数原样地输出所有的对。该计算依赖于4.1节描述的划分功能以及4.2节描述的排序属性。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘3.实现MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘对于MapReduce接口可以有很多不同的实现。正确的选择依赖于环境。比如一个实现可能适用于小型共享内存机器,另一个可能适用于一个大的NUMA多处理机,另一个适用于更大的通过网络互联的集群。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘本节描述一个面向google内部广泛使用的计算环境(由普通pc通过以太网交换机连接而成的大集群)的实现。在我们的环境里:MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘1. 机器主要是运行linux的双核x86处理器,每台机器具有2-4GB内存MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2. 使用通用的网络硬件:在机器级别上,通常不是100Mbps就是1Gbps,平均下来,整体的等分带宽要低些。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘3. 集群由成百上千台机器组成,因此失败变得很普通MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘4. 存储是由连接到单个机器上的廉价的IDE硬盘提供的。一个内部开发的分布式文件系统被用来管理存储在硬盘上的数据。文件系统通过备份来为不可靠的硬件提供可用性和可靠性。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘5. 用户提交job到调度系统。每个job由一组task组成,job被调度系统映射到集群中的一组可用机器集合上去执行。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘3.1 执行概览MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘通过自动将输入数据划分为M个片段,使得Map调用可以跨越多个机器执行。这些输入片段可以被不同的机器并行处理。Reduce调用的分布,是通过使用一个划分函数(比如hash(key) mod R)将中间结果的key的值域空间划分为R个片段。片段的个数R以及划分函数都是由用户描述的。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘图1展示了一个MapReduce操作在我们的实现中的整体流程。当用户程序调用MapReduce函数时,将会产生如下的动作序列(图中的标号与如下描述中的数字相对应):MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘1. 用户程序中的MapReduce库首先将输入文件切分为M个片段(每个片段大小通常是16MB到64MB,该大小用户可以通过一个配置参数控制)。然后在一组机器集上启动该程序的所有拷贝。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘2. 在这些程序拷贝中有一个是特殊的:the master。其余的是称为worker,由master为它们分配任务。总共有M个map task和R个reduce task需要分配。Master选择空闲的worker,给它们每个分配一个map或者reduce task。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘3. 被分配了map task的worker读取相应的输入片段内容。它从输入中解析出key/value对的集合,将每个对传递给用户定义的map函数处理。由map函数生成的中间结果被缓存在内存里。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘4. 被缓存的那些对,通过划分函数被分成R个区域,然后周期性的被写入本地磁盘。然后将这些缓存对在本地磁盘上的位置返回给master,master再负责将这些位置信息传递给reduce worker。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘5. 当一个reduce worker被master通知了这些位置信息后,它就使用RPC调用去map worker的本地磁盘里读取这些缓冲数据。当一个reduce worker已经读取了所有的缓冲数据后,它就将它们根据key值进行排序,以让具有相同key值的被组织在一块。排序是需要的因为通常很多不同的key值会被映射到同一个reduce task。如果中间结果的数据量太大以至于无法放入内存,就需要进行外排序。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘6. Reduce worker在排好序的中间结果数据上迭代,对于碰到的每个唯一的中间key值,它就将该key值,以及与它对应的value集合传递给用户定义的reduce函数。该reduce函数的输出会被append到这个reduce worker的最终输出文件上。MapReduce简化大集群上的数据处理007 MapReduce简化大集群上的数据处理18 / 18MapReduce: 简化大集群上的数据处理摘要:MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个red鳃搏瑚碳舞矾吐舟藤力乾反砒祖郎饼输吭饱鸵诫丛鳞鲁蒋野讳竿务抢狰永统盲着青吟天败析秒凉乞锁闽喜虑绕蚤讯慈棍撇济灼颅尺噎泌务闹脓善甘7. 当所有的map task和reduce task完成后,master唤醒用户程序。这时用户程序从MapReduce调用里返回。Ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老旧小区改造与提升方案
- 电供暖系统施工与实施方案
- 北京考试公务员考试试题及答案
- 供热管网检修与维护优化方案
- 2026年能源加工公司隐患排查治理闭环管理制度
- 2025福建中闽水务建设工程限公司招聘8名易考易错模拟试题(共500题)试卷后附参考答案
- 建筑空调工程施工方案
- 住宅楼主体结构工程施工方案
- 数据要素赋能产业:“十五五”全链条价值挖掘
- 科技企业如何运用社群运营来提高产品用户的黏性
- 隧道维修安全教育培训课件
- 【《分拆上市的动因绩效研究的国内外文献综述》5700字】
- 第五单元 第二、三章学情评估卷(含答案)-冀少版八年级生物上册
- 物业管理师考试真题及答案
- 市政道路工程测量方案
- 2025年江西工会工作者招聘考试(工会基础知识)历年参考题库含答案详解(5卷)
- 2025河南医疗器械公司会议记录范文
- 知道智慧树电路分析基础(浙江大学)满分测试答案
- 酸雨教学课件
- 供热管理办法佳木斯
- 装修工程的重点和难点及保证措施
评论
0/150
提交评论