MapReduce 2.0源码分析与编程实战

978-7-115-33237-0
作者: 王晓华
译者:
编辑: 陈冀康

图书目录:

详情

本书通过循序渐进介绍Hadoop的基本组成部分,从底层HDFS构建到MapReduce的处理过程,向读者展示了Hadoop底层存储和处理大数据的方法。通过对开源项目MapReduce的源码分析和实例解读,主要介绍了使用MapReduce进行实战程序设计方法,向读者详细说明了从使用程序进行从基础的HDFS文件的增删改查,到使用编程手段获取数据处理结果的程序方法。

图书摘要

MapReduce 2.0源码分析与编程实战

王晓华 著

人民邮电出版社

北京

王晓华,高校资深计算机专业讲师,给研究生和本科生讲授面向对象程序设计、数据结构、Hadoop程序设计等相关课程。主要研究方向为云计算、数据挖掘。曾主持和参与多项国家和省级科研课题,独立完成一项科研成果获省级成果认定,发表过多篇论文,申请一项专利。

第一次见王晓华是他来我这里做培训,我正好路过门口,听见教室笑声震天,就好奇地伸头进去看看。一个胖胖的男孩在给一群我们新招的工作人员做培训,好像是在讲代码方面的问题。可以看得出他讲得非常好,底下的听讲者都在抬着头认真听他讲课。要知道其中不乏有清华北大的佼佼者,而他,却能够轻车熟路的引导他们的思路,驾驭整个课堂。

后来正式认识他也是机缘巧合,一位计算机专业的老同事问我有没有兴趣审阅一本云计算方面的书,当时云计算正好是IT热点,我也想乘此机会做一个了解,就欣然答应。因为我平常也做计算机方面的教学工作,对于教材好坏的敏感性是非常强烈的。有些书虽然署名是中国人,但是很多内容直接就是对外国教材的翻译,所谓翻译要做到“信雅达”,而往往连最基本的“信”都做不到,根本不适合初学者或者学生使用。因此当刚拿到这本书的初稿的时候,我也有疑虑,是不是又是一本翻译的书,他写的书我是不是能看懂。抱着这些疑问,我翻开书稿的第一页,从前言开始,娓娓道来的向我们展示了云计算编程的一个美丽而神秘的世界。全书使用浅显易懂的语句,对每个知识点进行重点分析,同时还举了大量的编程实例,向读者讲解每个类、每个语句的用法,还特别细心的对每条代码做出注释。其用心之严密,着实让人感叹。

后来我们正式见面于合肥工业大学的怡园,那天我记得很清楚,外面细雨打着蕉叶,我品着绿茶慢慢的陷入沉思。一声“杨老师”将我从思索的世界拉回现实。面前站立着一个带着眼镜,略微显得羞涩而紧张的男孩,从他那胖胖的身形,我依稀记得在哪见过面。“哦,你就是王晓华。”“嗯,是的,我是王晓华,谢谢您杨老师,抽时间给我审稿。”他首先向我表示感谢。我突然感觉也有点不好意思,因为其实我也不是太懂,部分是出于学习的目的审阅此书,而此时这个年轻人一口一个杨老师叫着,谦虚得很。

此次见面中,我们交谈甚欢,从Google的云计算谈起,谈到了Intel对Hadoop的支持,谈到了HDFS对商业存储领域产生的影响和其中蕴含商机,又谈到了MapReduce程序设计对大数据计算带来的变革。他一改初见我时青涩稚嫩的形象,夸夸而谈。可以看得出他对这行是真正用心去了解的人,也不由得使我对他刮目相看,萌生了为其作序的想法。这也就是这篇序的来历。

说了那么多下面介绍下这本书吧。本书讲的是MapReduce程序设计,这是一种面向互联网大数据处理的程序设计模型。MapReduce本身这个单词是由Map和Reduce构成,因此可以简单地将整个数据处理过程看成两个阶段,分别是“分解”(Map)以及“合并”(Reduce)。“分解”就是将整体数据分割成一个个的独立部分进行既定的处理,而原本的大数据整体并没有被修改。在进行分割处理的同时,也生成了一个专用的集合用于存储分解阶段所获得结果以供下一阶段使用。当然如果有必要,也可以在生成的集合上反复调用一些设计好的指令的,从而获得更为满意的结果。“合并”就是将生成集合内的数据内容重新合并成一个整体数据的过程,从而能够获得所需要的最终结果。

