本文分三部分,讲了大数据是什么,Google大数据的发展和谷歌为什么错失了大数据。
大数据是什么
我从08年开始实际接触Hadoop的,这得益于当年IBM和我在的学校的一次合作,做一个研究项目:怎么样用蒙特卡洛的办法来解决数据中的不确定性问题。这个解决方案有两个特点,第一是计算量非常非常的大,第二是计算和计算之间相对独立。这就使得基于Hadoop的并行计算成为一个很好的选择。
话说我做所谓的大数据都不知道多少年了,今天我还是搞不清楚大数据到底是什么。于是我就请教权威吧,查了一下百度百科。
百度百科是这样定义的:
我不知道大家是不是读懂了,反正我做大数据这么多年,这段定义我是读不懂。
这个定义最大的特点,和很多红皮书白皮书黑皮书之类的差不多,就是装逼。说白了,不说人话。反正我是没听明白大数据和小数据有什么本质的区别。无非是数据和处理数据的工具以及从数据里面提取有用信息变成钱的过程。曾经我们在做这些事情,现在我们在做这些事情,将来我们也会继续做这些事情。
Bigdataisliketeenagesex:everyonetalksaboutit,nobodyreallyknowshowtodoit,everyonethinkseveryoneelseisdoingit,soeveryoneclaimstheyaredoingit.
简单翻译一下:
大数据就像青少年性行为:大家都谈论,没有人真正知道怎么做,每个人都认为其他人都在做,所以每个人都声称自己在做。
以前几年国内大数据概念炒上天的情况来看,其实真的谁也不知道大数据是什么,谁也不清楚大数据怎么玩,但是各行各业忽如一夜春风来,冒出无数个大数据公司大数据专家。
说的俗一点,大数据是造出来的概念。我们人类其实非常擅长造概念,炒概念,然后炒完一个以后再起一个新的。所以大数据作为一个人造的概念飞起来也不奇怪。就像现在的人工智能一样也是炒概念。早年还有纳米洗衣机呢。
现在我们可以看到各行各业都在谈论大数据。从政府到企业,从互联网行业到传统行业,随便写个App背后没有大数据都不能叫好App。现在大数据都上升到国家高度了。比如说政府办公要上大数据,一个三线城市,放两三台机器搞定的,这数据真的非常的大。
如果我们撇开大数据这个概念不谈,自从有了数据以来,人类一直做的事情是什么?这个其实也是今天大数据的背景下大家都在做的事情,概括起来讲:分析数据,产生有价值的信息。
这个事情20年前在做10年前也在做,今天还是在做,其实没什么变化。那么什么东西发生了变化呢?最大的一个是工具的能力发生了变化。现在我们可以几千几万台机器一起协同做计算了。其次是性价比的变化。以前买Oracle的数据库IBM大型机Teradata的解决方案,贼贵。现在开源软件一搭,弄些PC机就好。糙一点无所谓,所谓便宜才能普及。
Google的大数据发展
大凡我们开始提到大数据的时候,都会提到Google。就像学哲学的言必称希腊一样。讲到大数据不提Google,就有点感觉不是正宗做大数据的。我以前认识一个学哲学的中国人,天天都挂着苏格拉底,柏拉图,亚里士多德,希腊三贤人。我们聊大数据,其实也差不多。挂嘴边的就是Google三驾马车。
这三驾马车是GoogleFileSystem,MapReduce和BigTable.这些东西在开源的世界里面的代表分别是HadoopFileSystem,HadoopMapReduce,以及HBase。GoogleFileSystem出来的最早,MapReduce最有名,BigTable出来的最晚。
Google之所以成为大数据的鼻祖,在我个人看来,最主要的原因不是它的技术有多牛,而是它的商业模式向我们展示的东西和前人非常的不同。
Google三架马车分别的意思是:
GoogleFileSystem:文件系统
MapReduce:编程模式和运行环境
BigTable:一个SortMap
其实我们需要先了解一下Google发明这些技术最初是为了什么。
文件系统很简单,当然是存文件的。Google之所以需要一个新的文件系统是因为Google需要存储的数据是整个互联网加上各种索引等等。这样的数据规模显然无法通过现存的技术来支持,所以Google就发明了自己的文件系统。
能够廉价的海量存储数据是一切后续的基石。这个文件系统其实是整个构架里面最为基础和核心的东西。所以如果我们以此类比去看,在Hadoop的世界里,HadoopFileSystem才是最牢固的基石,其他东西能变这个也不能变。
正是因为有了HDFS,才成就了Hadoop的生态圈;而不是因为有了Hadoop的MapReduce。要不今天为什么Spark满天飞呢?
MapReduce在2006到2012年的期间被炒翻天了。我们先不看为什么MapReduce被吵翻天。本质上来讲,Google发明这个技术最重要的目的是为了它的网页搜索建立invertedindex。搜索本质上是搜索关键词到网页的一个对应过程。网络爬虫爬下来的网页会被建立起从网页里面的单词到这个网页的逆向索引。而这种索引的建立在整个互联网的规模下是一个非常有挑战的问题。Google在MapReduce做出来之后最大的目的就是为了建立这个索引。而我们看到的论文里面的wordcount的例子也可以看做是这种逆序索引的一个简化的例子。
至于BigTable,和其他两个东西比其实是一个很突兀的东西。当然BigTable并不是自己称呼自己是Map而是说叫做Key-ValueStore,又改一个名字叫做NoSQL。这些东西也是炒作概念了。BigTable的最大的目的依然是建立invertedindex。只是不同的是,这个工具提供了incrementalbuild的功能。这就是Google新一代的索引引擎Caffeine的基础。
Google的大数据技术的发展还可以展开说很多。但是我只是想强调我个人的一个观点,Google的技术是为了Google内部的使用而发展起来的,而它带着明显的为互联网搜索服务的特征。所以它们本质上来说也是为了解决Google的问题和需要,这些东西适合不适合外面其他的人,就是两说的了。
而我们必须说,实际上,这些工具的确被开源拷贝。但是我们同样看到,开源社区很快就走向其他的途径了。比如SQL-ONHadoop像HIVE就出来了。
因此我这里最主要的观点是Google本身发展出来的技术的目的性其实明确,没有那么多的普适性。到开源生态圈里面,慢慢就会有变化,而这种变化作为技术的最初发明者的Google其实并没有迅速的接受并且改变。
Google为什么错失了大数据市场
我们继续聊第三个问题,为什么Google作为大数据的鼻祖一般的公司,有三驾马车的奠基性工作,但是其实在这场大数据概念和由概念引起的赚钱风潮里面没有赚到钱,也没有实际的话语权。很多人会说很简单啊,不就是有Hadoop吗?但是Hadoop是怎么来的?又是怎么就成了这个庞然大物?Google就任由Hadoop成长吗?
Google想给大家提供大数据的服务的念头和实践其实非常早。在2008年的时候,就主推一个叫做AppEngine的东西。如果有机会去听那个年代的Google的讲话和宣传,大概的说法就是你看我们多牛逼,发表了三架马车的论文。我们现在开放了这些牛逼的技术的API,你只要把数据放到我们这里来,我们就替你搞定了。
问题呢?很多时候用户并不想把数据存到你的那个BigTable里面去。一方面是自己的数据进到别人肚子里了,另外一方面BigTable的API实在难用,不如SQL写的痛快。
用户,哪怕是用云的用户,很多时候也是希望用一些看得见摸的着的东西。这种把用户变成纯粹写APP而所有的基础架构都要用Google的想法,在今天可能还是有些机会的。
但是在2008年的时候,不由得各大弯曲创业公司担心Google是不是会把所有的创业公司都变成它庞大的基础架构上面写APP的人。所以AppEngine出来一直都不死不活的。没人敢用啊,免费都不敢。Google大概4年以后不得不学亚马逊开始卖虚拟机,叫做computeengine。但是那个时候已经太晚了。当然也不是没傻子被骗,有个前几天刚上市的SnapChat,就上了google的贼船。现在每年要给Google交租很贵。
换句话说如果Google发表了论文,然后发起一个开源项目,主推的话,今天的世界早就不一样了。有影响力有技术,开源都是Google的,妥妥的。用了AppEngine这个方式去,是Google一个比较大的战略错误。
第二个原因其实在于Google的优越感和对其他公司的低估。Google的技术领先业界很多年。但是其他公司比如Facebook,Linkedin有点规模的显然不会选择通过重写自己的应用,绑到AppEngine的API上去来用Google的系统。所以很大程度上来说,Hadoop是业界自然而然对于这些技术的一个回应。Google不做肯定是有人做的。
在Hadoop出来的早年,那个难用:性能差,功能差。Google很开心的和IBM买下了一个破旧的datacenter装上Hadoop,以便可以让学术界的人领会一下MapReduce的伟大,然后可以投奔Google。
这当然没有成功。相反的,正是因为大家都知道和Google的差距,这么多公司才会在Hadoop项目的早期就一路开源互相合作来打造一个生态系统。我想Google的科技肯定是领先的,人才也是济济的。但是双拳难敌四腿。一个从一开始就试图把大家绑到自己战车上,又对周围所有人看不起的公司,最后是会被乱拳打死的。永远不要小看了整个世界。
在2008年的时候Hadoop和Google差距是巨大的,到2016年呢?这个差距就没有那么大了,技术的先进性只有这么多。一个人永远不要小看整个世界的力量。
第三个原因在于Google不是一个实诚的公司。大家对Google都有信任危机。Google常常会通过发表不实的论文来误导整个业界造成战略欺骗,或者故意隐瞒重要的信息。比如说,我对Google披露的信息是不信任的。
后来比较大的一件事情是Google的MapReduce数据跑起来非常的牛逼。但是Hadoop死活就是做不到那么好,无论稳定性还是资源的精确控制。这个原因今天大家知道了,Google很早就开始使用容器了。cgroup这个关键的补丁就是Google提交给linux的,但是Google从来没有宣传过它是用容器的。这个秘密是后来随着Google人才流失而慢慢被大家知道的。这才有了twitter做Mesos的故事。
从某种程度上来说,这种利用自己影响力来做战略欺骗的做法可以一时得逞,若干年得逞。但是到最后当然就是大家都不信任了。也可以这样说,今天Google有很多大杀器,但是没有人愿意把自己的未来绑定到大杀器上。其他的云服务商,比如亚马逊比如微软,客户所选择的是通用的Hadoop体系,所以到最后这成了标准。Google也就没有了话语权。一时的得利,换来整个行业对这个公司的警惕和不信任。值得不值得呢
Google显然意识到了信任危机,所以最近这两年开源的开源,然后继续开源。但是,我想这种坏印象的形成,不容易改变了。
最后一个原因吧,Google始终都没有明白一件事,就是解决一个或者几个规模非常巨大的问题的体系架构,不一定就适用于解决无数多个问题,但是每个问题规模都不大的场景。
亚马逊卖云服务,基本上来说大客户少,有的是庞大的小客户,所以要支持无数多个小客户。而Google解决互联网搜索和跨大洲做事务处理的这些黑科技,这世界上绝大部分小客户都用不上。
Hadoop这个东西好啊,20台node就能工作了,worker很多,浪费的机器很少。代价当然是各种不稳定各种没办法scale。Namenode出了名的烂。
但是在Google这种体系里面,系统的基本目标是要支持几千几万台机器的。那就必须有一些机器去做无用功。比如要watchdog啊,要记录写log啊,这些机器的比例在大数据中心的前提条件下不高,但是哪怕只有20台机器,这些服务每个起码一台机器也得占上。所以如果我要20台的话,跑个Google版本的MapReduce,能不能跑起来先不说,跑起来了估计18台机器都在干杂活,两台机器能用。
Google虽然号称做大数据,它也确实解决了大数据运算的问题,比如说互联网搜索,比如说围棋,但是这套体系是不是和为大量的中小型用户去服务的体系很好的切合,我认为不是的。所以Google并没有具备竞争优势。它提供的大数据服务也就是看着好看而已了。
答疑环节
Q1:现有的大数据云平台越来越多,例如百度的云智,阿里的御膳房,提供的大数据服务越来越多元化,是不是意味着小创公司可以不需要自己的大数据团队?
飞总:我觉得小公司可以不需要做大数据基础架构的团队,但是做数据分析的团队还是要的吧。数据到有用的信息,不可能指望大数据云平台给你自动做掉啊。
Q2:大数据有什么具体应用?什么情况下才会用大数据?
飞总:这个问题是太宽泛了。非要我回答,只要能从数据里面变出钱来,就可以啊。最后大家用大数据,无非是想多赚钱。贴个笑话回答这个问题吧:昨天和淘宝一卖奢侈品的店主聊天,说起大数据在淘宝的应用,他就跟我讲,其实他们一般看好评和花费这两项:舍得花钱且从来不给差评的,就给他们高仿的;不舍得花钱不过也不给差评的,那就给他们假的;而给差评的一般是愿意较真的,所以一般就会跟他们说没货了取消订单;这就是大数据的应用啦。
Q3:Google大数据没发展,其实我是觉得他是布局到更遥远的人工智能吧,人工智能需要的基础其中之一就是大数据不是吗?
飞总:呵呵,我想,人工智能其实就是一个炒起来的概念,鬼知道什么是人工智能呢?google做的东西,无非是神经网络,这个理论其实一直在,计算能力不够,训练样本不够而已。我想Google自己都不好意思用人工智能给自己大数据没赚到钱去背锅。