前几天微软财报公布后,股票大涨,定在了60块以上。这是对微软有着历史意义的一刻。微软这个上世界最为蓬勃发展的公司在2000年的时候股票达到60块一股,这之后就一路走下坡路,16年之后,才重新爬回了当年的股价,有了历史新高。当然,这个历史新高其实不能算新高,货币都不知道贬值了多少轮了。
然而微软的出身类似一个屌丝,所有windows95上市,万人空巷抢购,类似今天排队买Iphone,却有了当年苹果公司的一句评价,Windows 95 = Macintosh 89。只是不可否认的是,在相当长一段时间里,这个屌丝翻身革命的占据了整个个人计算机的绝大部分市场,而苹果公司到1998年股票跌到了个位数。
大家可能奇怪了,为什么今天的大数据那些事,尽扯一些毫无关系的话题。其实当然是有关系的。我在讲大数据的这些事情的时候,比较刻意的让时间先停在了2008年前后,因为这一年前后对于现在的Hadoop Ecosystem有着很重要的意义。而我觉得再我们进入到近代Hadoop的历史之前,做个小结,问几个问题,试着寻找一下答案,也是颇有意义的一件事情。
大数据的发展,在2008年以前,属于古代。古代的时候,只有Google耀眼的三驾马车以及年年赚钱的财报。Hadoop的屌丝轮子正在努力的造着。不知道接下来的情况怎么样。至于其他的建筑于大数据基础构架之上的轮子,半个影子也没有见到。而2008年的时候,开始出现了现在还知道名字的Pig,现在不但知道名字,还以老一辈先辈在努力和后辈继续战斗的HIVE,以及曾经闪过几下但是现在恐怕没有几个人知道的JAQL。
虽然说作为一个Database的PhD,07年的时候就已经读过了Google的马车们,包括BigTable这样的著作。然而只是在2008年我来到IBM Almaden Research Center,第一次用上破败不堪的Hadoop的时候才真正的感受到大数据的力量。当然,那个时候的Hadoop圈子们自己也不知道自己要走向哪里去。在Yahoo的Hadoop Summit我参加了几次。经常就是迷茫加互相打鸡血的状态,就着pizza。那个时候我也遇到了IBM研究院里的一个牛人Eugene Shekita。我这几十年的人生里见过的聪明人也很多了,然而不得不说,能够让我比这位印象还深刻的人,实在是几乎没有。这位当然后来种种原因离开了钟爱的IBM去了Google。他在那个时候就极具远见的坚定不移的表示Hadoop这个东西虽然现在破烂,以后必然会大放异彩。
那个时候我就在想了,Google有着极为先进的理念,和非常优秀的infrastructure。放着大数据这样的一个蛋糕,为什么就没开源出来,来主导这个领域的发展。而Hadoop这个如果Google的系统是火箭的话,这个撑死一拖拉机的系统,居然越来越壮大和进化了。如果我们需要深究下去的话,其实Hadoop的实现也有很多的不同地方。最简单的就是各种概念都大量的简化了。这个问题等我再过两三年以后才明白。
Windows95的成功不是说windows有多好,是Mac实在是太贵。一个贵得离谱的东西即使再牛,也不会有市场。Google这个公司有一个非常奇特的偏见,这个偏见在很多的行为上都表现出来。这个偏见就是Google自己觉得自己是怎么样的,这个世界就应该是怎么样的。倒不一定是傲慢,而是确实睁眼瞎。
比如说,Google的MapReduce是为了解决海量数据上做inverted index的问题而设计的。Google的整个系统和平台都是为了整个互联网服务的。这意味着什么呢?简单一点就是大,数据规模大,需要的机器多,要的计算量大,各种各样的随机失败也很多。所以Google做出来的系统都是首先要有足够的体量,跨几个data center无所谓,其次要有很高的并发度,再次还需要足够多的冗余以及自动恢复的能力。但是请注意,这些东西都是需要代价的。这种代价,有的时候在不同的场景看,还非常的大。
而Hadoop的起家则很不一样,就是两个程序猿要为开源做贡献,当然其中一猿最后成了Cloudera的首席,一猿成了大学的叫兽。两个人,撑死了以10为量级的机器,搭出来的一个不稳定的各方面简化的系统。这样的系统有一个天然的优点:屌丝,够cheap。
我来解释一下吧。大概是2011年的时候,学术圈有人做了一个调查,看看大家用的Hadoop Cluster到底有多大,结果出来很有意思,20台机器左右的Hadoop Cluster占据了不止半壁江山。往上走,最多几百,上千的Hadoop cluster只存在于已经功成名就的互联网公司。拿微软的Cosmos举个例子就明白了。Cosmos是一个很多方面设计理念比Hadoop要先进的系统,但是它本来就是为了大的数据中心设计的。一个数据中心要部署Cosmos,先要来几十台机器,不做实际的事情,这些机器有的管deploy,有的管监控,有的管调度,这些都是不可用的worker。一个数据中心上去几万台机器,为了能更好更自动化的运行,弄出几十台机器去干其他活,其实性价比很高。但是Cosmos就是这样的贱,如果你来40台机器,它还是要这个那个的占去很多,deploy完了,我的妈,有一半的机器能干实际的MapReduce就不错了。对于小一些的cluster,这资源的利用率和各种各样需要加上的没什么意义的service,让这种系统成为一个没什么性价比的系统。
Google既然有GFS, 有Borg,有很多其他的东西,那么部署起来,必然是需要很多机器做不是实际的事情的。这无法避免的根本在于那个系统本来一开始就是为了一个大数据中心而设计的。所以屌丝的确也有屌丝的好处。一个系统如果设计起来弄进了条条框框,就容易把自己框的死死的,谁也不能免俗。我想即使Google一开始不愿意开源,后来恐怕不是不愿意,而是开不出来吧。就算开出来了,占据Hadoop市场大部分的中小型cluster也无法高效率的部署这样的系统。
所以很多年以后再来看,Hadoop能够起来,也有着它是从几十台机器起家,开始就设计的特别的屌丝的血脉在。毕竟在这个世界上,需要处理整个互联网规模的数据的公司,终究是两个手指头竖的过来的。而那些需要几十台机器部署BigData的解决方案的公司,则是无穷无尽的。
我知道,我想大家也知道,Hadoop取得的成功有着很多的原因,但是有的时候从根源上看一看,然后看看到底有多少的客户对应了这种根源上的需求,其实也能从另外一面给我们一些启示。所以从做人的角度来说,我们每个人也是被我们自己的日积月累的bias所围困着,能跳开自身局限之外看世界的人,都是伟人。时势造英雄还是英雄成就时势,真是永恒的话题。
转自《飞总聊IT》