目前市面上已有一本《Hadoop权威指南第2版》,无可否认这是一部翻译的经典作品,将MapReduce程序精髓淋漓尽致的展现在读者面前。但是问题在于,最新版的Hadoop 2.0已经全面摒弃使用MapReduce 1.0的处理类和语句设计方法。因此对于学生和初学者来说,花费大量的时间去学习已经被明确放弃使用的东西,是很不合适的。而目前国内来说,这也是第一本介绍MapReduce 2.0程序设计的书籍,是对现阶段Hadoop知识体系的一个很好的补充。

我觉得,这本书是一本写给有志于致力大数据处理的人看的书,书中不仅有MapReduce程序设计的方法介绍,更多的是传递了作者对 MapReduce处理大数据理念的思考。我希望这本书能够将更多的读者和有志之士带入到大数据处理的这一条辉煌之路上来,造就更多的人才。

杨枢,计算机博士、资深讲师

我们处于一个数据大爆炸的时代。每时每刻、各行各业都在产生和积累海量的数据内容。这些数据中蕴含着进行业务活动、获取商业信息、做出管理决策的重要信息。如何处理这些数据并获取有价值的信息,是众多组织和单位面临的共同问题。而这个问题的解决又依赖两项技术,一是能够对产生的业务数据进行统一管理和综合,并且能够无限扩展存储空间;二是能够有效处理获得的海量数据,在限定时间内获得处理结果的处理程序。

因此,寻求一个合理可靠的大数据处理决方案是目前数据处理的热点与重点。很多行业领导者把对大数据的处理看成互联网之后又一个能够获得竞争优势的关键性因素,把大数据处理能力作为其核心商业竞争力加以发展。这更凸显了大数据的战略意义。

为什么要写本书

Hadoop作为应用范围最为广泛的大数据处理开源框架自然引起了广泛的关注,吸引了大量程序设计和开发人员进行相关内容的开发与学习。掌握Hadoop程序设计基本技能的程序设计人员成为当前各组织和单位热切追求的最热门人才。他们的主要工作就是利用存储和管理产生的海量数据编写相应的MapReduce程序对大数据进行处理,提取大数据中包含的潜在信息,进行数据资源的管理和对其价值进行进一步开发,为商业机会的获取、管理模式的创新、决策的制定提供相应的支持。随着越来越多的组织、单位和行业对大数据挖掘的重视,高层次的程序设计人才必将成为就业市场上抢手和紧俏的人才。

对Hadoop的掌握以掌握MapReduce程序设计为首要内容。但是由于国内翻译和知识传播的滞后性等多方面的原因,目前国内所有的关于MapReduce程序设计方面的书籍采用的依然是已经被 Hadoop 框架明确放弃使用的 MapReduce 1.0 的程序代码,缺少新一代的MapReduce 2.0程序设计的相关内容,从而造成了知识的延迟性。学习是为了掌握新知识获得新能力,不应该学习已经被摒弃的内容。

本书是为了满足广大MapReduce程序设计和开发人员学习最新的MapReduce 2.0的程序代码的要求而出版的。本书对MapReduce 2.0的组成结构与核心部分代码作了循序渐进的介绍与说明,以MapReduce 2.0源程序代码为依托,从最底层开始介绍了新一代的MapReduce 2.0程序设计模式,多角度、多方面地对MapReduce 2.0的源码和功能实现提供了翔实的分析,并结合实际案例编写了大量的应用程序设计,使得读者能够在开发者的层面掌握 MapReduce 2.0程序的设计方法和技巧,为开发出更强大的MapReduce 2.0应用打下扎实的基础。

本书的优势

本书并非单纯理论的讲解,而是笔者阅读和参考了大量最新文献作出的归纳总结,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍了MapReduce 2.0理论体系的全部知识点,并在程序编写时使用官方推荐的最新MapReduce 2.0的新型API进行程序设计,摒弃了已经被明确放弃使用的MapReduce 1.0程序设计方法,这也是Hadoop程序设计的大势所趋。

