天天看點

大資料的起源和錯失大資料市場的鼻祖Google

今天的講話有三個主題:

大資料是什麼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的解決方案,賊貴。現在開源軟體一搭,弄些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自己都不好意思用人工智能給自己大資料沒賺到錢去背鍋。

本文轉自d1net(轉載)

繼續閱讀