大數據是指數據如此之多以至于它超越了傳統(tǒng)的數據庫系統(tǒng)的能力,數據量太大,移動太快,也不滿足(傳統(tǒng))數據庫架構的約束。為了能從數據里面獲得價值,你必須選擇其他的替代方案來處理它。
大數據是2012年的熱門IT流行詞。大數據變的很高光可見,因為高費效比的方法已經出現了,可以馴服那些無論是量、速度還是變化性都很大的海量數據。在這些數據里存在著有價值的模式和信息,而之前因為獲得他們的代價和工作量是如此之大而很難獲得。對于領先的企業(yè),比如沃爾瑪或谷歌,他們已經獲得了這些能力,但代價高昂。如今,隨處可見的普通硬件設備、云基礎架構和開源軟件已經讓大數據處理發(fā)展到了一個接近資源豐富的階段。大數據處理方式是有名的靈活,即使是很小的車庫創(chuàng)業(yè)公司也能通過租用很便宜的云端服務器來使用。
大數據能為組織帶來的價值可以歸為兩類:分析應用和產生新產品。大數據分析可以發(fā)現藏在數據里的洞察,而以前因為花費太大而很難獲得。例如,這樣的洞察可以是客戶間的相互影響,這可以通過分析購物者的交易記錄、社會信息和地理位置信息來獲得。相對于靜態(tài)特性的方法,比如運行那些預先定義好的報表,能夠在合理的時間里處理每一條數據就可以消除數據抽樣的影響,同時也能促進探索性分析方法的使用。
過去十年里成功的互聯網創(chuàng)業(yè)企業(yè)就是把大數據用來產生新產品和服務的絕佳例子。例如,結合用戶和他們的朋友行為里的海量信號,臉書能夠打造高度個性化的用戶體驗,同時創(chuàng)造一種新的廣告業(yè)務模式。因此支持大數據的大牛的思想和工具出現在谷歌、雅虎、亞馬遜和臉書就絕不是偶然了。
大數據在企業(yè)里的出現則帶來了一個必要的補充:敏捷。成功的開采大數據里的價值需要實驗和探索。不管是產生新產品還是找到能帶來競爭優(yōu)勢的方法,這些工作都要有好奇心和創(chuàng)業(yè)的眼光。
大數據是什么樣子?
作為一個無所不包的名詞,“大數據”也相當的含糊不清,就如“云計算”覆蓋了很多技術一樣。大數據系統(tǒng)的輸入可以來自社交網絡上的聊天者、網站服務器日志文件、交通傳感器、衛(wèi)星圖片、廣播語音流、銀行交易記錄、搖滾樂的MP3文件、網頁的內容、政府文件的掃描、GPS的路徑、汽車的遙感器、金融市場數據,這個列表可以很長。這些都是一樣的東西嗎?
為了更清楚,這三個V(大數量、時效性、多樣性,Volume,Velocity,Variety)常常被用來定義大數據的不同方面。他們是有用的鏡片,通過他們可以觀察和理解數據以及可用來挖據數據的軟件平臺的特性。很可能你會與這三個V的每一個都有一定程度的斗爭。
大數量(Volume)
能處理海量的信息并從中得到益處是大數據分析最吸引人的地方。有更多的數據可以抵消有更好的模型:在海量數據面前,簡單的數學可以非常不合理得有效。如果你能用300個因素而不是6個因素來做預測,你能不能預測的更好?
數據的大數量代表了對于傳統(tǒng)的IT架構最直接的挑戰(zhàn)。它需要有可擴展的存儲,以及可以分布的查詢。很多企業(yè)已經擁有了海量的歸檔數據(可能是以日志的形式存在),但沒有能力來挖掘。
當數據的量已經大到這些傳統(tǒng)的關系型數據庫基礎設施無法匹敵的時候,處理他們的方法選擇基本上也就是兩個,大規(guī)模并行處理架構(數據倉庫,或如Greenplum的數據庫)和基于Apache Hadoop的解決方案。如何選擇也經常會不同程度上受其他的一個V—多樣性—的影響。典型的是,數據倉庫的方法涉及到預先定義的數據模式,適用于那些比較規(guī)律并變化較慢的數據。與之相反,Apache Hadoop對要處理的數據結構和模式沒有這樣的限制。
Hadoop的核心是一個為跨大量服務節(jié)點的分布式計算問題而設計的平臺。它首先是由雅虎開發(fā),并作為開源項目發(fā)布的。它實現了MapReduce算法,這個算法最初是谷歌為了建立搜索檢索而開發(fā)的。Hadoop的MapReduce涉及了把數據集分布到多個服務器上,并在“map”階段對數據進行(本地化的)運算。部分的結果在“reduce”階段被再組合起來。
為了存儲數據,Hadoop使用它自己的分布式文件系統(tǒng)—HDFS—把數據分布存儲在多個計算節(jié)點上。一個典型的Hadoop使用場景一般涉及三個階段:
- 把數據導入HDFS;
- MapReduce運算;
- 從HDFS里查詢結果。
這個過程本質上是一個批處理過程,適合于分析和非交互的計算任務。也正因為這個,Hadoop自己并不是一個數據庫或者數據倉庫解決方案,而是和他們結合的一個分析助手。
廣為人知的Hadoop用戶之一就是臉書,它的模型就遵循上面的模式。一個MySQL數據庫存儲著核心的數據。數據隨后被導入Hadoop進行計算,比如創(chuàng)建基于用戶和用戶的朋友興趣的推薦。隨后臉書把結果在導回MySQL數據庫,讓前端頁面調用。
時效性(Velocity)
時效性是指數據流入的速度。時效性的重要性與大數量有類似的發(fā)展模式,最初的難題只局限于特定行業(yè),但現在卻出現在更廣泛的場景下。像金融交易這樣的特定企業(yè)早已經會調校他們的系統(tǒng)來利用快速移動的數據。現在是輪到我們了!
為什么要這樣?互聯網和移動時代意味著,我們使用和消費產品與服務的模式已經更多的被測量,產生的數據又流回了產品和服務的提供者。電商企業(yè)也能夠收集大量的客戶歷史數據,不僅僅只是最后的購買行為,還包括客戶的每次點擊和交互。能夠快速利用這些信息的企業(yè)和個人則能獲得競爭優(yōu)勢,比如推薦給客戶其他的購買選項。智能手機時代更加增加了數據產生的速度,因為消費者自己隨身帶著一個不斷產生地理位置、圖片和聲音數據的數據源。
不僅僅是產生數據的速度帶來的問題,例如也可以把快速流入的數據成塊的存儲起來留作以后處理。把輸入數據轉化為決策的速度是另外一個重點。IBM的一個廣告里說明了這一點,如果你拿到的是五分鐘前的交通快照,你是不敢過馬路的。一定會有這樣的時候,你不能等到一個報表運行完或是Hadoop跑完一個任務。
對于這些快速流動的數據的行業(yè)術語可以是“流數據”或“復雜事件處理”。后者出現的比較早但已經逐漸的消失了,現在流式數據處理已經越來越廣泛地被認可。
使用流計算有兩個主要原因。第一個是輸入數據的速度太快從而沒法完全都存下來。為了能保證存儲的需求更實際,在數據流入的同時就必須進行一定的分析。這個問題的最極端的案例就是歐洲原子研究組織(CERN)的大型強子對撞機(Large Hadron Collider)。對撞機產生的數據太大,以至于科學家不得不丟棄其中絕大部分的數據,同時只能希望他們沒有丟棄那些有用的數據。第二個原因就是應用必須要求立刻就有響應。伴隨著移動應用和在線游戲的興起,這樣的場景也越來越常見。
能處理流式數據的產品目錄可以分為已經商業(yè)化的產品,比如IBM的InfoSphere Streams,和那些來自互聯網行業(yè)的不是很完善但依然不斷涌現的開源框架,比如推特的Storms和雅虎的S4。
如前所說,不光是輸入數據的速度的問題,系統(tǒng)輸出數據的速度也很重要。反饋循環(huán)越緊密,競爭優(yōu)勢越明顯。反饋的結果可以直接進入產品,例如臉書的推薦,或是儀表盤來幫助決策的形成。
正是互聯網行業(yè)里對速度的需要才驅動了鍵—值存儲和列式數據庫,才帶來了對預先計算的信息的快速檢索的優(yōu)化。這些數據庫已經形成了一個叫NoSQL的分類,可以應對那些關系型數據庫所不適用的場合。
多樣性(Variety)
很難得見到數據是排列完美且可以馬上處理的。大數據系統(tǒng)最常見的情形是數據源非常繁雜,也不會很完美地符合關系型的結構。它們或是社交網絡里的文字、圖像數據或是來自傳感器的原始讀數,但沒有任何一個能馬上被集成進應用里。
即便是互聯網里,計算機到計算機的通信本應能帶來某些格式保證。但現實的數據也是很混亂的。不同的瀏覽器發(fā)送不同的數據,用戶的系統(tǒng)接收信息,然后可能用不同的版本或供應商的軟件來通信。同時如果這中間的任何部分涉及到人,那肯定會有出錯或不一致的情況發(fā)生。
一種常見的大數據分析場景就是從非結構化的數據中抽取出有序的內容,再交由人或者應用系統(tǒng)來使用。一個例子就是實體解析(Entity Resolution),即判斷一個名字到底指什么東西。例如London這個詞到底是說的英國首都倫敦市,還是美國德州的倫敦市。當你的業(yè)務邏輯需要知道這個的時候,你可不想猜測。
從源數據到應用可用的數據的處理過程中,經常會發(fā)生信息丟失。當你收拾整齊,就意味著你仍了東西。因此這指出了大數據的一個基本原則就是:如果可能,什么都別丟。很可能在你丟掉的數據里就存在著有用的信號。一旦你丟失了原始數據,沒機會再找回來了。
盡管關系型數據庫已經相當流行且原理也廣為人知,這也不意味著他們應該是數據的最終歸宿,即便要求的是規(guī)整的數據。特定的數據類型適用于特定的數據庫類型。例如XML格式的文檔就是最好是存儲在專門針對XML的數據庫,如MarkLogic。而社交網絡本質上就是圖類數據,因此用諸如Neo4J的圖數據庫才容易讓對圖類數據的運算更簡單和有效。
即便數據的結構和數據庫沒有很大的不匹配,關系型數據庫還是有缺點,即它要求有靜態(tài)的數據模式。在一個敏捷的探索性環(huán)境里,計算分析的結果將會隨著更多信號的發(fā)現和抽取而不斷變化。準結構化的NoSQL數據庫就可以應對這種靈活性的需求。他們可以提供足夠的結構化來組織數據,同時也不用要求數據存儲前就定義好確切的數據模式。
來到現實
上面我們探索了大數據的本質,并從高的層面上瀏覽了大數據的風光。但通常情況都是,當落地到部署的層面,總是有超出工具選擇的其他維度需要考慮。
云還是企業(yè)內部?
大多數的大數據解決方案都有三種提供方式:只有軟件,應用,以及基于云的應用。使用哪種方式取決于很多東西,包括數據要本地化否、隱私和法規(guī)的限制、人力資源是否夠以及項目的需求。很多企業(yè)采用了混合的方式,即內部部署加按需申請的云上的資源。
大數據是很大的
一個基本的事實是用傳統(tǒng)的方法無法處理的大數據也很難被傳輸移動。IT行業(yè)的一個漸成共識就是,應該移動計算而不是移動數據。如果你想分析美國人口普查數據,那直接在存儲這些數據的亞馬遜平臺上利用他們的網絡服務來運行你的代碼就非常容易,你就不用花時間和金錢來傳輸這些數據了。
即便數據不那么大,也不難移動,將數據存儲在本地依然有問題,尤其是在數據更新很快的場景下。金融交易系統(tǒng)總是試圖用最快的連接鏈路來獲取源數據,因為處理時間上毫秒級的差別就意味著競爭優(yōu)勢。
大數據是混亂的
混亂并不是總指基礎設施。大數據從業(yè)人員一致認為他們80%的精力和時間都花費在一開始的清理數據上了。正如皮特?瓦爾登(Pete Warden)在他的大數據術語表一文中所說:“我花費在把混亂的數據清理成可用的形式比我花在其他所有數據分析工作里的時間都長。”
考慮到獲取數據和清理他們的高昂花費,就很有必要考慮一下從哪里來獲取數據。有很多的數據集市,他們是獲得普通常見數據的地方,你也經??梢园迅倪M后的數據交易回去。不同數據集市里,數據質量肯定會有不同,但是在競爭的環(huán)境下,數據質量將會逐步成為(好的)數據集市的基準。
文化
大數據這種現象是和數據科學的出現緊密相關的。數據科學集合了數學、計算機學以及科學的精神。為了從大數據中獲益,需要投入資源來組建擁有數據科學技能的團隊,需要從組織架構上為他們提供支持,創(chuàng)造理解使用數據能帶來益處的氛圍。
D.J. 帕蒂爾(D.J. Patil)在他的報告《組建數據科學團隊》中定義了數據科學家所需要擁有的特性。
- 技術專家:最好的數據科學家一般都擁有某個科學專業(yè)的深度專業(yè)知識和技能。
- 好奇心:渴望能從數據表象下發(fā)現問題并萃取出一系列非常清晰的可檢測的假設。
- 講故事能力:能使用數據來講故事,并能有效的進行溝通。
- 聰明:能從不同方向看待問題,產生創(chuàng)新性的解決方案。
大數據分析項目的深遠的特性也帶來了不令人愉快的方面。為了能被挖掘,數據必須從存?zhèn)}里搬出,組織機構必須學會如何來溝通和解釋分析的結果。
講故事的技巧和聰明則是關口性的因素,能最終表明分析工作的好處是否能被機構所消化吸收。為了能有效地把分析產生的洞察用有意義的方法來傳達,可視化數據的藝術性和實踐能力正變的更加重要。
知道你想往哪里去
最后,需要記住的是大數據不是萬能藥。你可以在你的數據中發(fā)現模式和線索,但是之后會如何?IBM北美先進分析的領導者克里斯?約翰遜(Christer Johnson)給出一個開始大數據業(yè)務的建議:首先,決定你想要解決的問題。
如果你挑選一個真正的業(yè)務問題,例如如何改變廣告策略來提升每用戶的花費。那么這個問題將能引導你的具體實施路徑。大數據的工作會從企業(yè)家精神里獲益,同時它也能從一個非常具體的目標中獲益。
埃德·達姆比爾(Edd Dumbill)
埃德·達姆比爾是加州的一個技術專家、作家和程序員。他是O'Reilly的Strata和OSCON大會的委員會主席。 他是Expecnation會議管理系統(tǒng)的開發(fā)者和創(chuàng)始人,還是Pharmalicensing.com在線知識產權交易中心的聯合創(chuàng)始人。 作為開源的老兵,埃德對多個開源項目都有貢獻,例如Debian和GNOME。并創(chuàng)建了描述軟件項目的DOAP詞匯表。 埃德已經寫作了四本書,包括O'Reilly出版的《Learning Rails》。他還經常性地在Google+和他自己的博客eddology.com上撰寫博文。