本书通过深入分析MapReduce 2.0源码,从源头向读者展示了MapReduce 2.0程序设计的优雅,在此基础上进行相应代码的开发,更好地帮助读者理解和掌握MapReduce 2.0程序设计的精妙之处。

作者认为,大数据处理和分析人才应在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,本书结合作者在实际工作中遇到的大量实际案例进行分析,抽象化核心模型并给出具体解决方案,全部程序例题均提供了相应代码供读者学习。

本书有什么内容

本书共分为 10章,所有代码均采用MapReduce 2.0版本。如果不作特别说明,本书所有MapReduce都指MapReduce 2.0。

第1章介绍了Hadoop的基础知识,初步介绍了其应用范围,旨在说明使用Hadoop对“大数据”进行处理是目前数据处理的方向,也是必然趋势,同时向读者展示了Hadoop能为使用者带来的解决方案和应用效果。

第2章介绍了HDFS概念、架构,说明了HDFS存储海量数据和对数据进行备份的方法,并通过多条程序代码说明了使用MapReduce 2.0自带的API进行编程的方法。读者在学习完第2章后可以使用提供的相关API进行针对HDFS的程序设计。

第3章全面介绍了MapReduce的基本IO系统,介绍了其数据传输压缩格式以及基本数据类型。通过源码分析向读者透彻而准确地展示了其基本数据结构的构成与应用方式,为实现自定义的MapReduce数据类型打下扎实的基础。同时,书中代码很好地演示了如何在自定义数据类型的基础上提供进阶比较方法的程序设计,为后文对数据排序提供帮助。

第4章开始进入MapReduce编程部分,也是本书核心内容的开始。该章详细介绍了MapReduce 的程序设计框架结构,从输入开始,循序渐进地介绍了各个部分处理过程,对核心源码展开分析,从专业开发者的视角向读者剖析了MapReduce运行框架结构,通过大量代码进行演示,为源码分析提供佐证,并将输入输出和运行分成若干部分进行详细讲解。在学完第4章后,读者可以编写一个简单的MapReduce数据处理程序。

第5章是对MapReduce测试方法的介绍,首先介绍了基于传统JUnit的MRUnit测试方法;其次着重讲解了基于本地系统的模拟集群环境的测试方法;最后向读者演示了将程序上传集群进行测试的方法。通过编写实例程序讲解了对集群环境下输出信息归类和整理的方法,以及通过Web接口查看最终内容的方法。

第6章介绍了MapReduce的运行流程,讲解了经典的MapReduce运行流程和新一代的YARN(MapReduce 2.0)运行流程,从加载任务的初始化开始,循序渐进地介绍了各部分运行流程和数据处理的方法,最后对异常结果的处理作了分析和总结。

第7章通过划分多个小节内容向读者介绍了MapReduce的高级程序设计内容。此部分主要是程序代码设计内容,旨在教会读者编写自定义的输入输出格式,并通过分析源码实现MapReduce程序设计中所涉及的必不可少的自定义输入输出格式的设计。

第8章介绍了更多MapReduce程序设计的细节和处理方法,从而能够实现更多的程序功能。从计数器开始到对输出值进行排序和查找,无一不是MapReduce程序设计的重要功能和应用。此部分对每个小细节都采用了大量的实例程序作为支撑,从而向读者解释和传授MapReduce程序设计的精髓。

第9章是展望内容,演示了使用 MapReduce 进行数据集之间连接处理的方法,说明MapReduce 不仅可以作为一个数据处理程序,同时还可以作为大数据挖掘的解决方案。此章的最后介绍了数据挖掘中最常用的Apriori的MapReduce程序设计解决方案。

最后一章通过大量的实例程序从多个角度向读者展示了 MapReduce 程序开发的实际案例。其中,“云存储模型”是现在最热点的存储解决方案;多文档关键字的提取和排序是目前文献程序开发中必不可少的应用;寻找共同转载微博是互联网应用热点;从数据库读取数据给读者一个完整的从现有数据库读取数据并进行处理的解决方案;学生成绩排序可作为毕业设计的一项思路。这些都是目前的MapReduce程序设计学习热点和研究重点。

