MapReduce编程模型、方法及应用综述
2014-11-19丁智林治
丁智 林治
MapReduce编程模型、方法及应用综述
丁智,林治
(扬州市职业大学 信息工程学院,江苏 扬州 225009)
摘要:近年来,云计算作为一种新的互联网应用模式正在改变人们获取信息和服务的方式。MapReduce作为大规模数据处理的分布式计算模型,吸引了来自学术界和工业界的广泛关注,并在云计算的发展中起着决定性的作用。该文介绍了MapReduce编程模型及运行机制,并给出了基于MapReduce的一个典型应用。另外,针对MapReduce技术存在的问题提出应对措施,给MapReduce的研究人员及用户提供一定的参考。
关键词:MapReduce;云计算;云应用
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)30-7060-05
Review on MapReduce Programming Model, Method and Application
DING Zhi
(Institute of Information Engineering, Yangzhou Polytechnic College, Yangzhou 225009, China)
Abstract: In recent years, cloud computing as a new Internet application pattern is changing the way people access information and services. MapReduce, as a large-scale data processing and distributed computing model, attracts wide attention from academia and industry, and plays a decisive role in the development of cloud computing. This paper describes the MapReduce programming model and operation mechanism, and gives a typical application based on MapReduce. On this basis, several challenges and ideas are proposed as references to researchers and users.
Key words: MapReduce; cloud computing; cloud application
随着云计算技术[1]的快速发展,云计算应用不断增多,有效提升用户的大规模数据处理能力和服务体验。MapReduce 编程模型作为云计算的核心技术之一,实质上是一种分布式编程模型,它的设计初衷与大规模数据处理有关。目前大规模数据处理常用的方法是并行计算,它将运行于大规模集群上的并行计算抽象成Map和Reduce两个过程,抽象过程简单,但显示出惊人的计算能力,通过从复杂的实现细节中提取简单的业务处理逻辑,提供了一系列简单强大的接口,通过这些接口大规模计算自发的并行和分布执行,使得开发人员不需要并行计算或者分布式的开发经验就可以高效的利用分布式资源。MapReduce分布式编程模型被Yahoo、Amazon、淘宝等知名IT企业广泛应用于日志分析、广告计算、科研实验和搜索等。同时,中科院、清华大学国内知名大学也进行了深入的研究[2]。
1 MapReduce相关技术
1.1 MapReduce概述
Google 每次搜索的后台数据处理量都是惊人的,而且随着时间推移,数据规模越来越大,计算量也随之增大[3]。开发人员编写大量程序用于数据挖掘,如爬虫、Web 请求、查询请求等,这些操作都是基于海量的原始数据,如何有效利用海量数据是一笔巨大的财富。同时,处理海量不同类型的派生数据的成本和时间是受限的。大规模计算虽然在概念上容易理解,但实际操作随着数据量的增长复杂度呈指数级增加,因此,需要分给大量的计算机共同执行才能在有限的时间内完成[4]。如何实现并行计算,分发数据,容错和调度等操作,原本看似容易的计算变得异常困难,需要大量复杂的编程来实现,又由于简单的计算在大规模数据时会变得复杂且难以控制。为了更加有效的处理此类问题,Google 提出了MapReduce 编程模型[5],MapReduce 借鉴了函数式程序设计语言的设计思想,把处理并发、容错、数据分布等细节抽象到一个库里面,可以很好地处理并行化、容错、数据分布、负载均衡等操作的融合。
1.2编程模型
MapReduce编程模型[6]是根据这个框架提供的两个编程接口Map和Reduce来命名的,将数据处理分为Map和Reduce两个阶段,大大简化数据处理过程,如图1所示。一系列key/value作为每个阶段的输入和输出,key/value类型由用户自行确定,同时还需要指定Map函数和Reduce函数,在Map阶段,程序处理大量的输入数据并得到一系列的key/value,就是一个key名称与一个value相对应。而这些由Map阶段得到的所有key/value,在Reduce阶段中,会根据具体的Reduce方法,把与同一key对应的所有value进行一个自定义的聚合运算,从而得到一个最终结果。
图1 MapReduce模型
1.3 MapReduce 关键特性
1.3.1 推测执行
推测执行是指某个节点任务运行比预期慢的时候,检测执行慢的任务,并启动一个相同的任务作为备份。推测执行在一个作业的所有任务启动完后才启动推测执行的任务,并且只针对那些已经运行一段时间(至少一分钟)且比作业中其他任务平均进度慢的任务。一个任务完成后,任何正在运行的重复任务都将被中止。
1.3.2 容错机制
MapReduce 是被设计用于成千上百台机器上的海量数据处理,因此,它的函数库还要考虑机器故障的容错问题。控制节点会定时ping每个工作机器,如果在一定时间内没有得到该机器响应,则可认为该机器失效。主控制程序需要把所有节点上的任务重新执行一次,才能完成MapReduce 操作。客户端可检测到控制点失效,并根据需要重启MapReduce操作。
1.3.3 存储本地化
在MapReduce分布式计算过程中,网络资源相对稀缺。MapReduce控制节点有输入文件组的位置信息,并尝试在包含相应输入数据块的机器上分配Map任务。如果不能分配,它就尝试分配Map任务到尽量靠近这个任务的输入数据的机架上执行,还是不能的话,就从不同的机架上检索数据。当在一个足够大的集群上运行MapReduce操作的时候,大部分输入数据都是在本地机器读取的,这一过程并不占用网络带宽。
1.3.4 Combine(本地化Reduce)
Combine操作对map映射操作后产生的中间结果key/value进行初步处理,使之按实际的Reduce要求有序,能有效提高后续全局Reduce操作的速度。一般情况下,用户都会提供一个自定义的Combiner类,这样Map过程所产生的中间结果key/value不会马上写到输出,而会在被收集到列表中,当缓冲区内的key/value达到一定数量时,缓冲区内数据会被清空转移到Combiner类的Reduce方法中,最后每个key对应的value列表将会以key/value的形式输出。
2 MapReduce实现
2.1 运行机制
MapReduce的工作流程如图2所示,整个模型的最上层有四个实体[7]:客户端负责向MapReduce框架提交作业;作业追踪器全权负责调度作业的运行,作业追踪器是一个java应用程序;任务追踪器,作业被分成多个切片,任务追踪器负责运行输入切片数据,任务追踪器是一个Java应用程序,负责具体任务的执行;分布式文件系统(HDFS)提供存储功能,用于向所有的节点共享作业所需的资源。
图2 MapReduece工作流程
MapReduce作业提交后,runJob()方法会调用submitJob()方法并将作业提交给作业追踪器。然后runJob()方法不断循环了解作业的实时运行情况(步骤1) ,如果发现作业运行状态有更新,便把状态报告给作业追踪器。通过JobTracker.getNewJobId()方法向作业追踪器请求当前作业的ID(步骤2) ;在获取各个路径信息时会检查作业的对应路径。如果输入输出目录不存在,会将错误信息返回给MapReduce程序。计算作业的输出划分,并将划分信息写入分块文件,如果无法写入就返回错误信息给MapReduce程序;将运行作业所需的资源,包括作业的JAR文件、配置文件和计算所得的输入划分,复制到作业对用的分布式文件系统HDFS中。(步骤3) ;通过调用JobTracker.submitJob()方法来真正提交作业,并告知作业追踪器准备执行作业(步骤4) ;作业调用JobTracker.submitJob()方法后,作业追踪器会将此调用放入内部的变量中,然后采用先进先出方式进行调度,当作业被调度执行时,作业追踪器会创建一个代表该正在运行的作业的对象,并在对象中封装任务和记录信息,用于跟踪任务的状态和进程(步骤5) ;作业追踪器首先从HDFS中获取作业对应的分块信息(步骤6) ,为分配Map任务做准备,然后创建并初始化Map和Reduce任务,最后创建两个任务初始化Map和Reduce任务,同时指定任务的ID;任务追踪器作为单独的JVM会执行一个简单的循环,主要任务是每隔一段时间向作业追踪器发送心跳(heartbeat),告诉作业追踪器此任务追踪器是否存活是否准备执行新任务,如果有待分配的任务,作业追踪器会为任务追踪器分配一个任务,并将分配信息在心跳通信的返回值中返回给任务追踪器,任务追踪器从心跳的返回值中得知自己要做的事情(步骤7) ;在任务追踪器分配到新任务后,就要在本地执行任务。首先,通过localizeJob()方法完成任务本地化(步骤8) ;然后,launchTask()方法会为任务创建本地工作目录,并把JAR文件中的内容解压到这个文件夹下(步骤9) ;最后,启动TaskRunner来执行任务;最后,TaskRunner又会启动一个新的JVM来运行每个任务(步骤10) ;所有任务追踪器任务的执行进度都会汇总到作业追踪器,当作业追踪器接收到最后一个任务完成的通知时,把作业状态设置为成功,用户也会被及时告知作业完成。
2.2 应用实例
为了更清楚地描述MapReduce编程模型,图3给出了计算每年的最高气温[8]的程序伪代码。在图3所示的map函数中,首先提取年份和气温信息,生成Key-Value对形式,并将它们发送到临时空间,再通过MapReduce中间处理过程,这一处理过程中根据Key对Key-Value对进行分组,使每一年份后紧跟一系列气温数据。而每一个Reduce函数则只需遍历整个列表并找出最大的数,这个结果就是每年的最高气温[9]。
[1:map(String input_key, String input_value): \&2: // input_key: document name\&3: // input_value: document contents\&4: for each year y and temperature t in input_value:\&5: EmitIntermediate(y, t);\&6:reduce(String output_key, Interator intermediate_values):\&7: // output_key: year\&8: // intermediate_values: a list of temperature\&9: int maxValue = Interger.MIN_VALUE;\&10: for each t in intermediate_values:\&11: maxValue =Math.max(t);\&12: Emit(year, maxValue);\&]
图3 基于MapReduce的每年最高气温程序举例
MapReduce执行过程分为Map和Reduce两个阶段,如图4所示。Map和Reduce之间包含分类阶段,主要作用是将相同的key的中间结果交给同一个Reduce函数执行。
图4 MapReduce处理的执行过程
3 MapReduce应用研究现状
自Google MapReduce发表以来,业界和学术界掀起了MapReduce研究的热潮[10]。Tyson等对数据传输进行了改进,使MapReduce内部数据流水线传输,这种改进的MapReduce框架可以减少任务完成时间和提高系统的可用性,其他研究机构也对MapReduce的应用进行了深入的探讨和开发,下面针对大规模数据处理、并行计算、大规模数据的统计分析、数据挖掘、信息检索等进行分类阐述。
在大规模数据处理方面,Jaliya等利用MapReduce对高能物理数据进行分析,实现了基于MapReduce的Kmeans聚类,最后提出了数据流式处理模型CGL-MapReduce,有利于基于MapReduce的数据密集型科学计算;Michal等在语义标注解决方案Ontea的基础上,引入MapReduce架构对大规模网页进行自动语义标注,实验取得很好的性能表现,这种模式还可以用于网页地图的地理信息标注;Liu等提出了基于MapReduce的分布式非负矩阵分解用于分析网页二元数据,结果表明基于MapReduce分解有数十亿非零值的一亿个矩阵是可行的;Gaggero等利用MapReduce处理生物信息学数据,分别是计算相对简单的大规模数据,和数据量稍小的复杂计算,结果都是可行的。
在并行计算方面,Andrew等提出基于MapReduce的并行粒子群优化MRPSO,结果表明粒子群优化可以很好的适应MapReduce编程模型;Daniel等提出了基于MapReduce的XML处理管道并行化,通过一些新的策略把XML管道编译到MapReduce网络中,结果表明XML管道的执行时间大大缩短; Jin等提出了基于MapReduce的两层reduce阶段的模型MRPGA,可以自动并行化遗传算法,为迭代类算法使用MapReduce有了新的认识。
在数据统计分析方面, Abouzeid等提出的HadoopDB通过结合MapReduce和并行数据库系统用于大规模数据处理,利用MapReduce的可扩展性、容错性和灵活性的优势,再利用并行数据库性能和效率上的优势;Facebook的数据仓库Hive、Yahoo的Pig和Turn的Cheetah都是运行在Hadoop上开源系统,支持类SQL的数据查询,类SQL语言有HiveQL和Pig Latin,它们的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算,来简化MapReduce处理大规模数据的编程。
在数据挖掘方面,Liu等提出了基于MapReduce的BP神经网络MBNN用来处理大规模移动设备数据的聚类,还引入Adaboosting机制改善聚类性能; Zhao等提出基于MapReduce的并行Kmeans聚类算法,通过speedup, scaleup, sizeup来评估性能,结果显示可以在普通计算机上有效地处理大数据集; White等把MapReduce用于图像处理,包括分类器训练、背景提取和图像配准等,为MapReduce用于可视化数据处理奠定了基础。
在国内,基于Mapreduce的研究基本上可以分为高性能MapReduce、基于MapReduce框架的优化和基于MapReduce的数据挖掘算法;复旦大学把MapReduce用于具有重要现实意义的科学计算,并对科学计算中遇到的一些典型问题提出相应的优化方案;中国科学技术大学提出的HPMR(High Performance MapReduce)是专为高性能计算,尤其是并行科学计算而设计开发的,通过MapReduce模型隐藏了与并行有关的繁琐技术细节,程序员只需编写计算代码,所有与数据组织、任务并行和通信有关的功能都交给HPMR的运行时系统去完成;浙江大学和中山大学等对基于MapReduce的数据挖掘算法进行了研究;上海交通大学和北京邮电大学等对MapReduce框架进行了改进,实现MapReduce框架的通用性或用于具体的某一方面的数据处理。
4 MapReduce 挑战与对策
目前,对于云计算中研究基本集中在MapReduce模型改进,在MapReduce模型总体架构的研究较少,而MapReduce编程模型的瓶颈主要在于架构上过多地依赖于任务节点,从而导致整个系统的稳定性和可用性受到限制[11]。目前 MapReduce 仅适用于内部松耦合且可以高度并行化的应用程序,如何使这种模式高效的运行在紧耦合应用程序的情况,是这种编程模式以后的发展趋势。表1给出了主要存在的一些挑战问题及克服相应问题的对策。
表1 MapReduce的挑战及对策
[挑战\&主要内容\&改进\&单jobtracker (任务管理节点)\&架构上过多地依赖于jobtracker节点的执行效率,从而受限于jobtracker节点\&多jobtracker;
把一些处理任务转移到tasktracker节点\&不适合处理紧耦合应用\&Map和Reduce任务之间都不能通信,更不用说两种任务相互通信,不适合处理紧耦合的科学计算\&Map任务、Reduce任务和Map任务、Reduce任务之间可以协同处理\&不适合处理大量小文件\&小文件产生的元数据会占用主节点的大量内存,过量时主节点会遇到内存瓶颈问题;如果访问大量小文件,需要不断的从一个jobtracker跳到另一个tasktracker,处理大量小文件速度远远小于处理同等大小的大文件的速度。其次,每一个小文件要占用一个任务,而任务启动将耗费大量时间甚至大部分时间都耗费在启动任务和释放任务上。\&把小文件合并成大文件再处理,比如Sequencefile,Mapfile\&蛮力算法\&MapReduce没有索引,在处理存取操作时使用蛮力算法,效率很低,DBMS使用散列或者B树索引加速数据存取。\&应用索引策略,如B树,散列,多级索引等\&不适合实时应用\&一个主搜索引擎可能每秒钟处理成千上万次查询,用户需要低延迟、高可靠的反馈。MapReduce很难满足需求。\&数据进行流式处理,还可参考分布式数据处理系统Percolator\&]
5 总结与展望
MapReduce 分布式计算模型在众多应用领域具有较好的性能表现,如何在这种编程模式上进一步提高系统的处理能力已成为当前业界非常关注的问题。比如MapReduce的单jobtracker节点的问题,需要MapReduce的jobtracker彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷,Yahoo也已经开始重构MapReduce来解决瓶颈;由于Map、Reduce任务之间不能通信,MapReduce不适合处理紧耦合的科学计算,适合并行处理一些松耦合的简单计算,可以通过改进框架来实现Map、Reduce任务之间的协同处理;由于小文件产生的元数据会占用主节点的大量内存,而且每一个小文件要占用一个任务,而任务启动和释放将耗费大量时间,可以采用Sequencefile方式等把小文件合并成大文件再处理;DBMS都使用散列或者B树索引加速数据存取[12],如果要寻找记录的某个子集,使用索引可以有效地将搜索范围缩小一到两个数量级,而且,还有查询优化器来确定是使用索引还是执行蛮力顺序搜索,MapReduce没有索引,因此,处理时只有蛮力一种选择,在存取数据时,MapReduce表现出很多的不足,结合Hive和Pig等技术可以很好地解决这个问题。
当前,云计算中使用的分布式计算模型基本上是MapReduce编程模型[13],MapReduce应用研究较多,在分析MapReduce编程模型的基础上,提出了如下的研究内容:
1) 研究MapReduce架构算法,通过重构MapReduce模型来解决内存瓶颈,优化存取机制,适用紧耦合科学计算等;
2) 将MapReduce模型应用于遗传算法,蚁群算法,神经网络等智能算法;并将MapReduce模型应用到数据挖掘算法中,比如k-means,SVM,朴素贝叶斯算法等;
3) 将MapReduce应用到数据的统计分析中,提高数据存取效率,采用高级语言来执行数据处理。
4) 将MapReduce模型应用到一些紧耦合的数值计算中,先前通过高性能计算来完成的应用,比如气象,核模拟,生物信息学等。
参考文献:
[1] Michael Armbrust,Armando Fox.Above the Clouds: A Berkeley View of Cloud Computing[M].UC Berkeley Reliable Adaptive Distributed Systems Laboratory,2009.
[2] Jeffrey Dean,Sanjay Ghemawat.MapReduce:a flexible data processing tool[J].Communications of the ACM, 2010,53(1):72-77.
[3] 王鹏.云计算的关键技术与应用实例[M].北京:人民邮电出版社,2010.
[4] Jeffrey Dean,Sanjay Ghemawat.MapReduce:Simpli?ed Data Processing on Large Clusters[J]. Communications of the ACM, 2008,51(1): 107-113.
[5] 刘鹏.云计算[M].2版.北京:电子工业出版社,2011.
[6] Ralf L?mmel.Googles MapReduce programming model — Revisited[J].Science of Computer Programming, 2008,70(1):1-30.
[7] Tom White. Hadoop权威指南[M].北京:清华大学出版社,2010.
[8] 常涛.改进型 MapReduce 框架的研究与设计[D].北京:北京邮电大学,2011.
[9] 方巍,文学志.云计算:概念、技术及应用研究综述[J].南京信息工程大学学报:自然科学版,2012,4(4): 351-361.
[10] 陈康,郑纬民.云计算: 系统实例与研究现状[J].软件学报, 2009,20(5):1337-1348.
[11] 周一可.云计算下MapReduce 编程模型可用性的研究与优化[D].上海:上海交通大学,2011.
[12] 王晟,赵壁芳.云计算中MapReduce 技术研究[J].通信技术,2012,44(12):59-161.
[13] Tyson Condie, Neil Conway, et al. Hellerstein. Mapreduce online[C].USENIX Symposium on Networked Systems Designand Implementation,2010:21-35.endprint
5 总结与展望
MapReduce 分布式计算模型在众多应用领域具有较好的性能表现,如何在这种编程模式上进一步提高系统的处理能力已成为当前业界非常关注的问题。比如MapReduce的单jobtracker节点的问题,需要MapReduce的jobtracker彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷,Yahoo也已经开始重构MapReduce来解决瓶颈;由于Map、Reduce任务之间不能通信,MapReduce不适合处理紧耦合的科学计算,适合并行处理一些松耦合的简单计算,可以通过改进框架来实现Map、Reduce任务之间的协同处理;由于小文件产生的元数据会占用主节点的大量内存,而且每一个小文件要占用一个任务,而任务启动和释放将耗费大量时间,可以采用Sequencefile方式等把小文件合并成大文件再处理;DBMS都使用散列或者B树索引加速数据存取[12],如果要寻找记录的某个子集,使用索引可以有效地将搜索范围缩小一到两个数量级,而且,还有查询优化器来确定是使用索引还是执行蛮力顺序搜索,MapReduce没有索引,因此,处理时只有蛮力一种选择,在存取数据时,MapReduce表现出很多的不足,结合Hive和Pig等技术可以很好地解决这个问题。
当前,云计算中使用的分布式计算模型基本上是MapReduce编程模型[13],MapReduce应用研究较多,在分析MapReduce编程模型的基础上,提出了如下的研究内容:
1) 研究MapReduce架构算法,通过重构MapReduce模型来解决内存瓶颈,优化存取机制,适用紧耦合科学计算等;
2) 将MapReduce模型应用于遗传算法,蚁群算法,神经网络等智能算法;并将MapReduce模型应用到数据挖掘算法中,比如k-means,SVM,朴素贝叶斯算法等;
3) 将MapReduce应用到数据的统计分析中,提高数据存取效率,采用高级语言来执行数据处理。
4) 将MapReduce模型应用到一些紧耦合的数值计算中,先前通过高性能计算来完成的应用,比如气象,核模拟,生物信息学等。
参考文献:
[1] Michael Armbrust,Armando Fox.Above the Clouds: A Berkeley View of Cloud Computing[M].UC Berkeley Reliable Adaptive Distributed Systems Laboratory,2009.
[2] Jeffrey Dean,Sanjay Ghemawat.MapReduce:a flexible data processing tool[J].Communications of the ACM, 2010,53(1):72-77.
[3] 王鹏.云计算的关键技术与应用实例[M].北京:人民邮电出版社,2010.
[4] Jeffrey Dean,Sanjay Ghemawat.MapReduce:Simpli?ed Data Processing on Large Clusters[J]. Communications of the ACM, 2008,51(1): 107-113.
[5] 刘鹏.云计算[M].2版.北京:电子工业出版社,2011.
[6] Ralf L?mmel.Googles MapReduce programming model — Revisited[J].Science of Computer Programming, 2008,70(1):1-30.
[7] Tom White. Hadoop权威指南[M].北京:清华大学出版社,2010.
[8] 常涛.改进型 MapReduce 框架的研究与设计[D].北京:北京邮电大学,2011.
[9] 方巍,文学志.云计算:概念、技术及应用研究综述[J].南京信息工程大学学报:自然科学版,2012,4(4): 351-361.
[10] 陈康,郑纬民.云计算: 系统实例与研究现状[J].软件学报, 2009,20(5):1337-1348.
[11] 周一可.云计算下MapReduce 编程模型可用性的研究与优化[D].上海:上海交通大学,2011.
[12] 王晟,赵壁芳.云计算中MapReduce 技术研究[J].通信技术,2012,44(12):59-161.
[13] Tyson Condie, Neil Conway, et al. Hellerstein. Mapreduce online[C].USENIX Symposium on Networked Systems Designand Implementation,2010:21-35.endprint
5 总结与展望
MapReduce 分布式计算模型在众多应用领域具有较好的性能表现,如何在这种编程模式上进一步提高系统的处理能力已成为当前业界非常关注的问题。比如MapReduce的单jobtracker节点的问题,需要MapReduce的jobtracker彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷,Yahoo也已经开始重构MapReduce来解决瓶颈;由于Map、Reduce任务之间不能通信,MapReduce不适合处理紧耦合的科学计算,适合并行处理一些松耦合的简单计算,可以通过改进框架来实现Map、Reduce任务之间的协同处理;由于小文件产生的元数据会占用主节点的大量内存,而且每一个小文件要占用一个任务,而任务启动和释放将耗费大量时间,可以采用Sequencefile方式等把小文件合并成大文件再处理;DBMS都使用散列或者B树索引加速数据存取[12],如果要寻找记录的某个子集,使用索引可以有效地将搜索范围缩小一到两个数量级,而且,还有查询优化器来确定是使用索引还是执行蛮力顺序搜索,MapReduce没有索引,因此,处理时只有蛮力一种选择,在存取数据时,MapReduce表现出很多的不足,结合Hive和Pig等技术可以很好地解决这个问题。
当前,云计算中使用的分布式计算模型基本上是MapReduce编程模型[13],MapReduce应用研究较多,在分析MapReduce编程模型的基础上,提出了如下的研究内容:
1) 研究MapReduce架构算法,通过重构MapReduce模型来解决内存瓶颈,优化存取机制,适用紧耦合科学计算等;
2) 将MapReduce模型应用于遗传算法,蚁群算法,神经网络等智能算法;并将MapReduce模型应用到数据挖掘算法中,比如k-means,SVM,朴素贝叶斯算法等;
3) 将MapReduce应用到数据的统计分析中,提高数据存取效率,采用高级语言来执行数据处理。
4) 将MapReduce模型应用到一些紧耦合的数值计算中,先前通过高性能计算来完成的应用,比如气象,核模拟,生物信息学等。
参考文献:
[1] Michael Armbrust,Armando Fox.Above the Clouds: A Berkeley View of Cloud Computing[M].UC Berkeley Reliable Adaptive Distributed Systems Laboratory,2009.
[2] Jeffrey Dean,Sanjay Ghemawat.MapReduce:a flexible data processing tool[J].Communications of the ACM, 2010,53(1):72-77.
[3] 王鹏.云计算的关键技术与应用实例[M].北京:人民邮电出版社,2010.
[4] Jeffrey Dean,Sanjay Ghemawat.MapReduce:Simpli?ed Data Processing on Large Clusters[J]. Communications of the ACM, 2008,51(1): 107-113.
[5] 刘鹏.云计算[M].2版.北京:电子工业出版社,2011.
[6] Ralf L?mmel.Googles MapReduce programming model — Revisited[J].Science of Computer Programming, 2008,70(1):1-30.
[7] Tom White. Hadoop权威指南[M].北京:清华大学出版社,2010.
[8] 常涛.改进型 MapReduce 框架的研究与设计[D].北京:北京邮电大学,2011.
[9] 方巍,文学志.云计算:概念、技术及应用研究综述[J].南京信息工程大学学报:自然科学版,2012,4(4): 351-361.
[10] 陈康,郑纬民.云计算: 系统实例与研究现状[J].软件学报, 2009,20(5):1337-1348.
[11] 周一可.云计算下MapReduce 编程模型可用性的研究与优化[D].上海:上海交通大学,2011.
[12] 王晟,赵壁芳.云计算中MapReduce 技术研究[J].通信技术,2012,44(12):59-161.
[13] Tyson Condie, Neil Conway, et al. Hellerstein. Mapreduce online[C].USENIX Symposium on Networked Systems Designand Implementation,2010:21-35.endprint