云计算 频道

初识Hadoop-《Hadoop权威指南》连载

  Hadoop发展简史

  Hadoop是Apache Lucene创始人Doug Cutting创建的,Lucene是一个广泛使用的文本搜索系统库。Hadoop起源于Apache Nutch,一个开源的网络搜索引擎, 它本身也是Lucene项目的一部分。

  Hadoop名字的起源

  Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者 Doug Cutting如下解释Hadoop这一名称的来历:

  “这个名字是我的孩子给一头吃饱了的棕黄色大象取的。我的命名标准是简 短,容易发音和拼写,没有太多的含义,并且不会被用于别处。小孩子是这方面的高手。Googol就是小孩子起的名字。”

  Hadoop的子项目及后续模块所使用的名称也往往与其功能不相关,通常也以 大象或其他动物为主题取名(例如“Pig”)。较小一些的组件,名称通常具有较好的描述性(也因此更俗)。这个原则很好,这意味着你可以通过它的名字大致猜测它的功能,例如,jobtracker[1]用于跟踪MapReduce作业。

  从头开始构建一个网络搜索引擎是一个雄心勃勃的计划,不仅是因为编写一个爬取并索引网页的软件比较复杂,更因为这个项目需要一个专门的团队来实现——项目中包含许多需要随时修改的组件。同时,构建这样一个系统的代价非常高——据Mike Cafarella和Doug Cutting估计,一个支持10亿网页的索引系统单是硬件上的投入就高达50万美元,另外每月运行维护费用也高达3万美元。[2]不过,他们认为这项工作仍然是值得的,因为它开创了优化搜索引擎算法的平台。

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

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

  Nutch的NDFS和MapReduce实现不只是适用于搜索领域。在2006年2月, 开发人员将NDFS和MapReduce移出Nutch形成Lucene的一个子项目,称为 Hadoop。大约在同一时间, Doug Cutting加入雅虎,雅虎为此组织了一个专门的团队和资源,将Hadoop发展成一个能够处理Web数据的系统(见第11页的补充材料)。在2008年2月,Yahoo!宣布其搜索引擎使用的索引是在一个拥有1万个内核的Hadoop 集群上构建的。[5]

  2008年1月,Hadoop已成为Apache的优异项目,证明了它的成功、多样化、活跃性。到目前为止,除Yahoo!之外,还有很多公司使用了Hadoop,例如Last.fm、 Facebook和《纽约时报》等。第16章和Hadoop wiki都介绍了一些案例,Hadoop wiki的网址为http://wiki.apache.org/hadoop/PoweredBy。

  《纽约时报》是一个很好的宣传范例,他们将扫描往年报纸获得的4 TB存档文件通过亚马逊的EC2云计算转换成PDF文件,并上传到网上。[6]整个过程使用了100台计算机,历时不到24小时。如果不将亚马逊的按小时付费的模式(即允许《纽约时报》短期内访问大量机器)和Hadoop 易于使用的并发编程模型结合起来,该项目很可能不会这么快开始启动并完成。

  2008年4月,Hadoop打破世界纪录,成为最快的TB级数据排序系统。通过一个910节点的群集,Hadoop在209 秒内(不到三分半钟) 完成了对1 TB数据的排序,击败了前一年的297秒冠军(详情参见第553页的“Apache Hadoop TB级数据排序”小节)。同年11月,谷歌在报告中声称,它的MapReduce对1 TB数据排序只用了68秒。[7]本书第1版出版的时候(2009年5月),有报道称Yahoo!的团队使用 Hadoop对1 TB数据进行排序只花了62秒。

  [1] Mike Cafarella和Doug Cutting的文章“Building Nutch: Open Source Search”(ACM Queue, April 2004),网址为http://queue.acm.org/detail.cfm?id=988408。

  [2] Sanjay Ghemawat,Howard Gobioff和Shun-Tak Leung的文章“The Google File System”(October 2003),网址为http://labs.google.com/papers/gfs.html。

  [3] 本书中我们使用小写形式(如jobtracker)来表示对实体的应用,代码形式(如JobTracker)来表示对Java类的实现。

  [4] Jeffrey Dean和Sanjay Ghemawat的文章“MapReduce: Simplified Data Processing on Large Clusters”(December 2004),网址为http://labs.google.com/papers/mapreduce.html。

  [5] 参见“Yahoo! Lauches World’s Largest Hadoop ProductionApplications”(Feb. 19, 2008),网址为http://developer.yahoo.com/blogs/hadoop/posts/2008/02/yahoo-worlds-largest-production-hadoop/。

  [6] Derek Gottfrid的文章“Self-service, Prorated Super Computing Fun!”(Nov. 1,2007),网址为http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/。

  [7] “Sorting 1PB with MapReduce”(Nov. 21,2008),http://googleblog.blogspot.com/2008/11/ sorting-1pb-with-mapreduce.html。

0
相关文章