本书适合人群

本书适合于学习MapReduce 2.0源码、MapReduce 2.0程序设计、数据挖掘、机器学习等相关内容的程序设计人员,也可以作为高等院校相关专业的教材。建议在学习本书内容的过程中,理论联系实际,独立进行一些代码的编写,采取开放式的实验方法,即读者自行准备实验数据和实验环境,解决实际问题,最终达到理论联系实际的目的。在学习过程中可以查看第10章相关内容进行学习。

本书作者现任计算机专业讲师,担负数据挖掘、Java 程序设计、数据结构等多项本科及研究生课程,研究方向为数据仓库与数据挖掘、人工智能、机器学习,在研和参研多项科研项目。本书在写作过程中得到了家人们的大力支持,在此对他们表示感谢。

由于编写水平有限,加之编写时间仓促,疏漏之处在所难免,欢迎广大读者批评指正。

王晓华

2013年6月

大象能跳舞吗?当我们被庞大而臃肿的数据压垮,常常会不停地问自己是否真的有必要收集那么多的数据吗?对于这个问题,我回答是 “一切都取决于你自己”。对于庞大的数据来说,在不同人的眼中,既可以是一座无用的垃圾山,也可以是一座未经开凿的金山,这一切都取决于使用者的能力与眼界。

什么是“大数据”?一篇名为“互联网上一天”的文章告诉我们:一天之中,互联网上产生的全部内容可以刻满1.68亿张DVD,发出的邮件有2940亿封之多(相当于美国两年的纸质信件数量),发出的社区帖子达200万个(相当于《时代》杂志770年的文字量),卖出的手机数量为37.8万台,比全球每天出生的婴儿数量高出37.1万名。

随着信息爆炸性的增长,“大数据”成为当前时代最为流行的一个新词汇,其不仅作为IT行业的一个通用词汇在日常工作中使用,并且广泛渗透到商业、金融、教育等一系列与数据相关的领域中。并且,随着大数据的普及以及对其进行分析和挖掘处理技术的提高,大数据越来越被人们重视。围绕大数据获得的商业价值逐渐成为行业人士争相追捧的利润焦点。

正如人们常说的一句话,“冰山只露出它的一角”。大数据也是如此,“人们看到的只是其露出水面的那一部分,而更多的则是隐藏在水面下”。简单地掌握海量的数据资料是不够的。大数据时代的强者并不是那些看服务器中存放有多少数据的人,而是那些懂得如何让庞大的数据实现真正的实用化和获取其中包含的庞大数据信息的人,是那些懂得如何对这些数据信息进行有意义的针对性处理的人,换句话说,就是如何使用手中的工具来对数据进行二次加工和获取,通过这种深加工实现数据的增值与增产,从而实现大数据为我所用。

如果我们把大数据比作一块未经开发的沃土,那么只有经过耕耘收获的果实才能够算得上是真正获得了沃土的回报。换言之,如果把大数据比作一块沃土,那么只有强化对土地的“耕耘”能力,才能通过“加工”实现数据的“增值”。

随着“大数据时代”的开启,对大数据本身的处理和分析越来越为生产者和商业者所看重。但是问题在于,相比于拥有较长历史的数据库分析和传统数据分析,大数据分析具有待数据量特别巨大、算法分析特别复杂等特点。

一般来说,大数据分析需要涉及以下4个方面。

● 有效的数据质量。任何数据分析都来自于真实的数据基础,而一个真实数据是采用标准化的流程和工具对数据进行处理得到的,可以保证一个预先定义好的高质量的分析结果。

● 优秀的分析引擎。对于大数据来说,数据的来源多种多样,特别是非结构化数据来源的多样性给大数据分析带来了新的挑战。因此,我们需要一系列的工具去解析、提取、分析数据。大数据分析引擎就是用于从数据中提取我们所需要的信息。

● 合适的分析算法。采用合适的大数据分析算法能让我们深入数据内部挖掘价值。在算法的具体选择上,不仅仅要求能够处理的大数据的数量,还涉及对大数据处理的速度。

