大數(shù)據(jù):找合適的瓶,釀新的酒
為什么談到大數(shù)據(jù),傳統(tǒng)企業(yè)表現(xiàn)出更多的困惑?其原因是,企業(yè)決策者并不清楚大數(shù)據(jù)能給業(yè)務帶來哪些價值,也不知道如何學習、使用大數(shù)據(jù)分析工具。而這些大數(shù)據(jù)工具就擺在那里,誰能先一步學習使用,誰就占有先機。
算起來,接觸大數(shù)據(jù)、和互聯(lián)網(wǎng)之外的客戶談大數(shù)據(jù)也有快2年了。也該是時候整理下一些感受,和大家分享下我看到的國內大數(shù)據(jù)應用的一些困惑了。
云和大數(shù)據(jù),應該是近幾年IT炒的最熱的兩個話題了。在我看來,這兩者之間的不同就是:云是做新的瓶,裝舊的酒; 大數(shù)據(jù)是找合適的瓶,釀新的酒。
云說到底是一種基礎架構的革命。原先用物理服務器的應用,在云中變成以各種虛擬服務器的形式交付出去,從而計算、存儲、網(wǎng)絡資源都能被更有效率的利用了。于是,酒量好無酒不歡的人就可以用個海碗牛飲二鍋頭;酒量小又想嘗嘗微醺小醉風情的人也可以端個小杯咂巴咂巴女兒紅。
大數(shù)據(jù)的不同在于,它其實是把以前人們丟棄不理的數(shù)據(jù)都撿起來,加以重新分析利用,使之產(chǎn)生新價值的技術。換句話說,原先20斤的糧食只能出2斤的酒糟,現(xiàn)在20斤的糧食都變成或者大部分變成酒糟。當然這酒糟肯定會和原先的酒糟有不一樣,所以釀出來的酒肯定和以前不同,喝酒、裝酒、儲存酒的方法自然也不同。
所以,相對于云,人們對大數(shù)據(jù)使用的困惑更大。接下來談談我所看到的幾類最多的困惑,以及我們目前存在哪些問題。
困惑之一:大數(shù)據(jù)能干什么?
換用前面飲酒來作比方,這新釀出來的酒怎么喝才可以喝得痛快。這里不再想討論到底哪些數(shù)據(jù)是大數(shù)據(jù)了。 下面這張圖是Gartner 對各行業(yè)對于大數(shù)據(jù)需求的調查,該統(tǒng)計針對大數(shù)據(jù)通用的3個V , 以及未被利用數(shù)據(jù)的需求情況做了分類。 可見幾乎所有行業(yè)都對大數(shù)據(jù)有著各種各樣的需求。

圖片來自Gartner
為什么有這些需求,是因為以前這些類型的數(shù)據(jù)都因為技術和成本的原因,用戶沒有收集處理。現(xiàn)在有了性價比合理的手段可以讓你收集處理這些數(shù)據(jù),怎么可能說不要?還是以釀酒做比喻,以前釀兩斤酒糟要浪費18斤的糧食,現(xiàn)在至少20斤糧食可以有10斤都變成酒糟了,雖然這些酒糟可能和以前不大一樣,但至少可以少浪費8斤糧食呢。
現(xiàn)在問題來了,酒糟多了,種類不一樣了,怎么根據(jù)新的酒糟釀酒呢?對不起,這個問題酒作坊就要別人來教了。但問題是,所有酒坊現(xiàn)在可能都面臨這同一個問題,于是就沒人可以教你了,只能自己慢慢摸索。這個就是現(xiàn)在各行業(yè)面對大數(shù)據(jù)的最大困惑 --- 海量的數(shù)據(jù)收集上來不知道怎么用。
這里不妨看看為什么傳統(tǒng)的數(shù)據(jù)倉庫領域沒有這樣的困惑。如下這張圖很好的說明了傳統(tǒng)和現(xiàn)在的區(qū)別:

