图书前言

前  言 

近年来信息技术迅速发展,互联网、移动、云计算、物联网等技术不断浸入到人们的生活和各行业中,影响和改变着传统的生活与工作方式。普及的移动设备、随处部署的物联网设备、互联网后台服务、云计算中心时刻都在产生大量的数据,由此产生了数据的爆炸式增长。企业现在要处理的数据无论从规模还是产生速度上都远远超过了以前,传统的数据处理技术已无法适应当前需求。大数据处理技术因此诞生并迅速发展,一方面满足了传统的数据处理需求,另一方面利用大数据技术挖掘出的有价值信息促进了信息技术的应用和发展。

大数据技术最初发展于互联网搜索引擎公司,如Google、YAHOO!等,这些公司要检索海量的互联网数据,对大数据处理有着实际的需求。Google公司于2003年发表了分布式文件系统论文,于2004年发表了MapReduce数据处理框架论文,把Google的大数据处理方法和系统公开了。随后基于这两篇论文的开源项目Hadoop诞生了,并在2006年发布了0.1.0版本。YAHOO!公司最初尝试了Hadoop,在2006年部署了300台机器的集群,并且逐步扩大集群规模。由于使用Hadoop处理大数据非常有效,并且Hadoop是开源软件,可以使用普通的机器搭建集群,不少公司开始使用Hadoop。从2007年的3家公司到2008年的20家公司,使用Hadoop的公司越来越多,包括YAHOO!、Facebook、腾讯、阿里巴巴等。其中不少公司还参与到Hadoop开源项目中,截止到2011年Facebook、LinkedIn、eBay、IBM集体贡献了20万行代码。大公司使用并参与改进Hadoop,使得Hadoop项目迅速发展,功能逐渐丰富、性能不断提高、稳定性得到了增强,Hadoop发展为大数据处理的主流工具和框架之一。

在Hadoop的应用中也发现,基于MapReduce的数据处理框架存在着性能瓶颈,不适合响应性能要求高的数据处理。而Hadoop生态圈中的另一分布式计算框架Spark能够较好地解决这个问题。Spark诞生于加州大学伯克利分校的AMP实验室,最初的目标是迭代计算,适用于机器学习等领域(当时Hadoop数据处理框架的目标是数据批处理),后来发展为既适合数据批处理又适合迭代计算的并行处理框架。Spark的发展非常迅速,2010年开源;2013年贡献给Apache基金会;2014年成为Apache基金会顶级项目。项目活跃,版本更新快。Spark和Hadoop框架类似,都使用普通机器搭建集群,并且兼容Hadoop的分布式文件系统和HBase数据库。不同的是,Spark充分利用了内存资源,并且提供了比MapReduce更加灵活和丰富的计算框架。使用Spark处理大数据,响应时间更快、编程语言丰富(支持Java、Scala、Python、R语言)、数据处理效率高。随着Spark的不断发展,Spark自己也形成了庞大的生态圈,包括数据存储、计算框架、结构化数据处理、机器学习、流式处理等重要模块,成为主流的大数据处理工具和框架之一。Spark并非是Hadoop的替代,而是与Hadoop取长补短,相互兼容,各自适用于不同需求的数据处理和计算。

本书介绍了目前大数据处理的两套主流框架Hadoop和Spark,包括 Hadoop 分布式文件系统、MapReduce 计算框架、HBase 数据库、Hadoop结构化数据处理模块Hive、Spark计算框架和Spark结构化数据处理模块Spark SQL。这些模块都是生态圈中重要的基本模块,模块间存在着依赖关系,如Hive中使用到了MapReduce计算框架、Spark计算框架中使用到了Hadoop文件系统等。书中按照顺序由浅入深地介绍了各模块的系统原理、部署方法、配置方法、基本操作等内容。本书侧重于实践操作,通过实践学习大数据技术,在使用大数据工具的过程中使读者逐步了解大数据处理的基本概念、方法和步骤,强化实际操作能力,为进一步学习其他大数据技术打下良好的基础。

本书第1章和第2章由廖若飞编写,第3章由袁晓东编写,第4章由张爱民编写,第5章和第6章由黄必栋编写。本书编写过程中得到了刘鹏教授和清华大学出版社王莉、徐瑞鸿编辑的大力支持和悉心指导,在此深表感谢!虽然在完稿前我们反复审查校对,力求做到内容清晰无误、便于学习理解,但疏漏和不完善之处仍在所难免,恳请读者批评指正,不吝赐教。

袁晓东 

2017.11