参考:

  • Hadoop.The.Definitive.Guide.4th

Hadoop是Apache Lucene创始人道格.卡丁(Doug Cutting) 创建的,Lucene 是一个应用广泛的文本搜索系统库。Hadoop 起源于开源网络搜索引擎 Apache Nutch,后者本身也是 Lucene 项目的一部分。

Doug Cutting 是 Lucene、Nutch、Hadoop 等项目的发起人,Apache 软件基金会主席,他将深奧的搜索技术做成了可以用的产品。他1985年毕业于斯坦福大学,在施乐当过实习生,也在这里做成了最早的产品级作品(施乐激光扫描仪有个操作系统的屏保),也是他后来决定从事搜索技术的最初动机。1997 年,Lucene 诞生,2004 年Nutch 间世,2006 年Hadoop诞生。

Hadoop的得名

Hadoop不是缩写,这个词是生造出来的。Hadoop 之父Doug Cutting 是这样解释Hadoop来历的:“这个名字是我的孩子给他的毛绒象玩具取的。我的命名标准是好拼读,含义宽泛,不会被用于其他地方。小朋友是这方面的高手。Googol就是他们起的。”

Hadoop生态系统中的各项目所使用的名称也往往与其功能不相关,通常也以大象或其他动物为主题取名(例如Pig).较小一些的组件,名称通常都有较好的描述性(因此也更通俗)。这个原则很好,意味着我们可以望文知义,例如namenode,一看就知道它是用来管理文件系统命名空间(namespace)的。

发展简史

从头打造一个网络搜索引擎是一个雄心勃勃的计划,不只是因为写爬虫程序很复杂,更因为必须有一一个专职团队来实现,项目中包含许许多多需要随时修改的活动部件。同时,构建这样的系统代价非常高,据迈克.加法雷拉(Mike Cafarella)和Doug Cutting估计,一个支持10 亿网页的索引系统,单单是硬件上的投入就高达50万美元,另外还有每月高达3万美元的运维费用。不过,他们认为这个工作仍然值得投入,因为它开创的是一个优化搜索引擎算法的平台。

Nutch项目开始于2002 年,一个可以运行的网页爬取工具和搜索引擎系统很快面世。但后来,它的创造者认为这一架构的灵活性不够,不足以解决数十亿网页的搜索问题。一篇发表于 2003年的论文为此提供了帮助,文中描述的是谷歌产品架构,该架构称为“谷歌分布式文件系统” (GFS)。 GFS或类似的架构可以解决他们在网页爬取和索引过程中产生的超大文件的存储需求。特别关键的是,GFS能够节省系统管理(如管理存储节点)所花的大量时间。在2004年,Nutch的开发者开始着手做开源版本的实现,即Nutch分布式文件系统(NDFS)。

2004年,谷歌发表论文向全世界介绍他们的MapReduce系统。2005年初,Nutch的开发人员在Nutch.上实现了一个MapReduce系统,到年中,Nutch 的所有主要算法均完成移植,用MapReduce和NDFS来运行。

Nutch的NDFS和MapReduce实现不只适用于搜索领域。在2006年2月,开发人员将NDFS 和MapReduce移出Nutch 形成Lucene 的一个子项目,命名为 Hadoop。大约在同一时间,Doug Cutting 加入雅虎,雅虎为此组织了专门的团队和资源,将Hadoop发展成能够以Web网络规模运行的系统。在2008年2月,雅虎宣布,雅虎搜索引擎使用的索引是在一个拥有1万个内核的Hadoop集群上构建的。

2008年1月,Hadoop已成为Apache的顶级项目,证明了它的成功、多样化和生命力。到目前为止,除雅虎之外,还有很多公司在用Hadoop, 例如Last.fm,Facebook和《纽约时报》等。

《纽约时报》的案例广为流传,他们把存档报纸扫描之后得到4TB的文件并用亚马逊的EC2 云服务将文件存为PDF格式放到网上共享。”整个过程共使用了100台计算机,所花的时间不到24小时。如果没有亚马逊的按小时付费模式(即允许《纽约时报》短期内访问大量机器)和Hadoop好用的并发编程模型珠联璧合,这个项目不太可能这么快就启动和完成。

