为什么写这本书
计算技术已经改变了我们的工作、学习和生活。分布式的云计算技术是当下IT领域*热门的话题之一,它通过整合资源,为降低成本和能源消耗提供了一种简化、集中的计算平台。这种低成本、高扩展、高性能的特点促使其迅速发展,遍地开发,悄然改变着整个行业的面貌。社会各界对云计算的广泛研究和应用无疑证明了这一点:在学术界,政府和很多高校十分重视对云计算技术的研究和投入;在产业界,各大IT公司也在研究和开发相关的云计算产品上投入了大量的资源。这些研究和应用推动与云计算相关的新兴技术和产品不断涌现,传统的信息服务产品向云计算模式转型。
Hadoop作为Apache基金会的开源项目,是云计算研究和应用*具代表性的产品。Hadoop分布式框架为***提供了一个分布式系统的基础架构,用户可以在不了解分布式系统底层细节的情况下开发分布式的应用,充分利用由Hadoop统一起来的集群存储资源、网络资源和计算资源,实现基于海量数据的高速运算和存储。
在编写本书**版时,鉴于Hadoop技术本身和应用环境较为复杂,入门和实践难度较大,而关于Hadoop的参考资料又非常少,笔者根据自己的实际研究和使用经历,理论与实践并重,从基础出发,为读者全面呈现了Hadoop的相关知识,旨在为Hadoop学习者提供一本工具书。但是时至**,Hadoop的版本已从本书**版介绍的0.20升级至正式版1.0,读者的需求也从入门发展到更加深入地了解Hadoop的实现细节,了解Hadoop的更新和发展的趋势,了解Hadoop在企业中的应用。虽然本书**版受到广大Hadoop学习者的欢迎,但是为了保持对*新版Hadoop的支持,进一步满足读者的需求,继续推动Hadoop技术在国内的普及和发展,笔者不惜时间和精力,搜集资料,亲自实践,编写了本书第二版。
第2版与第1版的区别
基于Hadoop 1.0版本和相关项目的*新版,本书在第1版的基础上进行了更新和调整:
每章都增加了新内容(如第1章增加了与Hadoop**相关的知识,第2增加了在Max OS X系统上安装Hadoop的介绍,第9章增加了WebHDFS等);
部分章节深入剖析了Hadoop源码;
增加了对Hadoop接口及实践方面的介绍(附录C和附录D);
增加了对下一代MapReduce的介绍(第8章);
将企业应用介绍移到本书*后并更新了内容(第19章);
增加了对Hadoop安装和代码执行的集中介绍(附录B)。
本书面向的读者
在编写本书时,笔者力图使不同背景、职业和层次的读者都能从这本书中获益。
如果你是专业技术人员,本书将带领你深入云计算的世界,全面掌握Hadoop及其相关技术细节,帮助你使用Hadoop技术解决当前面临的问题。
如果你是系统架构人员,本书将成为你搭建Hadoop集群、管理集群,并迅速定位和解决问题的工具书。
如果你是高等院校计算机及相关专业的学生,本书将为你在课堂之外了解*新的IT技术打开了一扇窗户,帮助你拓宽视野,完善知识结构,为迎接未来的挑战做好知识储备。
在学习本书之前,大家应该具有如下的基础:
要有一定的分布式系统的基础知识,对文件系统的基本操作有一定的了解。
要有一定的Linux操作系统的基础知识。
有较好的编程基础和阅读代码的能力,尤其是要能够熟练使用Java语言。
对数据库、数据仓库、系统监控,以及网络爬虫等知识*好也能有一些了解。
如何阅读本书
从整体内容上讲,本书包括19章和4个附录。前10章、第18章、第19章和4个附录主要介绍了Hadoop背景知识、Hadoop集群安装和代码执行、MapReduce机制及编程知识、HDFS实现细节及管理知识、Hadoop应用。第11章至第17章结合*新版本详细介绍了与Hadoop相关的其他项目,分别为Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa,以备读者扩展知识面之用。
在阅读本书时,笔者建议大家先系统地学习Hadoop部分的理论知识(第1章、第3章、第6章至第10章),这样可对Hadoop的核心内容和实现机制有一个很好的理解。在此基础上,读者可进一步学习Hadoop部分的实践知识(第2章、第4章、第5章、第18章、第19章和4个附录),尝试搭建自己的Hadoop集群,编写并运行自己的MapReduce代码。对于本书中关于Hadoop相关项目的介绍,大家可以有选择地学习。在内容的编排上,各章的知识点是相对独立的,是并行的关系,因此大家可以有选择地进行学习。当然,如果时间允许,还是建议大家系统地学习全书的内容,这样能够对Hadoop系统的机制有一个完整而系统的理解,为今后深入地研究和实践Hadoop及云计算技术打下坚实的基础。
另外,笔者希望大家在学习本书时能一边阅读,一边根据书中的指导动手实践,亲自实践本书中所给出的编程范例。例如,先搭建一个自己的云平台,如果条件受限,可以选择伪分布的方式。
在线资源及勘误
在本书的附录中,提供了一个基于Hadoop的云计算在线测试平台(http://cloud-computing.ruc.edu.cn),大家可以先注册一个免费账户,然后即可体验Hadoop平台,通过该平台大家可在线编写MapReduce应用并进行自动验证。如果大家希望获得该平台的验证码,或者希望获得完全编程测试和理论测试的权限,请发邮件到jiahenglu@gmail.com。读者也可访问Hadoop的官方网站(hadoop.apache.org)阅读官方介绍文档,下载学习示例代码。
在本书的撰写和相关技术的研究中,尽管笔者投入了大量的精力、付出了艰辛的努力,但是受知识水平所限,书中存在不足和疏漏之处在所难免,恳请大家批评指正。如果有任何问题和建议,可发送电子邮件至jiahenglu@gmail.com或jiahenglu@ruc.edu.cn。
致谢
在本书的编写过程中,很多Hadoop方面的实践者和研究者做了大量的工作,他们是冯博亮、程明、徐文韬、张林林、朱俊良、许翔、陈东伟、谭果、林春彬等,在此表示感谢。 陆嘉恒
2012年6月于北京