上次见到(膜拜)Hadoop之父Doug Cutting是在 2年前 ,2014中国大数据技术大会上。今年Hadoop10岁,刚看到他的 Hadoop十周年贺词 ,感觉时间飞逝。最近CSDN和InfoQ都在制作Hadoop选题。云栖社区也找到不少阿里Hadoop生态高手,2-3月会做多场实时在线培训。大家想听什么,告诉我们。
Doug Cutting成长史
2013年时,CSDN 曾有文章详细介绍了Hadoop之父Doug Cutting 。直到现在,再次阅读还是深有体会。要知道,1985年毕业于美国斯坦福大学的Cutting并不是一开始就决心投身IT行业的。在大学时代的头两年,Cutting学习了诸如物理、地理等常规课程。因为学费的压力,Cutting开始意识到,自己必须学习一些更加实用、有趣的技能。这样,一方面可以帮助自己还清贷款,另一方面,也是为自己未来的生活做打算。因为斯坦福大学座落在IT行业的“圣地”硅谷,所以学习软件对年轻人来说是再自然不过的事情了。
Cutting的第一份工作是在Xerox做实习生,Xerox当时的激光扫描仪上运行着三个不同的操作系统,其中的一个操作系统还没有屏幕保护程序。因此,Cutting就开始为这套系统开发屏幕保护程序。由于这套程序是基于系统底层开发的,所以 其他同事可以给这个程序添加不同的主题。这份工作给了Cutting一定的满足感,也是他最早的“平台”级的作品。
可以说,Xerox对 Cutting后来研究搜索技术起到了决定性的影响,除了短暂的在苏格兰工作的经历外,Cutting事业的起步阶段大部分都是在Xerox度过的,这段 时间让他在搜索技术的知识上有了很大提高。他花了四年的时间搞研发,这四年中,他阅读了大量的论文,同时,自己也发表了很多论文,用Cutting自己的 话说——“我的研究生是在Xerox读的。”
尽管Xerox让Cutting积累了不少技术知识,但他却认为,自己当时搞的这些研究只是纸上谈兵,没有人试验过这些理论的可实践性。于是,他决定勇敢地迈出这一步,让搜索技术可以为更多人所用。1997年底,Cutting开始以每周两天的时间投入,在家里试着用Java把这个想法变成现实,不久之后,Lucene诞生了。作为第一个提供全文文本搜索的开源函数库,Lucene的伟大自不必多言。
之后,Cutting再接再厉,在 Lucene的基础上将开源的思想继续深化。2004年,Cutting和同为程序员出身的Mike Cafarella决定开发一款可以代替当时的主流搜索产品的开源搜索引擎,这个项目被命名为Nutch。在此之前,Cutting所在的公司 Architext(其主要产品为Excite搜索引擎)因没有顶住互联网经济泡沫的冲击而破产,那时的Cutting正处在Freelancer的生涯 中,所以他希望自己的项目能通过一种低开销的方式来构建网页中的大量算法。幸运的是,Google这时正好发布了一项研究报告,报告中介绍了两款Google为支持自家的搜索引擎而开发的软件平台。这两个平台一个是GFS(Google File System),用于存储不同设备所产生的海量数据;另一个是MapReduce,它运行在GFS之上,负责分布式大规模数据。基于这两个平台,Cutting最引人瞩目的作品——Hadoop诞生了(后来大家习惯认为Hadoop于2006年1月28日诞生的)。谈到Google对他们的“帮助”,Cutting说:“我们开始设想用4~5台电脑来实现 这个项目,但在实际运行中牵涉了大量繁琐的步骤需要靠人工来完成。Google的平台让这些步骤得以自动化,为我们实现整体框架打下了良好的基础。”
说起Google,Cutting也是它成长的见证人之一,这里有一段鲜为人知的故事。早在Cutting供职于Architext期间,有两个年轻人曾去拜访这家公司,并向他们兜售自己的搜索技术,但当时他们的Demo只检索出几百万条网页,Excite的工程师们觉得他们的技术太小儿科,于是就在心里鄙 视一番,把他们给送走了。但故事并未到此结束,这两个年轻人回去之后痛定思痛,决定自己创业。于是,他们开了一家自己的搜索公司,取名为Google。这两个年轻人就是Larry Page和Sergey Brin。在Cutting看来,Google的成功主要取决于,反向排序之后再存储的设计和对自己技术的自信。
出于对时间成本的考虑,在从Architext离职四年后,Cutting决定结束这段Freelancer的生涯,找一家靠谱的公司,进一步完善 Hadoop的性能。他先后面试了几家公司,其中也包括IBM,但IBM似乎对他的早期项目Lucene更感兴趣,至于Hadoop则不置可否。就在此 时,Cutting接受了当时Yahoo!搜索项目负责人Raymie Stata的邀请,于2006年正式加入Yahoo!。在Yahoo!,有一支一百人的团队帮助他完善Hadoop项目,这期间开发工作进行得卓有成效。 不久之后,Yahoo!就宣布,将其旗下的搜索业务的架构迁移到Hadoop上来。两年后,Yahoo!便基于Hadoop启动了第一个应用项目 “webmap”——一个用来计算网页间链接关系的算法。Cutting的时任上司(后为Hortonworks CEO)Eric Baldeschwieler曾说:“在相同的硬件环境下,基于Hadoop的webmap的反应速度是之前系统的33倍。”
谈到成功,Cutting认为他的成功主要归功于两点,一是对自己工作的热情(Cutting在大学时就开始做Infrastracture类的程序,还用 Lisp为Emacs贡献过代码,他非常喜欢自己的程序被千万人使用的感觉);二是目标不要定得过大,要踏踏实实,一步一个脚印。
现在已经被业内成为Hadoop之父的Cutting在Hadoop10年来到之时发表文章:Hadoop At 10: Doug Cutting On Making Big Data Work。InfoQ翻译了中文( 原文内容 , 翻译 ) 。让我们一起看看他眼中的大数据技术的未来是怎么样的?
他眼中大数据技术的未来
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引擎。
截至到2005年,谷歌公司(Google)引领的这种新型Nutch系统已经被我们应用于20到40个计算机集群中。但是,如果仅仅依靠几个人利用业余时间来开发这款软件,那么可能需要耗费很多年的时间才能让该足够稳定且可靠。此外该软件需要在数以千计的计算机集群上进行测试和调试,但是他们没有足够的计算机集群来完成这一工作。
2006年,我在雅虎公司(Yahoo!)给一些伙计们谈论了有关Nutch的信息,并且得知大家对这种软件存在巨大的需求。同时,我们也有一支熟练的工程师队伍在进行这项工作,并且部署了大量的硬件。
于是,在2006年1月,我加入到了雅虎公司(Yahoo!)。此后不久将Nutch中的分布式文件系统和MapReduce软件分隔开来形成了一个新的项目,即“Hadoop”,这是以我的儿子的毛绒大象玩具而命名的。由于新加入了十几名雅虎公司(Yahoo!)的工程师以及配置了数千台电脑,取得了飞速的进展。截止到2007年,我们构建了一个相对稳定的、可靠的系统,可以使用经济实惠的商用硬件处理数千兆字节(PB)的数据。
Hadoop彻底地改变了整个行业的格局。开发人员可以更快、更轻松地构建更好的广告方式、拼写检查、页面布局等等。此外,越来越多的非雅虎公司(Yahoo!)的用户也开始部署Hadoop,例如Facebook、Twitter和LinkedIn等公司。在Hadoop之上也很快建立了其他项目,例如Apache Pig、Apache Hive、Apache HBase等等。同时,学术研究人员也开始使用Hadoop。这样就已经达到了我们最初设想的目标:即构建一个能够轻松方便、经济实惠地存储和分析大量数据的非常流行的开源项目。
随后一些风险投资商说该软件可能除了网络和学术界之外还有更大用途。但是有人认为银行、保险公司和铁路公司可能永远也不会运行这种开源的“黑客式”软件。风险投资商依然坚持他们的观点,并在2008年筹建了Cloudera,这是业界第一家明确使命为将Hadoop和相关技术引入传统企业的公司。
一年以后,在2009年,我开始意识到这种可能性。如果可以让世界500强企业开始采用Hadoop的话,那么很可能就会改变他们的业务模式。随着公司逐渐采取更多的技术,从网站和呼叫中心到现金出纳机和条码扫描器,他们的手指尖将会传递越来越多的关于他们企业的数据。如果企业机构能够采集和使用更多的数据,那么将可以更好地了解和改善他们的业务。传统的基于关系数据库管理系统(RDBMS)的技术存在以下弱点:在支持可变、凌乱的数据和快速实验方面显得太过死板;无法轻易扩展到支撑PB级数据;并且成本非常昂贵。与此相比,即使是很小的Hadoop集群也可以允许公司提出和回答比以前更复杂的问题,并且可以不断地学习和提高。最后,我加入了Cloudera公司。
现况与展望
现在,七年后,Hadoop及其开启的潮流已经在主流企业中发挥了非常有价值的作用。
我们在多个方面正处于大变革的时代。目前,传统的企业式关系数据库管理系统(RDBMS)软件面临着开源的大数据软件这个竞争对手。出乎意料但是非常让人惊喜的是,黑客式和企业式软件传统之间的差异已不再明显,并且两者之间已经出现了融合。同时,软件的开发者和使用者之间也没有了有严格的划分。
Hadoop生态系统中没有任何一个单一的软件组件占主导地位。Hadoop也许是最古老和最成功的组件,但是每年都会引入新的、改进的技术。新型的执行引擎(例如Apache Spark)和新型的存储系统(例如Apache Kudu(正在孵化中))表明,这种软件生态系统的发展非常迅速,且不存在任何中心控制点。用户也可以更快的获得更好的软件产品。
该软件不仅更实惠,可扩展,而且提供了更好的风格。企业机构不仅可以探索混乱的、多样化的数据源,开展实验,而且可以迅速地开发和改进应用程序。我们可以综合利用源于传感器、社交媒体和生产过程的数据来进行更深入的分析,制定明智的决策以及推出新的产品。包括Cloudera在内的公司都在不断地推动该软件的完善,确保其满足各行业的需求,使之更稳定、更可靠、更易管理、更安全,并且可以与现有系统轻松地集成在一起。
当前,政府和行业本身也正在转型。不仅是优步(Uber)和特斯拉(Tesla)之类的新兴公司正在使用数据来重新塑造自己的行业,卡特彼勒公司(Caterpillar)和雪佛龙公司(Chevron)等老字号品牌也正在通过数据技术极大地提升自身。我们将在本世纪获得的绝大部分的技术进步都将源于我们对所生成数据的深刻了解。
回首过去,10年前我们决不会猜到Hadoop将会在这般的滔天巨变中发挥如此关键性的作用。对于今天所取得的一切成就,感到十分自豪和惊喜。随着数据世纪的到来,期待看到Hadoop继续发挥它的影响。