2008年4月,Hadoop打破世界纪录,成为最快的TB级数据排序系统。运行于一个910节点的群集上,Hadoop 在209秒内(不到3.5分钟)完成了对完整的1TB数据的排序,击败了前一年的297秒冠军。“同年11月,谷歌在报告中声称,它的MapReduce对1 TB数据排序只用了68秒。2009年4月,有报道称雅虎有一个团队使用Hadoop对 1 TB数据进行排序只花了62秒。

从那以后,以更快的速度对更大规模的数据进行排序已成为一种趋势。在2014年GraySort基准排序大赛中,来自Databricks 公司的一个团队获得并列第一。他们使用一个207个节点的Spark集群对100TB数据进行排序,只用了1406秒,处理速度为每分钟4.27 TB。

目前,Hadoop 被主流企业广泛使用。在工业界,Hadoop 已经是公认的大数据通用存储和分析平台,这- -事实主要体现在大量直接使用或者间接包含Hadoop系统的产品如雨后春笋般大量涌现。一些大公司包括EMC, IBM, Microsft 和Oracle以及一些专注于Hadoop 的公司,如Cloudera, Hortonworks 和MapR都可以提供商业化的Hadoop支持。

Hadoop在雅虎

作者: Owen O’Melly

构建互联网规模的搜索引擎离不开大量的数据,因此也离不开大量的机器来处理巨量的数据。雅虎搜索引擎(Yahoo! Search)有 4个主要组成部分:

  • Crawler,从网页服务器爬取网页;
  • WebMap,构建一个已知网页的链接图;
  • Indexer,为最佳页面构建一个反向索引;
  • Runtime, 处理用户的查询。

WebMap生成的链接图非常大,大约包括一万亿(10)条边(每条边代表一个网页链接)和一千亿(10”)个节点(每个节点代表不同的网址)。 创建并分析如此大的图需要大批计算机很多天长时间运行。到2005年初,WebMap用的底层架构 Dreadnaught 需要重新设计,以便日后可以扩展到更多的节点。

Dreadnaught从20个节点成功扩展到600个,但需要完全重新设计才能进一步扩大。Dreadnaught 与MapReduce 在很多方面都很相似,但灵活性更强,结构也更松散。说具体点,一个Dreadnaught 作业的每一个段(fragment,也称“分块”)都可以输送到下一阶段的各个片段继续执行,排序则是通过库函数来完成的。但实际情形是,大多数WebMap阶段是两两一对,对应于MapReduce,因此,WebMap 应用不需要做大量重构操作就可以适应MapReduce。

Eric Baldeschwieler(即 Eric14)组建了一个小团队,于是我们开始设计并在GFS和MapReduce之上用C++来建立一个新框架的原型,并打算用它来取代Dreadnaught。尽管我们的当务之急是需要一个新的WebMap 框架,但更清楚的是,建立雅虎搜索引擎批处理平台的标准对我们更重要。使平台更通用以便支持其他用户,才能够更好地实现新平台的均衡性投资。

与此同时,我们也关注着Hadoop(当时也是Nutch的一部分)及其进展情况。2006年1月,雅虎聘请了Doug Cutting。一个月后,我们决定放弃原型,转而采用Hadoop. 与我们的原型和设计相比,Hadoop 的优势在于它已经在20个节点上实际应用过(Nutch)。这样一来,我们便能在两个月内搭建一个研究集群并能够以很快的速度帮助我们的客户使用这个新的框架。另一个显著的优点是Hadoop已经开源,比较容易(尽管也不是想象的那么容易! )从雅虎法务部门获得许可对该开源系统进行进一步研究。因此,我们在2006年初建立了一个200节点的研究集群并暂时搁置WebMap 计划,转而为研究用户提供Hadoop支持和优化服务。