圖片來自Sogeti
從上圖展示的流程可以看出產(chǎn)生困惑的根本原因是:苦逼的IT從業(yè)人員走在了業(yè)務決策者的前面 (流淚) 。傳統(tǒng)時代,都是業(yè)務人員希望得到某類型的統(tǒng)計報表或者分析預測,于是IT行業(yè)人員為了滿足他們的需求找方案、寫算法,從而催生出了各種類型的數(shù)據(jù)倉庫和解決方案。而現(xiàn)在,在互聯(lián)網(wǎng)的推動下,IT人員發(fā)覺原來我們可以通過一些新的方式存儲海量的原先無法處理的數(shù)據(jù),但業(yè)務人員卻沒有準備好。所以,當你告訴他們:“嘿,哥們兒,我這里現(xiàn)在又有了很多數(shù)據(jù)可以幫你了。”他們一頭霧水不知道這些數(shù)據(jù)對他們有什么用了。
怎么解決這個問題?先來看傳統(tǒng)廠商Oracle、IBM他們是怎么做的。方式細節(jié)略有不同,但他們的思路基本如下:

圖片來自HP首席技術專家 Greg Battas在ABDS2012大會上的 分享
簡單來說,這種處理方式是把Hadoop和其它各類NewSQL、NoSQL方案以ETL,或外部表的方式引入現(xiàn)有的數(shù)據(jù)分析解決方案架構中。這種方案因為上層的數(shù)據(jù)倉庫沒有大的改變,客戶可以繼續(xù)使用原先的算法和報表結構,即在新的數(shù)據(jù)平臺上繼續(xù)沿用舊的應用場景和分析方法。好處是由于引入了大數(shù)據(jù)技術,可以處理多種數(shù)據(jù)源,同時降低原先海量數(shù)據(jù)ETL的成本。但這種方法依然存在不少問題:
問題一:性能瓶頸依然存在。縱觀現(xiàn)在各類NewSQL、NoSQL方案,分布式是一個最顯著的特色。之所以大家都采用分布式架構,就是因為傳統(tǒng)的縱向擴展方案,在處理海量數(shù)據(jù)時候性能沒法隨著數(shù)據(jù)量的增長而線性擴展,或者成本代價太高。而上圖的方案,雖然通過Hadoop解決了ETL的性能瓶頸問題,但BI還是傳統(tǒng)的數(shù)據(jù)倉庫,海量的ETL使得原有數(shù)據(jù)倉庫需要處理的數(shù)據(jù)量大增,所以必須花很大代價再次升級原有的數(shù)據(jù)倉庫,否則分析就會跑的比原先還慢。因此,用戶依然需要升級價格不菲的上層數(shù)據(jù)倉庫,向原先效率一般的算法妥協(xié)性能。
問題二:大數(shù)據(jù)投資被浪費。舊的分析應用場景,算法是基于關系型數(shù)據(jù)庫的。和大數(shù)據(jù)方案的邏輯模式有很大的不同,這不同主要有兩類。
沙里淘金和打磨玉石的區(qū)別。我舉過辣子雞的例子來形容Hadoop,大致是說一盤辣子雞就是大數(shù)據(jù),Hadoop就是辣子雞里剔除尖椒,找出能吃的雞塊的方法。其實,大數(shù)據(jù)的處理就是幫你淘金的過程。以前沒有那么合適的“篩子”,所以只能放棄在沙子里淘金的夢想,現(xiàn)在有了合適的“篩子”,就可以去從沙灘上比較高效快速的找出那些“閃光”的東西了。而傳統(tǒng)的數(shù)據(jù)處理方式,其實已經(jīng)通過人工、半人工的方式,把很多篩撿工作做了。所以雖然丟棄了大量的數(shù)據(jù),但是保留下的數(shù)據(jù)已經(jīng)是塊“璞玉”了,要做的只是對這塊“璞玉”再精雕細啄,使其成為價值連成的“美玉”。 所以,用傳統(tǒng)的數(shù)據(jù)處理方法來處理大數(shù)據(jù),就是拿美工刀去宰一頭牛,即使有人幫你端盤子分部位,還沒殺死牛人就累死。
動車組和火車的區(qū)別。分布式的大數(shù)據(jù)架構,其核心思想和三灣改編時的核心思想是一樣的:把支部建到連隊中去。把黨的有生力量分布到各個戰(zhàn)斗單元中,大大提高中央戰(zhàn)略的貫徹執(zhí)行,提高各個戰(zhàn)斗單位的機動性和戰(zhàn)斗力。就是動車為什么比火車開得快的道理:每節(jié)車廂都有動力,雖然每節(jié)都不比火車頭強勁,但車廂越多就跑的越快。而火車頭再強勁,也有拖不動更多車廂的時候?,F(xiàn)有的分析算法,很多時候都是針對“火車頭”類型的,很多時候沒辦法拆分成很多小的運算分布到每個節(jié)點上。于是,如果沿用之前的算法,那么就必須增加額外的軟件方案把已經(jīng)分布出去了的數(shù)據(jù)再“集中”起來,額外增加的環(huán)節(jié),肯定費時費力,效果不可能會好。
在我看來,前面提到的傳統(tǒng)廠商解決企業(yè)大數(shù)據(jù)應用困惑的方案不是最好的方案。什么是最好的方案呢?其實很簡單,就是針對新的數(shù)據(jù)集和數(shù)據(jù)庫結構特點開發(fā)新的應用分析場景,并把這些分析應用場景直接跑到大數(shù)據(jù)架構上。而不是去削足適履,拿新的NewSQL、NoSQL嫁接傳統(tǒng)方案。
這么做的好處不言而喻,關鍵是如何實現(xiàn)?這些事不能由搞IT的人來告訴業(yè)務人員,得讓業(yè)務人員來告訴我們!大數(shù)據(jù)應用要真正在企業(yè)里生根開花,真的需要一些數(shù)據(jù)科學家做需求生成(Demand Generation)的工作。我們要通過他們的幫助,使這張圖里的大數(shù)據(jù)路徑翻轉過來,像傳統(tǒng)數(shù)據(jù)處理一樣,由業(yè)務人員告訴我們,他們想做什么!
我接觸過很多客戶,去之前得到的需求都是:希望了解Hadoop或者內存數(shù)據(jù)庫。但是去了之后都發(fā)覺,他們其實不知道Hadoop或者內存數(shù)據(jù)庫可以幫他們達到哪些目的,希望我們可以告訴他們。但很坦率的說,這個不是我們這些搞IT基礎架構的人該做的事情。我們已經(jīng)“超前”的儲備好了這類技術手段了,怎么用這類技術真的是應該懂業(yè)務的人去想,而不是我們了。
所以,在這里我想呼吁IT行業(yè)里,處在金字塔頂?shù)膶I(yè)咨詢師、數(shù)據(jù)分析人員、數(shù)據(jù)科學家們,現(xiàn)在是時候走出原先的框架看看新技術新架構下有些新商機了。不要總是桎梏于傳統(tǒng)的思路和方法,讓新的大數(shù)據(jù)思想來做“削足適履”的事情了。真心希望你們可以利用專業(yè)知識和行業(yè)經(jīng)驗,幫著那些”求大數(shù)據(jù)若渴“的行業(yè)用戶們好好定位下對他們真正有價值的新應用場景,設計更多的有意義的分布式算法和機器學習模型,真正幫助他們解決大數(shù)據(jù)應用之惑。 #p#
困惑之二:不同的大數(shù)據(jù)方案之間有什么不一樣,我該用哪些?
首先,客戶必須把前一個問題想清楚,明確自己要做什么事,實現(xiàn)什么功能。然后,我們就可以把這個需求分解成小的需求:
要處理幾種數(shù)據(jù)類型?
要處理多大的數(shù)據(jù)量?
要處理的多快?
這三個要求有比較明確答案之后。這張圖表以數(shù)據(jù)處理的時效性和數(shù)據(jù)量為兩個維度,把傳統(tǒng)的RDBMS和Hadoop、MPP、內存數(shù)據(jù)庫等各類大數(shù)據(jù)方案做分類。這個分類針對的還是各種類別里比較典型的方案?,F(xiàn)在實際情況,特別是MPP和Hadoop,各個發(fā)行版的特色功能都不盡相同,所以處理的場景也會各有不同方向的延伸。
大數(shù)據(jù)時代,一種架構包打天下的局面是不大可能出現(xiàn)的。未來的企業(yè)大數(shù)據(jù)整體方案,肯定是多種數(shù)據(jù)庫方案結構并存的。企業(yè)數(shù)據(jù)在各個不同方案架構之間可以聯(lián)合互通,根據(jù)分析場景的不同分析工具運作在不同的數(shù)據(jù)庫架構上。

