凌晨3点时, Arun C. Murthy被一个电话弄醒了,公司要求他紧急处理一个软件bug。当时他是雅虎一个的广告定位App的工程师,App运行很缓慢,因为App启用开源数字平台Hadoop时的一串软件代码写得很糟糕。谁也不会想到,这个小bug,数年后却促成了官方Hadoop 2.0的诞生,改变了Hadoop的命运。
虽然是别人写的,但Murthy的工作就是修复它。谁也不会想到,这个小bug,数年后却为Hadoop生成了一个全新的路径;一个几乎和大数据概念几乎等同的软件系统。
今天,Hadoop应用在Facebook、Twitter、eBay、Yahoo等很多公司中,但2007年时,打那个电话之前,它不是这么有能耐的。
Doug Cutting加入雅虎
受Google 2004年白皮书的影响,打电话的一年之前,Doug Cutting和Michael Cafarella创建了Hadoop平台, 后来Doug Cutting加入雅虎,Murthy则被叫去继续研究雅虎的Hadoop问题, 因为他对该系统软件比较有经验。
当时他看了看邀请表示“谁TMD要去用Java写系统软件呢?”但后来还是接受了,但是当天晚上,他又继续诅咒“我TMD没事干嘛去调试别人的Hadoop代码呢?”但之后他发现自己陷入了更深的诅咒,因为他发现处理过后的应用程序(广告定位App)并没有真正意义上地运行Hadoop。
Hadoop实际上是由两部分组成的软件平台,一个叫做Hadoop分布式文件系统的存储系统(HDFS),一个叫MapReduce的处理系统。你可以转储大量的数据在这个系统里面,然后被分布在数十、数百、数千台服务器中,再用MapReduce在集群里把大问题拆分成小问题。这就是 Hadoop的魅力:可以用大量廉价的商品服务器来省钱,而非购买少数昂贵的超级计算机。
不过有个小问题是,有时候开发者希望把数据从其中一个集群抽离出来,不用运行整个MapReduce,这也是当时雅虎广告定位App的问题,当时这个给Murthy的第一感觉是Hadoop需要另一个系统。
Murthy的第一感觉是Hadoop需要另一个系统
当时用临时手段解决了那个bug后,他开始筹谋这怎么彻底解决那个大bug。 从2008到2010年,Hadoop团队一直在关注如何提高Hadoop的安全性和稳定性,使其更具企业特征。许多相关的系统,比如被内置在主要分布集群中的Pig和Hive就是希望打造不用运行MapReduce而查询Hadoop的软件,但其实还是没抽离出MapReduce,其查询只是被译成从 MapReduce的方式罢了。
2010年中的时候,Hadoop团队认为Hadoop是时候改革了,Murthy和所有 Hadoop社区的开发者集结起来准备解决这个老问题,最后成果就是后来加入Hadoop 2.0的YARN附件。
YARN诞生
YARN是一个坐落在HDFS上的系统,支持开发者创建和HDFS互动的应用,无需启动整个MapReduce,Murthy表示:“2.0其实不是一个任意数,是Hadoop第二体系”。
YARN确定使用后,许多新的软件也开始被创建出来进一步补充Hadoop。比如Twitter使用Spark用来实时处理数据;雅虎使用Spark用来处理存储的数据。Cloudera创建了Impala提高了查询Hadoop的速度。
但Murthy表示,只要开发者愿意,他们就可以使用YARN来查询Hadoop,使得整个大数据的系统变得更为有效。
IT检测公司Nodeable就在自己的Storm和Hadoop之间建立了一个整合系统,称为StreamReduce,其副总裁(Appcelerato副总裁,Nodeable被Appcelerator收购 了)表示YARN就是将来他们要进行批处理或者实时处理时需要的东西。
Hadoop 2.0
Spark主要在HDFS上运行,虽然它丢弃了MapReduce,远离了官方的Hadoop,但YARN足够让它们相互联系,如果只想要一个简单的部署,可以不用YARN,但是有的用户喜欢它,愿意安装它。
目前YARN已经存在在不少Hadoop分布中,包括Cloudera分布等。官方Hadoop 2.0开源项目beta版本马上要推出了,完全渗入市场可能还需要一段时间,但是它普及的时候将会带来很大的变化,无论如何,我们要感谢那个凌晨3点的电话。