● 对未来的合理预测。数据分析的目的是对已有数据进行总结,并且将现象与其他情况紧密连接在一起,从而获得对未来的预测。大数据分析也是如此。不同的是,在大数据分析中,数据来源的基础更为广泛,需要处理的方面更多。

由这些方面可以知道,大数据分析是数据分析最前沿的技术。这种新的数据分析是目标导向的,不用关心数据的来源和具体格式,能够根据我们的需求去处理各种结构化、非结构化和半结构化数据,配合使用合适的分析引擎,能够输出有效结果,提供一定的对未来趋势的预测分析服务,能够面向更广泛的普通员工快速部署分析应用。

长期以来,对数据的统计分析使用的还是一般传统的关系型数据库分析技术。不得不说,关系型数据库从诞生到今天,经历了50年的发展,已经成为一门成熟的、至今仍旧具有一定活力的数据分析管理技术。

但是,由于关系型数据库天生的缺陷,其丧失了在互联网大数据时代的机会,原因主要是其传统的关系型数据管理模型的扩展无法与如今的大数据进行很好的融合,不能满足大数据的要求。对于关系型数据库来说,其追求的是高度一致性和数据正确性。而这恰恰制约了其扩展能力,无法实现任意的存储容量扩展和本身处理能力的加强,使之无法满足互联网时代的大数据分析需求。

2005年,IT界先锋Apache基金会率先提出了一种先进的不以关系型数据为基础的大数据处理模型——Hadoop。

Hadoop就是解决面向互联网及其他来源的大数据分析和并行处理的计算模型。它的诞生引起了学术界、金融界以及商业界的广泛关注。Hadoop创建之初的宗旨就是让使用者能够通过使用大量普通的服务器搭建相应的服务器集群来实现大数据的并行处理,其优先考虑的是数据扩展性和系统的可用性。

简单、粗暴、有效——这就是Hadoop。

Hadoop是一个简单的大数据分布式处理框架,可以使程序设计人员和数据分析人员在不了解分布式底层细节的情况下,开发分布式程序。

Hadoop是一款粗暴的数据处理工具程序。读者在学习Hadoop以前,可能习惯了用精巧的算法、优雅的程序对数据进行处理。但是到Hadoop这里,可以套用电影里的一句台词,“她来了,一切都变了”。Hadoop 创新了数据获取和处理的理念,不再需要使用以往的建立索引来对数据分类,通过相应的表链接将需要的数据匹配成我们需要的格式。Hadoop没有索引,只有蛮力。

小提示:Hadoop通过蛮力对数据进行处理。一台计算机处理速度慢,那么就找十台计算机同时进行处理。十台计算机处理慢,找一百台同时进行处理。一百台计算机还是处理慢,那么就找一千台同时进行处理。这也是Hadoop处理数据的精髓。

Hadoop是一款有效的数据处理工具程序,充分利用集群的能力对数据进行处理,其核心就是MapReduce数据处理。通过对数据的输入、分拆与组合,可以有效地提高数据管理的安全性,同时也能够很好地访问被管理的数据。

Hadoop由开源的Java程序编写而成,是由Apache基金会开发的完全免费使用的开源程序(Open Source)。Hadoop开创性地使用了一种从最底层结构上就与现有技术完全不同但是更加具有先进性的数据存储和处理技术。使用Hadoop无需掌握系统的底层细节,更不需要购买价格不菲的软硬件平台,可以无限制地在价格低廉的商用PC上搭建所需规模的评选数据分析平台。即使从只有一台商用 PC 的集群平台开始,也可以在后期任意扩充其内容。有了Hadoop后,再没有数据被认为是过于庞大而不好处理或存储的了,从而解决了之前无法解决的对海量数据进行分析的问题,发现了其中潜在的价值。

通过使用自带的数据格式和自定义的特定数据格式,Hadoop基本上可以按照程序设计人员的要求处理任何数据,不论这个数据类型是什么样的。数据可以是音乐、电影、文本文件、Log记录等,都可以作为输入存储在Hadoop中。通过编写相应的MapReduce处理程序, Hadoop会帮助用户获得任何想要的答案。

