专题报告参考--Map-Reduce环境下数据管理和应用.docx

专题报告参考--Map-Reduce环境下数据管理和应用.docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专题报告参考--Map-Reduce环境下数据管理和应用

Map-Reduce环境下数据管理和应用 导 师:叶小平 指导老师:范冰冰 学 生:郑凡清 张启 蔡亦彬 日 期:2014-01-30 Map-Reduce环境下数据管理和应用 摘要 网络搜索、物联网、网上商城、社交网络等一系列新兴服务促使人类社会的数据种类和规模正以前所未有的速度增长。数据从简单的处理对象开始转变为一种基础性资源。大数据的规模效应给数据存储、管理以及数据处理分析带来了极大的挑战。介绍当前业界在面对这些挑战时是如何组织、存储、管理、处理大数据。 关键词 大数据;流式计算;大规模数据库;分布式文件系统; 1 前言 云计算、物联网、社交网络等新兴服务促使人类社会的数据种类和规模正以前所未有的速度增长,大数据时代正式到来。数据从简单的处理对象开始转变为一种基础性资源,如何更好地管理和利用大数据已经成为普遍关注的话题。大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战,数据管理方式上的变革正在酝酿和发生。本文介绍了大数据处理的一些基本框架,解决大数据存储和管理的新的数据库和文件系统,并举了一些实际的应用案例。 2 计算框架-Map/Reduce 2.1 Google Map/Reduce介绍 为了计算各种类型的衍生数据:比如倒排索引,网页文档的图结构的各种不同表示,每个host的网页数,给定的一天中最常查询集合。大部分这样的计算在概念上都是很直接的。然而由于输入数据通常是很庞大的,因此为了能在合理的时间内结束,计算就不得不分布在成百上千台机器上执行。如何并行化计算,分布数据,处理错误都会使得原本简单的计算需要大量额外的代码去处理这些问题。 为了应对这种复杂性,设计了一种抽象,使得可以表达需要执行的这种简单的运算,而将并行化,容错,数据分布,负载平衡这样的细节封装在库里。抽象源于Lisp以及其他函数式编程语言中的map-reduce原语。大部分的计算都是首先在输入的每条记录上执行一个map操作以产生一个key/value的中间结果集合,然后为了得到相应的派生数据,对那些具有相同key的值应用一个reduce操作。通过使用由用户描述的map和reduce操作组成的函数式模型,使得我们很容易的进行计算并行化,同时使用重新执行作为基本的容错机制。 Map/Reduce是一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,应用到分布式计算。Map/Reduce是一个编程模式,它是与处理/产生海量数据集的实现相关。 2.2 编程模型和实现 MapReduce编程模型的原理是:利用一个输入key/value pair集合来产生一个输出的key/value pair集合。MapReduce库的用户用两个函数表达这个计算:Map和Reduce。 用户自定义的Map函数接受一个输入的key/value pair值,然后产生一个中间key/value pair值的集合。MapReduce库把所有具有相同中间key值I的中间value值集合在一起后传递给reduce函数。 用户自定义的Reduce函数接受一个中间key的值I和相关的一个value值的集合。Reduce函数合并这些value值,形成一个较小的value值的集合。一般的,每次Reduce函数调用只产生0或1个输出value值。通常我们通过一个迭代器把中间value值提供给Reduce函数,这样我们就可以处理无法全部放入内存中的大量的value值的集合。 一个作业,在提交之前,需要把所有应该配置的东西都配置好,这时用户主要是观望,当然也能起一个监督作用,惩治不能精确工作的任务。在用户在提交代码阶段,需要做的计算工作如下: 首先,书写好所有自定的代码,最起码,需要有Map和Reduce的执行代码。在Hadoop中,Map需要派生自MapperK1, V1, K2, V2接口,Reduce需要派生自ReducerK2, V2, K3, V3接口。这里都是用的泛型,用以支持不同的键值类型。这两个接口都仅有一个方法,一个是map,一个是reduce,这两个方法都直接受四个参数,前两个是输入的键和值相关的数据结构,第三个是作为输出相关的数据结构,最后一个,是一个Reporter类的实例,实现的时候可以利用它来统计一些计数。除了这两个接口,还有大量可以派生的接口,比如分割的Partitioner K2, V2接口。 然后,需要书写好主函数的代码,其中最主要的内容就是实例化一个JobConf类的对象,调用其丰富的setXXX接口,设定好所需的内容,包括输入输出的文件路径,Map和Reduce的类,读取写入文件所需的格式支持类等。 最后,调用JobClient的runJ

文档评论(0)

ziq323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档