圖片來自 Nomura Research Institute
既然未來企業(yè)里面肯定會有多種數(shù)據(jù)源,多種數(shù)據(jù)庫結構,那么是否可以建立一個中間的數(shù)據(jù)服務層,把應用和底層數(shù)據(jù)庫架構隔離開呢?就好像你趕著上班,沒時間買菜,于是就寫個菜單交給鐘點工,給他錢讓他幫你買。你不用管她到底會去路邊菜市場買還是超市買。這個想法看起來很美好,但我覺得在企業(yè)里實行的難度比較大,不是很現(xiàn)實。為什么這么說?這里只是說說我的一些看法。
看看對大數(shù)據(jù)應用最純熟的互聯(lián)網(wǎng),他們的方式就是:簡潔,直接。什么樣的數(shù)據(jù),用哪種方式存儲效率最高,處理起來最快就用哪種方式。能直接在文件系統(tǒng)上做的就不放到數(shù)據(jù)庫里。數(shù)據(jù)的分析也是如此,結構層次越少越好,數(shù)據(jù)訪問越直接越好,能用編程語言直接解決的問題就堅決不采用數(shù)據(jù)倉庫用SQL。該用SQL解決的問題也不去為了統(tǒng)一接口而再去跑一遍Java或Python。一切以高效直接為前提,充分貫徹“把支部建到連隊里”的核心思想,發(fā)揮小快靈的優(yōu)勢。以Hadoop舉例,很多互聯(lián)網(wǎng)或者發(fā)行版都開始嘗試放棄Map/Reduce直接對HDFS進行操作處理,其思想就是想更直接,更簡潔。所以,前面所述的“建立一個數(shù)據(jù)服務層”還是傳統(tǒng)企業(yè)的舊思路老方法,希望通過建立中間層減少開發(fā)移植難度,其實結果就是發(fā)揮不出大數(shù)據(jù)架構本身的性能和規(guī)模優(yōu)勢,限制住了技術架構本身的發(fā)展空間。之所以提這個話題,主要是想引出下一個行業(yè)對于大數(shù)據(jù)的困惑。 #p#
困惑之三:我們應該怎樣從傳統(tǒng)的關系型數(shù)據(jù)架構向大數(shù)據(jù)架構遷移。
這個問題,我覺得沒有人可以給出完美的答案,因為現(xiàn)在的一些新企業(yè),比如互聯(lián)網(wǎng),面對的就是混合數(shù)據(jù)大數(shù)據(jù)的環(huán)境,不存在遷移的問題。而且他們要處理的數(shù)據(jù)類型,應用場景也和傳統(tǒng)企業(yè)不一樣,只有一定的借鑒意義,完全復制是不明智的。傳統(tǒng)的大型企業(yè),現(xiàn)在國外大多數(shù)的企業(yè)自己在摸著石頭過河,國內企業(yè)剛開個頭。其實大家都在摸索過程中,前方基本沒有指路的明燈,只有一點點星星之火可供參考。
誰能幫你呢?我覺得還是那些搞企業(yè)咨詢的人士。至少他們可以看到很多國外類似企業(yè)的成功或者失敗案例。但前提是他們真正站在中立的立場幫你從新的應用場景著手分析規(guī)劃。
關于這個問題,我也分享個人的觀點,僅供參考。
第一步:先把大數(shù)據(jù)存起來,用起來。現(xiàn)在看過很多傳統(tǒng)企業(yè)請各類咨詢人士做的大數(shù)據(jù)戰(zhàn)略規(guī)劃,我沒資格評價這些規(guī)劃的可行性和問題所在,但我覺得對于接受新生事物,首先要做的就是先嘗個鮮,而不是知道它的未來會怎樣。如果小試牛刀的結果不好,那么調整重頭再來的成本也比較小。所以我的建議,首先找個方案,把你準備分析處理的數(shù)據(jù)用新的辦法存起來,然后再試著在上面做些簡單的查詢,比較之類的應用,看看效果好不好,領導買不買單。如果效果好了,那么再試著在這上面實現(xiàn)新的業(yè)務應用場景,解決一部分業(yè)務人員的某些實際需求;效果好的話再試著做第二個應用,第三個分析。。。。。。慢慢的讓越來越多人看到這些新數(shù)據(jù)新應用的價值。
第二步:考慮新的大數(shù)據(jù)平臺和原有數(shù)據(jù)平臺的互通,聯(lián)合問題。這里有兩個方面:
把舊的應用分析運行在新的大數(shù)據(jù)平臺上。把數(shù)據(jù)從原先的RDBMS數(shù)據(jù)源抽取到新的大數(shù)據(jù)平臺上,利用新的大數(shù)據(jù)分析方法實現(xiàn)傳統(tǒng)的業(yè)務分析邏輯。這么做有可能會分析更多的數(shù)據(jù)產(chǎn)生更好的分析結果,也有可能會發(fā)現(xiàn)效率還不如原先的RDBMS方案。
把大數(shù)據(jù)平臺上的數(shù)據(jù)抽取到舊有數(shù)據(jù)倉庫中分析展現(xiàn)。這個方向主要還是為了保證舊有用戶的SQL使用習慣,區(qū)別是抽入舊數(shù)據(jù)倉庫的不是外部表,而是經(jīng)過清洗整理的有價值的數(shù)據(jù)。
通過這兩個方面的嘗試,基本就可以把哪些應用可以遷移,哪些不可以遷移搞清楚了。為下一步打下扎實的基礎。
第三步:數(shù)據(jù)源整合,分析應用場景定制。 有了前兩步的基礎,基本你就可以很清楚你能夠處理哪些類型的數(shù)據(jù),以及他們會為你帶來哪些業(yè)務價值了。接下來就可以發(fā)動“總攻”了。
總攻第一步,就是整合數(shù)據(jù)源,把將會涉及到的各類型數(shù)據(jù)分類,用各自最合適的方法儲存起來整理好。然后,把應用、展現(xiàn)工具根據(jù)所涉及數(shù)據(jù)源的不同,應用場景的差異,和不同的數(shù)據(jù)存儲架構做耦合,定制化應用場景,使每個應用都可以充分利用到底層架構的性能和擴展能力。對于需要跨數(shù)據(jù)源的應用場景,選定中間處理層方案,保證中間處理層方案的定制化,不會因其存在影響底層架構的性能和上層分析應用的實現(xiàn)。
這樣的步驟,沒辦法一下子讓企業(yè)領導看到“未來10年以后的IT架構宏偉藍圖”,但可操作性比較強,而且一步不對修改調整的機會也比較大。這種思路屬于互聯(lián)網(wǎng)和新興行業(yè)那種“小步快跑”的思維模式,先走幾步看看,如果不行也有了寶貴的經(jīng)驗教訓,花的代價也不算很大。
大致上來說,我所能感受到的,行業(yè)用戶對于大數(shù)據(jù)的困惑就是以上所說的三個方面。之所以會有這些困惑,歸根結底還是因為大數(shù)據(jù)的處理方式和以前的傳統(tǒng)方式太不同了。
以Hadoop為代表的大數(shù)據(jù)處理體系,其實是采取了一種粗放的方式處理海量的數(shù)據(jù),機器學習的原理很多時候也是依靠大量的樣本而不是精確的邏輯。舉個例子,我們常說的“清明時節(jié)雨紛紛”,根本沒有邏輯和科學公式去推導出這個結論。之所以會有這個結論,是無數(shù)勞動人民通過多年觀察,從“海量的”清明氣候樣本中發(fā)現(xiàn),每到這幾天總是下雨比較多。而為什么清明這幾天會下雨,卻沒有人去仔細分析。大數(shù)據(jù)的處理方式類似,它依托前人留下的經(jīng)驗,歷史數(shù)據(jù),歸納總結,而不是去依賴一些復雜的公式演算。其所依仗的,就是“樣本”多,而且能夠通過技術手段快速高效的分析整理海量的樣本。而之前因為沒辦法處理這么多樣本,只能靠先進高精尖的數(shù)學模型。所以,想用好大數(shù)據(jù),一是要調整思路,盡量用簡單的方式去處理大量的數(shù)據(jù);二是在某些情況下可能需要考慮通過多采樣等方式把數(shù)據(jù)“變大”。
所以,企業(yè)要想用好大數(shù)據(jù),在沙海里淘金,就應該大膽的拋棄掉原有的一套成熟的架構和方案。從零開始,真正的去思考這么多數(shù)據(jù),這些個新方法對于企業(yè)能夠有什么意義,產(chǎn)生什么價值。然后,就是把想法一個個在Hadoop,MPP等等架構上實現(xiàn),落地,一旦發(fā)覺有問題了就馬上調整,從頭再來。而不是先像以前那樣看看別的人都怎么做,然后做幾十頁“看上去很美“的PPT,畫一個”未來十年“的美麗的大餅了事。要多向互聯(lián)網(wǎng)和新興行業(yè)學習,改變思路,掛鉤業(yè)務,活在當下,小步快跑。