谈到成功,Cutting认为他的成功主要归功于两点,一是对自己工作的热情(Cutting在大学时就开始做Infrastracture类的程序,还用 Lisp为Emacs贡献过代码,他非常喜欢自己的程序被千万人使用的感觉);二是目标不要定得过大,要踏踏实实,一步一个脚印。
现在已经被业内称为Hadoop之父的Cutting在Hadoop10年来到之时发表文章:Hadoop At 10: Doug Cutting src="http://upload.idcquan.com/2016/0217/1455688579522.jpg" border="0" width="498" alt="Hadoop之父Doug Cutting眼中大数据技术的未来" height="228" />
(换为本人叙述模式)2016年1月28日,是Hadoop诞生十周年。此纪念日既给予了我们机会去庆祝过去10年来 Apache Hadoop所取得的进步,也让我们反思是如何取得今天的一切成就,同时以便更好地规划未来的发展目标。
Hadoop是为了大数据而诞生的,其本身就象征着本世纪工业革命的焦点:业务的数字化转型。十年前,数字化业务仅仅在少数几个行业中得到了应用,例如电子商务和媒体。从那时起,我们已经看到数字化技术将成为几乎所有行业必不可少的一环。每一个行业都正在致力于围绕其信息系统构建数据驱动型运营模式。像Hadoop之类的大数据工具可以使各行业能够从他们所产生的数据中获得最大的利益。
Hadoop本身并非是数字化转型的根本起因,但是它是推动这种发展趋势的重要因素。因此,通过追溯Hadoop的发展历史,可以更好地了解我们现在所处的世纪。
两大传统
在Hadoop出现之前,业界存在两大软件传统,Doug Cutting称之为“企业式(enterprise)”和“黑客式(hacker)”。在企业式传统中,供应商负责向运行软件的企业开发和销售软件,但是两者之间的合作是非常少的。企业软件依赖于一套关系数据库管理系统(RDBMS)来解决几乎所有的问题。用户仅信任他们自己的关系数据库管理系统(RDBMS)来存储和处理业务数据。如果某数据不是在该关系数据库管理系统(RDBMS)中,用户则认为不是业务数据。
在黑客式传统中,软件主要由那些在大学、研究中心和硅谷网络公司开发该软件的相关方使用。开发人员通过编写软件来解决特定的问题,例如路由网络流量、网页生成和网页服务等等。因此,Doug 选择了后一种传统,十多年来一直专门致力于搜索引擎是开发工作。Doug 说他们很少使用关系数据库管理系统(RDBMS),因为其没有得到很好地扩展以搜索整个网络,速度非常慢,不灵活且成本昂贵。
Hadoop的发展历史
2000年,我加入了Apache Lucene项目,第一次尝试开源项目开发工作。该方法对他来说是一个启迪。不仅仅可以与开发人员紧密合作,而且变更工作单位后还可以继续为同一款软件投入心血。但最重要的是,这极大地增长了见识:优秀的开源项目是如何让软件变得大受欢迎的。如果软件不会因许可限制而束缚,那么使用者就能够以更为舒适的方式来使用该软件,并基于该软件开展自身的业务,而不会存在硬依赖于不透明的商业性软件的风险。当使用者发现问题时,他们就可以介入并协助解决这些问题,从而提升了开发团队的规模。总而言之,开源是软件应用和开发的一种促进剂。
几年后,大约在2004年左右,当开发Apache Nutch项目时,我有了另外一个见解。当时正试图构建一个可以处理数十亿网页的分布式系统。但是,不如人意的是该过程进展相当缓慢:很难开发和运行这个软件。听说,谷歌公司(Google)的工程师设计了一个系统,可以只需要几行代码编写一个计算程序,该计算程序可以在数千台机器上并行运行,并且可以在几分钟时间内就能够可靠地处理多TB的数据。之后,谷歌公司(Google)发表了两篇论文,描述了该计算程序是如何工作的,其中最关键的就是一个分布式文件系统(GFS)与一个执行引擎(MapReduce)。这种方式将使Nutch变成一个更可行的系统。此外,这些工具可能可以被用于很多其他应用程序中。MapReduce在大规模数据分析方面展现出了前所未有的潜力,但当时只提供给谷歌公司(Google)的工程师使用。
综合开源特性在推广科学技术方面的效能以及谷歌公司(Google)方法的广泛适用性,我意识到采用开源的方式实施谷歌公司(Google)的想法将不仅能更好地应用Nutch,而且很有可能成为一个非常成功的开源项目。怀着这样的想法,Mike Cafarella和我开始在Nutch系统中实施这样的分布式文件系统和MapReduce引擎。