前言
1998年,斯坦福大学的博士生拉里·佩奇和谢尔盖·布林在车库里创建了Google公司。2001年,Google已经索引了近30亿个网页。2004年,Google发布Gmail,提供闻所未闻的1GB免费邮箱——众人还以为这是个愚人节玩笑。紧接着,Google又发布了Google Maps和被称为“上帝之眼”的Google Earth……
目前,google.com为全世界访问量最高的站点。Google在全球部署了约200多万台服务器,每天处理数以亿计的搜索请求和用户生成的约24PB数据,而且这些数据还在不断迅速增长。同时,Google的Android智能手机操作系统已经拥有超过40%的美国智能手机用户,而苹果仅以8.9%的市场份额排名第四。社交服务Google+推出不到半月,用户数量就突破1000万,其增长速度罕见。数辆Google无人驾驶汽车已经安全行驶了至少22.5万公里,没有发生过任何意外。Google机器翻译服务能够实现60多种语言中任意两种语言间的互译……
是什么技术造就了这家让人惊叹的公司?是什么样的平台在支撑这些让人匪夷所思的应用?——全世界的人都很好奇。好在Google并不保守——从2003年开始,Google连续几年发表论文,揭示其核心技术,包括Google文件系统GFS、Map/Reduce编程模式、分布式锁机制Chubby以及大规模分布式数据库BigTable等。随后,Google CEO施密特将这类技术称之为“云计算”。所谓“云计算”,就是用网络连接大量廉价计算节点,通过分布式软件虚拟成一个可靠的高性能计算平台。之所以称作“云”,是因为我们画网络图的时候,总是将网络画成一朵云。现在,这朵云变成了我们的“计算机”,而我们的PC、智能手机等则变成了它的终端,因此称之为“云计算”。
2004年,正当开源搜索引擎Nutch和开源全文检索包Lucene之父Doug Cutting为平台的可靠性和性能深受困扰时,看到了Google发表的GFS和MapReduce论文,花了2年时间将之实现,使平台的能力得到大幅提升。2006年,Doug Cutting加入Yahoo!,并将这部分工作单列形成Hadoop项目组。Hadoop的名称,并不是一个正式的英文单词,而来源于Doug Cutting的小儿子对所玩的小象玩具牙牙学语的称呼。Hadoop主要由以下几个子项目组成。
(1)Hadoop Common:是支撑Hadoop的公共部分,包括文件系统、远程过程调用(RPC)和序列化函数库等。
(2)HDFS:提供高吞吐量的可靠分布式文件系统,是GFS的开源实现。
(3)MapReduce:大型分布式数据处理模型,是Google MapReduce的开源实现。
与Hadoop直接相关的配套开源项目还包括如下几个方面。
(1)HBase:支持结构化数据存储的分布式数据库,是Bigtable的开源实现。
(2)Hive:提供数据摘要和查询功能的数据仓库。
(3)Pig:是在MapReduce上构建的一种高级的数据流语言,可以简化MapReduce任务的开发。
(4)Cassandra:由Fackbook支持的开源高可扩展分布式数据库。是Amazon底层架构Dynamo的全分布和Google Bigtable的列式数据存储模型的有机结合。
(5)Chukwa:一个用来管理大型分布式系统的数据采集系统。
(6)ZooKeeper:用于解决分布式系统中一致性问题,是Chubby的开源实现。
等等。
经过5年发展,在所有的开源云计算系统里,Hadoop稳居第一。事实上,Hadoop是如此受欢迎,全球已经安装了数以万计的Hadoop系统。不仅高校和小企业使用Hadoop,连Facebook、淘宝、360安全卫士这样的知名企业也在大规模使用Hadoop。2007年,Google开始在全球推广“Google 101”计划,即在全球知名高校给学生开设Google模式的云计算编程课程。Google中国公司大学合作部在近几年也在国内的清华大学、北京大学、南京大学、上海交大、同济大学等几家著名高校中资助开设了MapReduce和云计算技术课程,本书的部分章节内容也正是在所开设课程内容的基础上形成。有趣的是,由于Google不能直接将其平台开放给学生做实验室,于是Google干脆用Hadoop来搭建实验环境——可见Google对Hadoop的认同度。
目前国内学习和使用Hadoop的热情高涨。在中国云计算(http://www.chinacloud.cn)网站上作的一个调查表明,网友将Hadoop作为云计算领域要学习的首选技术。然而,目前国内Hadoop书籍非常匮乏,迫切需要原著的传授Hadoop编程经验和解决实际问题技巧的书籍。我们的云计算技术研发团队长期战斗在存储和处理海量数据的前线,在实践过程中积累了一些经验。为此,我们感觉到有必要向淘宝网核心架构团队学习,将自己积累的点滴经验贡献出来与大家分享,于是萌生了创作此书的念头。
本书由刘鹏教授负责总体设计、组织全书写作和对内容把关调整,黄宜华教授负责第5章和整体润色,陈卫卫教授负责全书逐字审校,程浩完成第3、4章,王磊完成第14章,顾荣完成第11章,张贞完成第1、2章,邓鹏完成第6章并与王胤然完成第10章,杨晓亮完成第12章,郭岩岩与王海坤完成第13章,李浩完成第8章,魏家宾完成第7章,张欣完成第9章。南京云创存储科技有限公司对本书的编写给予了大力支持,在紧张从事云计算系统研发的同时,仍然派出几位研发人员参与本书写作。
衷心感谢中国电子学会云计算专家委员会、中国通信学会云计算与SaaS专家委员会、江苏省计算机学会、江苏省云计算论坛专家委员会和电子工业出版社对本书出版的大力支持。感谢多位知名院士、专家在百忙之中阅读书稿并给予推荐。在此拜谢我的硕士导师谢希仁教授和博士导师李三立院士对我的辛勤培养。
本书的读者服务网页为:http://www.chinacloud.cn/hadoop.html,该网页提供书中源码下载、相关信息和问题交流。如读者需要较为全面地学习云计算技术,欢迎阅读本书的姊妹篇《云计算(第二版)》,刘鹏主编,电子工业出版社2011年5月出版。
由于作者水平有限,加之时间较紧,书中难免会存在写作不到位甚至错误的之处,敬请读者批评指正。意见和建议请发邮件到:cloudforum@163.com。新浪微博互动交流请关注:http://weibo.com/cloudgrid。
解放军理工大学 刘鹏
2011年9月