问题导读
我们在学习一项新知识,可能不太关注它的产生背景,但是任何故事如果脱离了它的时代,就不会在有意义。如果想了解Hadoop,我们需要知道
1.它是如何产生的?
2.如何发展起来的?
1.MapReduce设计理念与基本架构
Hadoop学习环境的搭建方法,这是学习Hadoop需要进行的最基本的准备工作。我们将从设计理念和基本架构方面对Hadoop MapReduce进行介绍,同样,这属于准备工作的一部分。通过本章的介绍将会为后面几章深入剖析MapReduce内部实现奠定基础。
MapReduce是一个分布式计算框架,主要由两部分组成:编程模型和运行时环境。其中,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序,而其他比较复杂的工作,如节点间的通信、节点失效、数据切分等,全部由MapReduce运行时环境完成,用户无须关心这些细节。在本章中,我们将从设计目标、编程模型和基本架构等方面对MapReduce框架进行介绍。
2.Hadoop发展史
2.1 Hadoop产生背景
Hadoop最早起源于Nutch。Nutch是一个开源的网络搜索引擎,由Doug Cutting于2002年创建。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题,即不能解决数十亿网页的存储和索引问题。之后,谷歌发表的两篇论文为该问题提供了可行的解决方案。一篇是2003年发表的关于谷歌分布式文件系统(GFS)的论文。该论文描述了谷歌搜索引擎网页相关数据的存储架构,该架构可解决Nutch遇到的网页抓取和索引过程中产生的超大文件存储需求的问题。但由于谷歌仅开源了思想而未开源代码,Nutch项目组便根据论文完成了一个开源实现,即Nutch的分布式文件系统(NDFS)。另一篇是2004年发表的关于谷歌分布式计算框架MapReduce的论文。该论文描述了谷歌内部最重要的分布式计算框架MapReduce的设计艺术,该框架可用于处理海量网页的索引问题。同样,由于谷歌未开源代码,Nutch的开发人员完成了一个开源实现。由于NDFS和MapReduce不仅适用于搜索领域,2006年年初,开发人员便将其移出Nutch,成为Lucene的一个子项目,称为Hadoop。大约同一时间,Doug Cutting加入雅虎公司,且公司同意组织一个专门的团队继续发展Hadoop。同年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。2008年1月,Hadoop成为Apache顶级项目,迎来了它的快速发展期。