“魔镜魔镜告诉我,这个背后有什么?”Hadoop 还可以挖掘任何看起来毫无关联性的数据背后隐藏的各种信息,将其共同连接构建和呈现出来,从而能够提供其中包含的各种商业信息和价值规律,让使用者根据更多的具有规律性的参考信息作出决策。

“只要给我一个支点,我就能撑起地球。”Hadoop或许就是那个撑起大数据处理的支点。

如果将Hadoop比作一头大象的话,那么MapReduce就是那头大象的大脑。MapReduce是 Hadoop 核心编程模型。在 Hadoop 中,数据处理核心为 MapReduce 程序设计模型。MapReduce把数据处理和分析分成两个主要阶段,即Map阶段和Reduce阶段。Map阶段主要是对输入进行整合,通过定义的输入格式获取文件信息和类型,并且确定读取方式,最终将读取的内容以键值对的形式保存。而 Reduce 是用来对结果进行后续处理,通过对 Map 获取内容中的值进行二次处理和归并排序从而计算出最终结果。MapReduce 的处理过程,如图1-1所示。

在MapReduce处理过程中,首先对数据进行分块处理,之后将数据信息交给Map任务去进行读取,对数据进行分类后写入,根据不同的键产生相应的键值对数据。之后进入Reduce阶段,而Reduce的任务是执行定义的Reduce方法。具有相同键的值从多个数据表中被集合在一起进行分类处理,并将最终结果输出到相应的磁盘空间中。

图1-1 MapReduce的处理过程

小提示:MapReduce 是 Hadoop 的核心处理程序,也是奇迹发生的地方。MapReduce 是在Hadoop简单应用基础上产生的一种简洁并行计算模型,其在系统层面上满足了存储空间的扩展性、一致性及容错性等要求。程序设计人员编写的自定义的MapReduce处理程序可以方便地在大规模集成数据库上执行,从而可以做到对大规模数据的分析应用。

MapReduce 使用和借鉴了函数方式程序设计语言的设计思想。其过程的实现是首先通过指定一个 Map 方法,将传递进来的数据通过键值对的形式进行映射,从而形成一个新的键值对供后续处理。Reduce作为一个约束方法,将具有相同键的值作为一个集合合并在一起。

MapReduce 作为 Hadoop 的核心处理程序,在诞生之初就为了处理大数据而采用了“分治式”的数据处理模式,将数据分散到各个节点中进行相应的处理。一般情况下,每个节点会就近读取本地存储的数据,进行相应的合并和排序后发送给Reduce进行下一步处理。这个过程可以依据要求具体编写,好处是避免了大数据处理框架所要求进行的大规模数据传输,从而节省了时间,提高了处理效率。

MapReduce程序是由Java语言编写的,而Java语言本身的特点就是可移植性强。“一次编写,到处运行”是Java的特点。因此,MapReduce继承了这个特点,具有很强的定制性。MapReduce 的程序中会有很多的算法和设计模式,都是很直观和固定的,不会因为所要处理对象和内容的不同具有太多的变化。同时,MapReduce 作为通用的 Hadoop 处理核心,需要面对的问题一定是千差万别的。因此,MapReduce 使用面向对象的程序设计模式抽出了这些数据内容的一些公共部分进行总结和程序设计。

和Java语言本身又带有极强的扩展性和应用性一样,MapReduce也具有较好的程序扩展机制,能够满足程序设计人员定义各种各样所需要的算法和程序。

MapReduce是Hadoop的核心内容,也是这头“大象”的大脑。MapReduce指挥着“大象”的前进方向和步伐,从而能够对Hadoop数据处理提供最大限度地支持。

大象也会跳舞。当人们还在争论大数据处理能否为自己所在的行业带来革命的时候,部分行业领袖已经在享用大数据处理给自己带来的非凡好处。

Hadoop一个最为普遍的应用是为获得的海量数据提供处理程序,从而能够获得其中包含的各种信息。例如经常使用的聚类推荐,向感兴趣的顾客推荐相关商品和服务;或者为广告供应商提供具有针对性的广告服务,并且通过点击率的反馈获得统计信息,进而有效地帮助他们调整相应的广告投放能力。

