今天的講話有三個主題:
大數據是什么Google的大數據發展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的解決方案,賊貴?,F在開源軟件一搭,弄些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的賊船?,F在每年要給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:大數據有什么具體應用?什么情況下才會用大數據?
飛總:這個問題是太寬泛了。非要我回答,只要能從數據里面變出錢來,就可以啊。最后大家用大數據,無非是想多賺錢。貼個笑話回答這個問題吧:昨天和淘寶一賣奢侈品的店主聊天,說起大數據在淘寶的應用,他就跟我講,其實他們一般看好評和花費這兩項:舍得花錢且從來不給差評的,就給他們高仿的;不舍得花錢不過也不給差評的,那就給他們假的;而給差評的一般是愿意較真的,所以一般就會跟他們說沒貨了取消訂單;這就是大數據的應用啦。
大家笑笑就好。基本上來說業務邏輯需要的時候,就用唄。業務邏輯是什么,業務和業務不同啊?,F在比較成熟的就是廣告里面怎么靠大數據賺錢了。
Q3:Google大數據沒發展,其實我是覺得他是布局到更遙遠的人工智能吧,人工智能需要的基礎其中之一就是大數據不是嗎?
飛總:呵呵,我想,人工智能其實就是一個炒起來的概念,鬼知道什么是人工智能呢?google做的東西,無非是神經網絡,這個理論其實一直在,計算能力不夠,訓練樣本不夠而已。我想Google自己都不好意思用人工智能給自己大數據沒賺到錢去背鍋。