Hadoop开源启示录

从Lucene进入开源平台感受到的第三点,也是最有意思的一点:这是一条突飞猛进的捷径。Lucene对原有的搜索引擎造成了很大的冲击,因为Lucene使用成本很低,且使用效果大大好于通用的商业产品。经过大量的实践与反复改进,Lucene已经成为世界上最受欢迎的搜索技术之一。这并非是因为它创造了一个软件技术的开端——也许有这个因素——但更重要的是它是开源技术,能让每一个人都能参与进来,学习并改进它,享受这个过程。这种开源的方法很强大,能让技术走近更多人,也促使技术变得更好更快。

此外,就像Mike Olson说的,当人们有选择的时候,在企业专用软件和开源软件之间,人们总是倾向于选择开源软件。一轮又一轮迭代后,你会发现开源软件在任何领域都会胜出。

Nutch、GFS和MapReduce, Hadoop萌芽在即

我开始了另一个名为Nutch的项目。在Lucene的基础上将开源的思想继续深化,我们从网页上收集大量数据,基于这些建立一个全新的开源搜索引擎,就像Google、微软bing或其他搜索引擎,收集特定的网页及链接,提取信息,同时处理数十亿的网页请求。一台PC无法存储如此大量的信息,也无法在合理时间内响应,所以我们尝试用分布式系统,Nutch在5台电脑上运行起来。我们也把Nutch资料总结成文本放入开源社区中。

大约2003年到2004年的时候,Google发布了一些相关的研究报告,介绍了他们基于现有搜索引擎做的改进,吸引了我的关注。这些技术成果对我的研发有着十分直接的指导意义。运用这些技术,我们可以将原本需要手工操作的大量繁琐的数据分配和空间管理等操作步骤实现自动化。这两个平台一个是GFS(Google File System),将不同设备所产生的海量数据统一管理在同一个存储空间内,与所有电脑都自动关联,其中一个设备出现障碍,数据不会丢失,而且程序可以迁移到其他设备继续运行,所有数据资源可以共享。这种具备自动关联能力的数据管理是Google实现的一个核心突破,这使我们的操作能力可以从五台电脑提升到成百数千台。同时,Google发布的另一个研究是有关MapReduce的,内容是关于运行在GFS上时,如何用MapReduce进行大规模数据的处理。

Mike Cafarella和我开始基于这两项技术,在开源平台上校准我们原有的程序Nutch。2005年,我们开始有数据基于20台硬件设备在Nutch上运行,这是当时我们能借调到设备的最大数量。我当时在一个非营利组织工作,Mike还没从大学毕业,20台设备已经是我们能筹备到的极限。以这20台设备所支持的开发和测试情况来看,我们意识到这种数据分配的程序存在太多的bug,自动关联很难实现,测试往往以失败告终。当你交叉验证时,你会发现使用两台机器所产生的测试结果不一样。

雅虎助力,Hadoop潜能释放

我意识到这是一个很好的机会,通过开源平台对世界上所有的主流数据处理模式做出彻底的革新,而且基于低廉的硬件成本。如果靠单枪匹马去实现这个宏伟的计划,它会耗费十年甚至更长时间才能最终替代现有的解决方案。我们需要其他帮助。

2005年底,经过一番筛选我把目光聚焦在雅虎。雅虎对我的研究项目很感兴趣,因为当时在做搜索引擎的过程中他们也有类似的困惑,合作研发也会同时帮他们解决问题。2006年,我们加入雅虎,把Nutch分布式数据管理部分重新命名为Hadoop,名字来源于我儿子的黄色毛绒玩具——一只小象。为了新项目Hadoop的运行,雅虎做了大量投入。从一开始的10人工程师团队迅速增加到20人然后更多;机器数量也从一开始的100台,在6个月后增加到数千台。六个月内我们不断测试、开发、运行,逐渐有了成效。

从2007到2008年,切实改进了数据关联能力的技术,其他人也开始使用,这项技术也开始释放富有魔力的潜能。任何人都能下载这个开源软件,在并不昂贵的设备上运行非常大量的计算。Yahoo、Facebook、eBay、LinkedIn、Twitter等公司都开始以Hadoop为基础搭建他们的业务。

未料及的行业渗透 Hadoop创造历史

曾一度以为Hadoop能做的事情已经完成,一切都在按预期发生。但我没意识到的是,所有的传统行业都在酝酿着变革,硬件设备已遍布如此广泛,可用于计算的硬件已渗透到各行各业中,比如卡车、拖拉机、飞机、汽车等。所有这些传统行业都在做数字化转型,这正在产生更加海量更加有效的数据。运用好这些数据能帮助人们更高效更精准的管理生活。起初我并没有意识到这一点,曾以为只有互联网公司、媒体公司才需要Hadoop技术,但Mike Olson告诉我,这项技术已在更多行业领域释放出更大的能量。所以他在2008年创建了Cloudera——第一家专注特定领域的企业,也是迄今为止特定领域规模最大的企业。