长期以来,互联网巨头,包括Yahoo!、Google等广告商为其投放的标准广告类型提供了多种广告计费方式。首先是基于点击数计费的广告形式,即根据查看和点击这个广告的人群数目付费的广告投效方式。此外,还有根据网上查看到广告的人数比例进行付费的模式,此项广告投放简单,但是针对性较差,无差别的投放并不能带来好的收益和效果。随着技术的进步,更多的动态广告内容被广泛应用到广告投放形式中来,即根据个人的喜好和习惯制定个性化广告。而Hadoop可以在网站后台进行准确的数据抓取和结果分析,从而更为准确地推荐广告。例如社交网站Facebook上某一个用户经常通过网上链接购买某个品牌的饮料,而Hadoop可以在后台准确地记录其购买次数和口味类型,并通过其与好友分享信息的关键字对数据进行整体处理,从而可以向该用户推荐符合其口味的某项新产品。

同样,Hadoop一个更为典型的应用是分析某一段时间内登录到某个既定网站的平均用户数,或者找到用户数最低点,从而为进行服务器维护提供合适的时间。这个工作繁重而且复杂,这是因为要涉及浏览全部的日志文件,对其进行提取和处理,并根据相应的算法将数据分组。而对大数据的处理恰好是Hadoop的强项,可以很容易地找出不同时间段的人员均值,并获取最低值,从而解决维护时间问题。

小提示:沃尔玛通过Hadoop分析出放置位置最为接近的商品应该是“尿布与啤酒”。刚开始,数据处理人员对这个结果也感到困惑,调查得知大多数购买尿布的是下班后的男性工作者,因其回家后无法外出,只得同时购买啤酒回家看电视。

这一切如果没有Hadoop几乎很难完成,同时,也间接证明了数据和Hadoop本身并不能带来如此的神奇效应,然而一旦联系在一起,则可以发现以前从来没有发现的数据点,从而使分析和挖掘成为了可能。

大象也会跳舞,我们曾幻想臃肿的数据不再成为我们的负担。Hadoop带来的一切使得我们梦想成真。大数据已经成为我们所拥有的财富,成为一座未经开采的金矿。我们还有什么理由不去使用和掌握它呢?

图书在版编目(CIP)数据

MapReduce 2.0源码分析与编程实战/王晓华著.--北京:人民邮电出版社,2014.1

ISBN 978-7-115-33237-0

Ⅰ.①M… Ⅱ.①王… Ⅲ.①软件工具—程序设计 Ⅳ.①TP311.56

中国版本图书馆CIP数据核字(2013)第250731号

内容提要

Hadoop是一种分布式数据和计算的框架,在大数据处理中应用非常广泛。MapReduce是一种编程模型。Hadoop正是以MapReduce作为核心编程模型的。

本书比较系统地介绍了MapReduce 2.0的理论体系、架构和程序设计方法。全书分为 10章,系统地介绍了HDFS存储系统,Hadoop的文件 I/O系统,MapReduce 2.0的框架结构和源码分析,MapReduce 2.0的配置与测试,MapReduce 2.0运行流程,MapReduce 2.0高级程序设计以及相关特性等内容。本书最后部分介绍了数据挖掘的初步知识,以及不同应用类型的MapReduce 2.0编程实战。

本书强调理论联系实际,帮助读者在掌握MapReduce 2.0基本知识和特性的基础上,培养实际编程和解决大数据处理相关问题的能力。本书可作为学习MapReduce 2.0的源码、MapReduce 2.0 程序设计、数据挖掘、机器学习等相关内容的程序设计人员的培训和自学读物,也可以作为高等院校相关专业的教学辅导书。

◆著 王晓华

责任编辑 陈冀康

责任印制 程彦红 焦志炜

◆人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

北京鑫正大印刷有限公司印刷

◆开本:800×1000 1/16

印张:19.25

字数:363千字  2014年1月第1版

印数:1-3500册  2014年1月北京第1次印刷

定价:49.00元

读者服务热线:(010)81055410 印装质量热线:(010)81055316

反盗版热线:(010)81055315

相关图书

MapReduce设计模式
MapReduce设计模式

相关文章

相关课程