大数据的起源和错失大数据市场鼻祖的Google
大数据是什么
我从08年开始实际接触hadoop的,这得益于当年IBM和我在的学校的一次合作,做一个研究项目:怎么样用蒙特卡洛的办法来解决数据中的不确定性问题。这个解决方案有两个特点,第一是计算量非常非常的大,第二是计算和计算之间相对独立。这就使得基于Hadoop的并行计算成为一个很好的选择。
大数据作为一个名词其实是晚于Hadoop的,更是晚于MapReduce。曾经有那么一段时间,流行的词语是MapReduce而不是大数据。当然再后来,大数据这个词就流行开了。但是大数据到底是什么,到今天应该还是稀里糊涂的一笔账。
话说我做所谓的大数据都不知道多少年了,今天我还是搞不清楚大数据到底是什么。于是我就请教权威吧,查了一下百度百科。
百度百科是这样定义的:
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
我不知道大家是不是读懂了,反正我做大数据这么多年,这段定义我是读不懂。
这个定义最大的特点,和很多红皮书白皮书黑皮书之类的差不多,就是装逼。说白了,不说人话。反正我是没听明白大数据和小数据有什么本质的区别。无非是数据和处理数据的工具以及从数据里面提取有用信息变成钱的过程。曾经我们在做这些事情,现在我们在做这些事情,将来我们也会继续做这些事情。
所以呢,我在我的文章里面共享过行为学家Dan Ariely关于大数据的名言,今天的讲座我们继续共享一下这段名言:
Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.
简单翻译一下:
大数据就像青少年性行为:大家都谈论,没有人真正知道怎么做,每个人都认为其他人都在做,所以每个人都声称自己在做。
以前几年国内大数据概念炒上天的情况来看,其实真的谁也不知道大数据是什么,谁也不清楚大数据怎么玩,但是各行各业忽如一夜春风来,冒出无数个大数据公司大数据专家。
说的俗一点,大数据是造出来的概念。我们人类其实非常擅长造概念,炒概念,然后炒完一个以后再起一个新的。所以大数据作为一个人造的概念飞起来也不奇怪。就像现在的人工智能一样也是炒概念。早年还有纳米洗衣机呢。
现在我们可以看到各行各业都在谈论大数据。从政府到企业,从互联网行业到传统行业,随便写个App背后没有大数据都不能叫好App。现在大数据都上升到国家高度了。比如说政府办公要上大数据,一个三线城市,放两三台机器搞定的,这数据真的非常的大。
如果我们撇开大数据这个概念不谈,自从有了数据以来,人类一直做的事情是什么?这个其实也是今天大数据的背景下大家都在做的事情,概括起来讲:分析数据,产生有价值的信息。
这个事情20年前在做10年前也在做,今天还是在做,其实没什么变化。 那么什么东西发生了变化呢?最大的一个是工具的能力发生了变化。 现在我们可以几千几万台机器一起协同做计算了。其次是性价比的变化。以前买Oracle的数据库IBM大型机Teradata的解决方案,贼贵。现在开源软件一搭,弄些PC机就好。糙一点无所谓,所谓便宜才能普及。
然而本质来讲,大家做的事情并无改变。所以我们不需要去纠结于大数据到底是什么,而是要看清楚具体业务问题是什么,有什么合适的工具去解决。这些工具可能是新的也可能是旧的。我想大数据的所谓发展无非就是工具的进步使得大家能够更有能力去在限定的时间内处理更多的数据,获得更有效的信息。
Google的大数据发展
大凡我们开始提到大数据的时候,都会提到Google。就像学哲学的言必称希腊一样。讲到大数据不提Google,就有点感觉不是正宗做大数据的。我以前认识一个学哲学的中国人,天天都挂着苏格拉底,柏拉图,亚里士多德,希腊三贤人。我们聊大数据,其实也差不多。挂嘴边的就是Google三驾马车。
这三驾马车是Google File System, MapReduce和BigTable.这些东西在开源的世界里面的代表分别是Hadoop File System, Hadoop MapReduce, 以及HBase。Google File System出来的最早,MapReduce最有名,BigTable出来的最晚。
Google之所以成为大数据的鼻祖,在我个人看来,最主要的原因不是它的技术有多牛,而是它的商业模式向我们展示的东西和前人非常的不同。
在Google之前很多互联网服务是收费的,比如说邮箱。Google搞起了免费的Gmail,然后越是免费就越是赚钱。因为Google有一个有针对性投放广告的系统。而投放广告则给Google带来了规模效应,越多的人用,收入也就越多。Google之所有能够让这个广告系统有效,重要的就是对用户的数据做了分析,并且从分析以后的海量数据里面变成了真金白银。雪花花的银子摆在大家面前,所谓财帛动人心。因为有钱赚,别人才会在乎它家的技术。任何的技术都没有Google每次财务报告里面不断滚动增长的钱来得有说服力。
Google三架马车分别的意思是:
Google File System:文件系统
MapReduce:编程模式和运行环境
BigTable:一个SortMap
其实我们需要先了解一下Google发明这些技术最初是为了什么。
文件系统很简单,当然是存文件的。Google之所以需要一个新的文件系统是因为Google需要存储的数据是整个互联网加上各种索引等等。这样的数据规模显然无法通过现存的技术来支持,所以Google就发明了自己的文件系统。
能够廉价的海量存储数据是一切后续的基石。这个文件系统其实是整个构架里面最为基础和核心的东西。所以如果我们以此类比去看,在Hadoop的世界里, Hadoop File System才是最牢固的基石,其他东西能变这个也不能变。
正是因为有了HDFS,才成就了Hadoop的生态圈;而不是因为有了Hadoop的MapReduce。要不今天为什么Spark满天飞呢?
MapReduce在2006到2012年的期间被炒翻天了。我们先不看为什么MapReduce被吵翻天。本质上来讲,Google发明这个技术最重要的目的是为了它的网页搜索建立inverted index。搜索本质上是搜索关键词到网页的一个对应过程。网络爬虫爬下来的网页会被建立起从网页里面的单词到这个网页的逆向索引。而这种索引的建立在整个互联网的规模下是一个非常有挑战的问题。Google在MapReduce做出来之后最大的目的就是为了建立这个索引。而我们看到的论文里面的word count的例子也可以看做是这种逆序索引的一个简化的例子。
MapReduce后来就被神话了。MapReduce的论文,我其实很难区分是Google故意搅浑水还是Google自己也被自己的虚假成就给迷惑了。有一段时间,MapReduce在Google和数据库元老、图灵奖获得者Michael Stonebraker之间展开了一场大撕逼。基本上的原则来说,图灵奖获得者觉得这个东西没什么,很傻逼。而Google则认为这是救市良药。唯一的作用是在那些年里,MapReduce催生了无数的论文。大家把成年的各种问题用MapReduce重新实现了一遍。应该说给广大科研工作者创造了很多的研究机会。而对于实际上这个业界的毒害是很明显的。Hadoop长期以来就只提供了MapReduce的实现,笨,慢,资源浪费等等。
至于BigTable,和其他两个东西比其实是一个很突兀的东西。当然BigTable并不是自己称呼自己是Map而是说叫做Key-Value Store,又改一个名字叫做NoSQL。这些东西也是炒作概念了。 BigTable的最大的目的依然是建立 inverted index。只是不同的是,这个工具提供了incremental build的功能。这就是Google新一代的索引引擎Caffeine的基础。
所以我们如果扒个皮来看的话,这三驾马车本质上来说首先是为了Google的互联网搜索服务的。这样的工具是否具有普适性。其实很难说。文件系统当然是好东西。但是Hadoop的文件系统其实被很多人骂。所以有人直接重新写了文件系统保留了接口。MapReduce这个东西,连做join都非要把两个数据源硬合并成一个数据源,怎么样来看都是模型本身太过于狭隘。做不得是一个很通用的计算模型。至于BigTable吗,连Google自己的广告部门都宁愿用MySQL也不肯用BigTable,这个没有实现transaction支持的系统其对用户写应用有很多的负担和要求。在Facebook里面一度有传出来要用HBase取代MySQL的做法。但是不知道是HBase本身不成熟还是BigTable的概念的问题,这个一直没做成,而MySQL则一直活下去了。
Google的大数据技术的发展还可以展开说很多。但是我只是想强调我个人的一个观点,Google的技术是为了Google内部的使用而发展起来的,而它带着明显的为互联网搜索服务的特征。所以它们本质上来说也是为了解决Google的问题和需要,这些东西适合不适合外面其他的人,就是两说的了。
而我们必须说,实际上,这些工具的确被开源拷贝。但是我们同样看到,开源社区很快就走向其他的途径了。比如SQL-ON Hadoop像HIVE就出来了。
HIVE这个东西,虽然下面还是用了MapReduce,它对用户的编程模型就变了,变得不是那么的搜索相关了。下面的引擎现在也给换成更通用的TEZ了。
因此我这里最主要的观点是Google本身发展出来的技术的目的性其实明确,没有那么多的普适性。到开源生态圈里面,慢慢就会有变化,而这种变化作为技术的最初发明者的Google其实并没有迅速的接受并且改变。
Google为什么错失了大数据市场
我们继续聊第三个问题,为什么Google作为大数据的鼻祖一般的公司,有三驾马车的奠基性工作,但是其实在这场大数据概念和由概念引起的赚钱风潮里面没有赚到钱,也没有实际的话语权。很多人会说很简单啊,不就是有Hadoop吗?但是Hadoop是怎么来的?又是怎么就成了这个庞然大物?Google就任由Hadoop成长吗?
这个问题我们先说第一点,Google是个很奇葩的不会做生意的公司。(我先声明,下面都代表我个人观点。大家可以不同意,听听就好。)
Google做生意最大的特点在于,把自己当聪明人把其他人都当傻子。对傻子么, 骗一个是一个。先举个例子,Google推出一个东西叫做Chromebook,一台电脑打开来,里面只有一个Chrome浏览器。然后Google的想法其实是,你上了浏览器的贼船以后你的所有数据都必须存在我这里了。我有了你的数据就可以这样那样的利用你的隐私给我更好的赚钱。你想吧,花钱买个硬件,里面只有浏览器,你愿意吗?这是典型的广告厂商的大数据思维。但是宣传不是这样的,宣传是这样多好多好。未来的趋势就是什么都在“我Google”的Cloud上。
Chromebook曾经很长时间都卖得不好。等到Google开放了本地硬盘存储作为cache以后,这个局面才得到改善。我并不否认有一部分的人一部分的场景需要Chromebook这样的东西。但是如果把这个吹成了所有的人未来都是这样的,那么到底是Google傻还是消费者傻呢?
Google想给大家提供大数据的服务的念头和实践其实非常早。在2008年的时候,就主推一个叫做AppEngine的东西。如果有机会去听那个年代的Google的讲话和宣传,大概的说法就是你看我们多牛逼,发表了三架马车的论文。我们现在开放了这些牛逼的技术的API,你只要把数据放到我们这里来,我们就替你搞定了。
问题呢?很多时候用户并不想把数据存到你的那个BigTable里面去。一方面是自己的数据进到别人肚子里了,另外一方面BigTable的API实在难用,不如SQL写的痛快。
用户,哪怕是用云的用户,很多时候也是希望用一些看得见摸的着的东西。这种把用户变成纯粹写APP而所有的基础架构都要用Google的想法,在今天可能还是有些机会的。
但是在2008年的时候,不由得各大弯曲创业公司担心Google是不是会把所有的创业公司都变成它庞大的基础架构上面写APP的人。所以AppEngine出来一直都不死不活的。没人敢用啊,免费都不敢。Google大概4年以后不得不学亚马逊开始卖虚拟机,叫做compute engine。但是那个时候已经太晚了。当然也不是没傻子被骗,有个前几天刚上市的SnapChat,就上了google的贼船。现在每年要给Google交租很贵。
而且没法换,数据都在人家那个奇葩的东西里,想倒出来还不是太容易。业务逻辑也和其他的云计算提供商不一样,改用亚马逊,程序都要重写。
换句话说如果Google发表了论文,然后发起一个开源项目,主推的话,今天的世界早就不一样了。有影响力有技术,开源都是Google的,妥妥的。用了AppEngine这个方式去,是Google一个比较大的战略错误。
为什么在08年推AppEngine,目的就是和当年推Chromebook异曲同工。想要别人把数据都放到它那里。才能更好地做广告。
第二个原因其实在于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有过关于数据中心怎么建设的研究,内部研究表明不是越大越好,差不多是最有效的。然而对外的宣传却一直是越大越好,大的才能省能耗。关于这个误导了业界一段时间。
后来比较大的一件事情是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自己都不好意思用人工智能给自己大数据没赚到钱去背锅。