云安全聯(lián)盟大數(shù)據(jù)工作組發(fā)布
譯者:李毅 中國(guó)惠普大學(xué)資深培訓(xùn)專(zhuān)家
** 摘要 **
在本文中,我們提出了一個(gè)大數(shù)據(jù)的六維度分類(lèi)方法。這個(gè)分類(lèi)方法的主要目的是幫助決策制定者在計(jì)算、存儲(chǔ)架構(gòu)、數(shù)據(jù)分析技術(shù)、安全與隱私框架等多種選擇中確定正確的方向。這其中需要分析的數(shù)據(jù)是分類(lèi)的核心。
簡(jiǎn)介
大數(shù)據(jù)指的是與我們每一個(gè)人以及周邊事物有關(guān)而且被政府和企業(yè)所收集的大量數(shù)字信息。這些數(shù)據(jù)不僅僅是由傳統(tǒng)的信息交換軟件通過(guò)臺(tái)式機(jī)、移動(dòng)電話等設(shè)備產(chǎn)生,也來(lái)自于各種環(huán)境中所嵌入的無(wú)數(shù)類(lèi)型各異的傳感器;它即來(lái)源于城市街道(攝像頭、麥克風(fēng))或噴氣引擎(溫度傳感器),也來(lái)源于快速蔓延的物聯(lián)網(wǎng) - 每一個(gè)電子設(shè)備都將連接到互聯(lián)網(wǎng)并產(chǎn)生數(shù)據(jù)。
每天,我們生成2.5艾(1艾等于10的18次方)字節(jié)的數(shù)據(jù)-當(dāng)今世界上將近90%的數(shù)據(jù)是在最近兩年中生成的(比如2011年[1])。有關(guān)存儲(chǔ)、計(jì)算、安全與隱私、和分析方面的問(wèn)題都被大數(shù)據(jù)的快速、大容量和多樣性等特點(diǎn)給加以放大,這些問(wèn)題包括可大規(guī)模擴(kuò)展的云計(jì)算基礎(chǔ)架構(gòu)、數(shù)據(jù)來(lái)源和格式的多樣性、數(shù)據(jù)采集的流特性和云內(nèi)遷移的巨大容量需求。
圖1顯示了基于六個(gè)維度的分類(lèi)。這六個(gè)維度涵蓋了構(gòu)建大數(shù)據(jù)基礎(chǔ)架構(gòu)所必需要的各個(gè)方面。本文后面的部分將對(duì)每一個(gè)維度進(jìn)行介紹。
** 數(shù)據(jù)**
首先要回答的問(wèn)題是:大數(shù)據(jù)產(chǎn)生于哪里?把數(shù)據(jù)的來(lái)源進(jìn)行歸類(lèi)是為了理解有哪些基礎(chǔ)架構(gòu)可供選擇以及特定的數(shù)據(jù)類(lèi)型對(duì)它們的要求。所有的“數(shù)據(jù)”都是不同的。數(shù)據(jù)將決定需要什么樣的架構(gòu)來(lái)存儲(chǔ)它、處理它并在它之上進(jìn)行分析。我們有多種方式來(lái)看待數(shù)據(jù)的問(wèn)題。
延遲的要求
第一種方式是根據(jù)處理數(shù)據(jù)所需要的時(shí)間跨度來(lái)界定數(shù)據(jù):
? 實(shí)時(shí) (財(cái)務(wù)流、復(fù)雜事件處理(Complex event Processing - CEP)、入侵檢測(cè)、欺詐檢測(cè))
? 近實(shí)時(shí) (廣告投送)
? 批處理 (零售、取證、生物信息學(xué)、地理數(shù)據(jù)、多種類(lèi)型的歷史數(shù)據(jù))
“實(shí)時(shí)”應(yīng)用程序的例子
很多應(yīng)用程序會(huì)涉及以下各種近乎實(shí)時(shí)的數(shù)據(jù):
? 在線廣告優(yōu)化(包括實(shí)時(shí)競(jìng)價(jià))
? 高頻在線交易平臺(tái)
? 安全事件監(jiān)控
? 財(cái)務(wù)交易監(jiān)控及欺詐檢測(cè)
? Web分析及其他類(lèi)型的儀表盤(pán)(dashboard)
? 在線游戲或電子商務(wù)的客戶流失預(yù)測(cè)
? 基于行為和使用情況對(duì)設(shè)備、工業(yè)廠房或者物流系統(tǒng)進(jìn)行優(yōu)化
? 控制系統(tǒng)相關(guān)的任務(wù):例如智能電網(wǎng)、核電站
? 關(guān)于某推文(tweets)的情緒分析
在大多數(shù)這些應(yīng)用程序中,數(shù)據(jù)是持續(xù)在改變的。為了響應(yīng)特定的事件,現(xiàn)實(shí)且(或)必要的選擇是在一個(gè)特定時(shí)間框架(“最近一小時(shí)被查看的頁(yè)面”或“最近一小時(shí)/天/星期/月內(nèi)的交易)內(nèi)只考慮相關(guān)的數(shù)據(jù)而不考慮過(guò)去全部的數(shù)據(jù)。
實(shí)時(shí)應(yīng)用程序?qū)Υ髷?shù)據(jù)技術(shù)解決方案中關(guān)鍵屬性的影響
為了選擇恰當(dāng)?shù)氖侄魏痛髷?shù)據(jù)技術(shù)解決方案來(lái)處理手頭的問(wèn)題,理解對(duì)這個(gè)決策有影響的一些關(guān)鍵屬性是非常重要的。除了延遲的要求(用于計(jì)算結(jié)果的時(shí)間)外,還應(yīng)包括以下的:
? 事件特征
? 包括應(yīng)用程序需要的數(shù)據(jù)輸入/輸出速率
? 事件響應(yīng)復(fù)雜度
? 處理的復(fù)雜度
? 每個(gè)事件中處理任務(wù)的計(jì)算復(fù)雜度是怎樣的?
? 數(shù)據(jù)域的復(fù)雜度
? 為了支持這些處理需要訪問(wèn)的數(shù)據(jù)量規(guī)模?
? 它是否可以在存儲(chǔ)在內(nèi)存中?或者它是否已經(jīng)分散到多個(gè)位置和存儲(chǔ)介質(zhì)中?
正如所料想的,當(dāng)很高的輸入/輸出速率與低延遲的要求相結(jié)合就會(huì)給底層的基礎(chǔ)架構(gòu)帶來(lái)嚴(yán)峻的挑戰(zhàn),這樣事件響應(yīng)復(fù)雜度在計(jì)算和數(shù)據(jù)域兩方面都會(huì)比較高。
延遲是當(dāng)一個(gè)事件發(fā)生到事件所需的響應(yīng)完成之間所需要的時(shí)間。換而言之,它是完成計(jì)算從而作出決策所需花費(fèi)的時(shí)間。
我們?cè)谶@里考慮的是兩個(gè)大類(lèi):低延遲與高延遲的要求
? 這里我們把“低延遲”應(yīng)用程序定義為需要的響應(yīng)時(shí)間在幾十個(gè)毫秒之內(nèi)的應(yīng)用程序。對(duì)于類(lèi)似高頻交易及實(shí)時(shí)競(jìng)價(jià)或者在線廣告優(yōu)化的應(yīng)用程序,在應(yīng)用程序的場(chǎng)景中對(duì)于延遲有一個(gè)可接受的上限要求。通常,在線廣告優(yōu)化系統(tǒng)大約要求20-50毫秒,而高頻交易系統(tǒng)可能有更嚴(yán)格的實(shí)時(shí)響應(yīng)要求。雖然應(yīng)用程序和基礎(chǔ)架構(gòu)在功能上都具有特定的延遲,但隨著時(shí)間的推移,被我們歸于這個(gè)類(lèi)別的都是那些需要“實(shí)時(shí)”響應(yīng)的應(yīng)用程序。
? 我們認(rèn)為一個(gè)“中到高延遲”的應(yīng)用程序?qū)憫?yīng)時(shí)間的要求大約為幾秒到幾分鐘,(甚至可以能到幾小時(shí))。例如,場(chǎng)景中會(huì)涉及用戶交互和儀表盤(pán)的應(yīng)用程序,一般在每幾秒甚至幾分鐘后更新結(jié)果是可以接受的。大多數(shù)的報(bào)表和長(zhǎng)期的數(shù)據(jù)分析可以忍受大約幾分鐘,有時(shí)甚至是幾小時(shí)或幾天的延遲。
這里的真正問(wèn)題是應(yīng)用程序是否可以實(shí)時(shí)地響應(yīng)。如果數(shù)據(jù)以每秒10萬(wàn)個(gè)事件的速度生成,但是主要的業(yè)務(wù)行為是經(jīng)理每幾天手工地檢查聚合的數(shù)據(jù)并調(diào)整業(yè)務(wù)戰(zhàn)略,那么低延遲就不是關(guān)鍵的業(yè)務(wù)問(wèn)題。另一方面,如果一個(gè)流程控制系統(tǒng)是由一組傳感器的數(shù)據(jù)所驅(qū)動(dòng),或者一個(gè)企業(yè)為了檢測(cè)訪客人數(shù)的突然下降而為網(wǎng)站部署了一個(gè)新的主頁(yè),這就需要更加及時(shí)的響應(yīng)。
如圖2所示,從較高的層面來(lái)看,一個(gè)計(jì)算的總體延遲是由通訊網(wǎng)絡(luò)的延遲、計(jì)算的延遲和數(shù)據(jù)庫(kù)的延遲構(gòu)成的。應(yīng)用程序自身嚴(yán)重影響著對(duì)這三個(gè)大類(lèi)(網(wǎng)絡(luò)、計(jì)算和數(shù)據(jù)庫(kù))的精確估算。計(jì)算密集型的應(yīng)用程序?yàn)榫W(wǎng)絡(luò)和數(shù)據(jù)庫(kù)操作所保留的余地很小。
實(shí)時(shí)應(yīng)用程序的大數(shù)據(jù)解決方案
當(dāng)考慮一個(gè)應(yīng)用程序的大數(shù)據(jù)技術(shù)平臺(tái)時(shí),其中一個(gè)主要考慮因素時(shí)延遲的要求。如果不需要低延遲,多數(shù)將數(shù)據(jù)收集到磁盤(pán)上或者內(nèi)存中然后再對(duì)數(shù)據(jù)完成計(jì)算的傳統(tǒng)方式就足夠了。相反的,低延遲要求一般意味著數(shù)據(jù)進(jìn)入后就必須處理。
結(jié)構(gòu)
另一種將大數(shù)據(jù)映射到域的方式是根據(jù)其結(jié)構(gòu)或者組織的等級(jí):
? 結(jié)構(gòu)化(零售、財(cái)務(wù)、生物信息學(xué)、地理數(shù)據(jù))
? 半結(jié)構(gòu)化(Web日志、電子郵件、文檔)
? 非結(jié)構(gòu)化(圖像、視頻、傳感器數(shù)據(jù)、網(wǎng)頁(yè))
以結(jié)構(gòu)化、非結(jié)構(gòu)化或半結(jié)構(gòu)化來(lái)認(rèn)識(shí)數(shù)據(jù)是非常有用的。我們提供了以下的一些例子,當(dāng)是請(qǐng)注意通過(guò)目前很難用一個(gè)正式的定義來(lái)描述這些類(lèi)別。
結(jié)構(gòu)化數(shù)據(jù)
結(jié)構(gòu)化數(shù)據(jù)簡(jiǎn)單講就是關(guān)系型數(shù)據(jù)庫(kù)和電子表格中包含的數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)遵從一個(gè)數(shù)據(jù)模型,它很大程度上是用數(shù)據(jù)所從屬的字段(名字、地址、年齡及其他)以及每個(gè)字段的數(shù)據(jù)類(lèi)型(數(shù)字、貨幣、字母、名字、日期、地址)來(lái)描述。該模型中每個(gè)字段也會(huì)定義限制或約束條件(例如,在某個(gè)范圍內(nèi)的整數(shù))而且不同字段的要素之間的約束條件也用于強(qiáng)化一致性(沒(méi)有副本,在同一個(gè)時(shí)間里不能在兩個(gè)不同的地方存在)(譯者注:這是受關(guān)系型數(shù)據(jù)庫(kù)第三范式的影響,其主要理念是避免數(shù)據(jù)冗余而保持簡(jiǎn)潔。)
非結(jié)構(gòu)數(shù)據(jù)
非結(jié)構(gòu)數(shù)據(jù)(或非結(jié)構(gòu)信息)是指沒(méi)有預(yù)先定義的數(shù)據(jù)模型或者沒(méi)有按預(yù)先規(guī)定的方式組織的信息。非結(jié)構(gòu)化的信息通常是也文本為主,但是也可能包含諸如日期、數(shù)字和facts(譯者注:Facts可以是一個(gè)類(lèi)成員或者個(gè)體屬性值)。另一類(lèi)的例子包括以照片和圖像、視頻、傳感器數(shù)據(jù)流、Web頁(yè)面、PowerPonit文稿、email、博客文章、Wiki和Word文檔等形式展現(xiàn)的裸數(shù)據(jù)(無(wú)標(biāo)簽)。
半結(jié)構(gòu)化數(shù)據(jù)
半結(jié)構(gòu)化數(shù)據(jù)處于結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)之間。它們是一種結(jié)構(gòu)化數(shù)據(jù),但是缺乏由底層數(shù)據(jù)模型規(guī)定的嚴(yán)格結(jié)構(gòu)。對(duì)于半結(jié)構(gòu)化數(shù)據(jù),標(biāo)簽和其他類(lèi)型的標(biāo)記用于標(biāo)識(shí)數(shù)據(jù)中的特定要素,但是該數(shù)據(jù)沒(méi)有一個(gè)嚴(yán)格的結(jié)構(gòu)所以不經(jīng)過(guò)進(jìn)一步的處理是很難提取出完整的語(yǔ)義含意。例如,文字處理軟件現(xiàn)在可以創(chuàng)建包含作者名字及創(chuàng)建日期的元數(shù)據(jù),而文檔的主體則是由非結(jié)構(gòu)化數(shù)據(jù)構(gòu)成。(由于沒(méi)有現(xiàn)成的模型能夠把文本聚類(lèi)到簡(jiǎn)潔的類(lèi)目里,就必須依靠先進(jìn)的學(xué)習(xí)算法對(duì)文本進(jìn)行挖掘從而理解文本的含義)。作為另一個(gè)細(xì)微的差別,文檔中的文本可以進(jìn)一步打上包括目錄、章、節(jié)等等的標(biāo)簽。電子郵件給郵件消息內(nèi)容中的非結(jié)構(gòu)化數(shù)據(jù)加上了發(fā)件人、收件人、日期、時(shí)間和其他固定的字段以及附件。照片和其他的圖形可以用諸如作者、日期、位置和其他內(nèi)容相關(guān)的關(guān)鍵字(例如照片中人的名字)來(lái)標(biāo)識(shí),使得它能夠被識(shí)別和定位。通常用XML和其他的標(biāo)識(shí)型語(yǔ)言來(lái)管理半結(jié)構(gòu)化數(shù)據(jù)。
另一個(gè)對(duì)這個(gè)域進(jìn)行界定的方式是檢查制造數(shù)據(jù)并且需要從數(shù)據(jù)中提取信息的行業(yè)類(lèi)型。
? 金融服務(wù)
? 零售
? 網(wǎng)絡(luò)安全
? 大型科技
? 社交網(wǎng)絡(luò)
? 物聯(lián)網(wǎng)/傳感器網(wǎng)絡(luò)
? 虛擬媒體
圖3展示了數(shù)據(jù)處理問(wèn)題涉及的多個(gè)域及特定的子域。
圖4展示了大數(shù)據(jù)是如何縱向映射到時(shí)間和結(jié)構(gòu)軸向的。這里可以得出一個(gè)結(jié)論即所有這里列出的行業(yè)的應(yīng)用場(chǎng)景中都需要處理所有的數(shù)據(jù)結(jié)構(gòu)類(lèi)型并且應(yīng)對(duì)各種響應(yīng)時(shí)間的需求。在這種情況下,行業(yè)領(lǐng)域是描述大數(shù)據(jù)的另一個(gè)正交軸。于是我們通過(guò)一些最常見(jiàn)的應(yīng)用場(chǎng)景直觀展現(xiàn)了這些域并且包括它們與行業(yè)、時(shí)間和結(jié)構(gòu)的映射。
計(jì)算基礎(chǔ)架構(gòu)
盡管Hadoop是使用廉價(jià)計(jì)算資源并行處理大型數(shù)據(jù)集的流行選擇,在不同的領(lǐng)域中還有很多其他的計(jì)算基礎(chǔ)架構(gòu)可供使用。圖5顯示了多種處理架構(gòu)類(lèi)型的分類(lèi)。數(shù)據(jù)處理是以批處理模式還是針對(duì)流數(shù)據(jù)的實(shí)時(shí)/近實(shí)時(shí)處理(數(shù)據(jù)持續(xù)進(jìn)入而且需要立即處理)決定了大數(shù)據(jù)的計(jì)算模式在第一層概念上的差異。這本節(jié)我們主要介紹兩個(gè)專(zhuān)用基礎(chǔ)架構(gòu):用于批處理的Hadoop和實(shí)時(shí)處理的Spark。
MapReduce是一個(gè)編程模型以及用于處理及生成大型數(shù)據(jù)集的相關(guān)應(yīng)用。用戶定義一個(gè)map函數(shù)來(lái)處理一個(gè)鍵/值對(duì)然后生成一個(gè)中間狀態(tài)的鍵/值對(duì),而一個(gè)reduce函數(shù)將把同一個(gè)中間狀態(tài)的鍵的所有相關(guān)的中間狀態(tài)值進(jìn)行合并。很多現(xiàn)實(shí)世界的任務(wù)都可以在這個(gè)模型中描述,可以參見(jiàn)在參考論文中介紹[2]。
以這種函數(shù)式風(fēng)格開(kāi)發(fā)的程序能夠在一個(gè)大規(guī)模的廉價(jià)主機(jī)集群中自動(dòng)執(zhí)行。運(yùn)行系統(tǒng)負(fù)責(zé)處理具體的數(shù)據(jù)分塊、在一個(gè)主機(jī)集合中調(diào)度程序的執(zhí)行、處理主機(jī)故障以及管理必需的主機(jī)間通訊。這允許沒(méi)有任何并行和分布式系統(tǒng)的經(jīng)驗(yàn)的開(kāi)發(fā)人員也能利用輕松地使用一個(gè)大型分布式系統(tǒng)中的資源。
Leslie Valiant最早提出了塊同步并行處理[3]模型。在該模型中,處理器按照一些步驟獨(dú)立地執(zhí)行來(lái)處理本地的數(shù)據(jù)。在計(jì)算過(guò)程中他們也會(huì)跟其他的處理器通信。但是他們?cè)趫?zhí)行過(guò)程都會(huì)在已知點(diǎn)停下來(lái)進(jìn)行同步;這些點(diǎn)被稱(chēng)為邊界同步點(diǎn)。這種方法確保能夠很容易檢測(cè)到死鎖(譯者注:是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象)或者活鎖(譯者注:兩者一直謙讓?zhuān)紵o(wú)法使用資源)問(wèn)題。
低延遲:流式計(jì)算
如果一個(gè)應(yīng)用程序需要在每一個(gè)事件發(fā)生時(shí)“立即”響應(yīng),就需要某種形式的流式計(jì)算,它會(huì)在數(shù)據(jù)到來(lái)時(shí)就馬上進(jìn)行處理。常見(jiàn)的方式是有一小段代碼負(fù)責(zé)獨(dú)立地處理某一個(gè)事件。為了加速這個(gè)過(guò)程,數(shù)據(jù)流會(huì)被分片并在集群內(nèi)分布地處理。
Apache Storm是事件處理的流行框架,它由Twitter開(kāi)發(fā)并由Twitter和其他需要該實(shí)時(shí)處理模式的公司發(fā)布。另一個(gè)例子是Amazon的Kinesis,或者M(jìn)apR的流式功能。這些框架負(fù)責(zé)管理在多個(gè)集群節(jié)點(diǎn)間的擴(kuò)展而且定義了支持彈性和容錯(cuò)的多個(gè)級(jí)別,例如,通過(guò)檢查點(diǎn)來(lái)確保系統(tǒng)能夠在故障種恢復(fù)。
這些流式計(jì)算框架只是解決了計(jì)算負(fù)載的并行化;為了能夠進(jìn)行查詢就需要另外一個(gè)存儲(chǔ)層來(lái)保存結(jié)果。由于計(jì)算的“當(dāng)前狀態(tài)”是保存在流式計(jì)算框架內(nèi),一般沒(méi)有很清晰的方式來(lái)訪問(wèn)和查詢這些信息,對(duì)于外部模塊這個(gè)問(wèn)題尤甚。依據(jù)已經(jīng)處理完的數(shù)據(jù)總量,這可能引發(fā)對(duì)一個(gè)大型、高性能存儲(chǔ)的后臺(tái)需求。
簡(jiǎn)而言之,Apache Spark(下面會(huì)詳細(xì)介紹)采取了一種混合的方式。事件被采集到一個(gè)緩存中,然后以批處理的方式按固定的間隔(每幾秒鐘)進(jìn)行處理。由于Spark把數(shù)據(jù)放在內(nèi)存里,它能夠在原則上快速來(lái)處理批處理任務(wù)從而跟得上輸入數(shù)據(jù)流的節(jié)奏。
總之,低延遲處理一般需要某種形式的流式計(jì)算,及其相關(guān)的計(jì)算和存儲(chǔ)基礎(chǔ)架構(gòu)。很值得注意的是如果應(yīng)用程序的需求很極端(例如,如果要求毫秒級(jí)以內(nèi)的延遲),那么傳統(tǒng)的系列軟件可能就不足以支持這類(lèi)任務(wù)。可能必需使用專(zhuān)用的系列軟件或者組件來(lái)針對(duì)應(yīng)用程序進(jìn)行定制化。
高延遲:批處理
如果應(yīng)用程序可能容忍高延遲(例如,它不需要在幾秒、或者幾分鐘內(nèi)生成結(jié)果),那么就可以考慮針面向批處理的計(jì)算方式。
最簡(jiǎn)單的例子包括應(yīng)用程序掃描日志文件來(lái)判斷需要做什么。另外,在應(yīng)用程序查詢數(shù)據(jù)并計(jì)算出所需要的結(jié)果后,所有數(shù)據(jù)可以加載到數(shù)據(jù)庫(kù)中。這里使用的數(shù)據(jù)庫(kù)可以是傳統(tǒng)的SQL數(shù)據(jù)庫(kù)、或存儲(chǔ)型數(shù)據(jù)庫(kù)例如Cassandra,或能夠執(zhí)行聚合任務(wù)的數(shù)據(jù),如CouchDB。
批處理可以基于Apache Hadoop(后面會(huì)詳細(xì)介紹)這類(lèi)的框架來(lái)進(jìn)行有效地?cái)U(kuò)展,它能夠把底層的處理按照map-reduce模式進(jìn)行。日志數(shù)據(jù)可以通過(guò)分布化的方式保存在集群中。應(yīng)用程序能夠以并行的方式來(lái)降低響應(yīng)時(shí)間。
由于Hadoop已經(jīng)成熟,在Hadoop之上就發(fā)展出了很多項(xiàng)目。Apache Drill就是這樣的一個(gè)例子,它是一個(gè)與Google基于BigQuery的Dremel類(lèi)似的垂直數(shù)據(jù)庫(kù)(或列式數(shù)據(jù)庫(kù))。垂直數(shù)據(jù)庫(kù)是針對(duì)你必須掃描整個(gè)表然后對(duì)與條件匹配的條目進(jìn)行計(jì)算的任務(wù)進(jìn)行了優(yōu)化。不同與傳統(tǒng)數(shù)據(jù)庫(kù)以行的方式保存數(shù)據(jù),它以列的方式保存數(shù)據(jù)。所以與日志文件中每個(gè)條目一行的方式不同,它選擇數(shù)據(jù)中每一個(gè)字段并把它們保存在一起,而是實(shí)現(xiàn)了好得多的IO特性。惠普的Vertica和ParStream也是垂直數(shù)據(jù)庫(kù)。
有些項(xiàng)目和產(chǎn)品已經(jīng)開(kāi)始用內(nèi)存替換數(shù)據(jù)庫(kù)底層的磁盤(pán)(或者把閃存和內(nèi)存混合使用)作為存儲(chǔ)媒介,值得注意的是SAP的HANA、GridGain和Apache Spark都繞過(guò)了磁盤(pán)的速度限制。雖然這些系統(tǒng)已經(jīng)顯著地減少了查詢之間的輪轉(zhuǎn)時(shí)間,但是本質(zhì)上講還是批處理。另一個(gè)高性能解決方案的例子是結(jié)合了閃存的內(nèi)存系統(tǒng)Aerospike。
Hadoop 1.0
Hadoop[4]是根據(jù)Google的MapReduce和Google文件系統(tǒng)研究論文發(fā)展起來(lái)的開(kāi)源分布式基礎(chǔ)架構(gòu),用于程序開(kāi)發(fā)和數(shù)據(jù)存儲(chǔ)。它是基于“map reduce”計(jì)算模式的,首先一個(gè)計(jì)算任務(wù)的輸入經(jīng)過(guò)“Map”被分割到多個(gè)獨(dú)立處理輸入數(shù)據(jù)子集的工作節(jié)點(diǎn),第二個(gè)步驟是“reduce”即所有“Map”的子任務(wù)的結(jié)果被收集起來(lái)并以某種方式進(jìn)行組合來(lái)形成計(jì)算任務(wù)的整體輸出(圖6)。數(shù)據(jù)既包括保存在Hadoop文件系統(tǒng)中的非結(jié)構(gòu)化數(shù)據(jù),也包括保存在數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)。由于Hadoop的設(shè)計(jì)目標(biāo)是解決那些輸入數(shù)據(jù)量很大以至于單臺(tái)計(jì)算機(jī)的硬盤(pán)空間無(wú)法滿足存儲(chǔ)要求的問(wèn)題,所以MapReduce計(jì)算模式的設(shè)計(jì)思路是把計(jì)算安排到存放數(shù)據(jù)的節(jié)點(diǎn)上,而不是把數(shù)據(jù)搬到執(zhí)行計(jì)算的節(jié)點(diǎn)去。在該框架的設(shè)計(jì)中通過(guò)數(shù)據(jù)復(fù)制實(shí)現(xiàn)很強(qiáng)的容錯(cuò)能力,而且在架構(gòu)中會(huì)通過(guò)輪詢來(lái)保持對(duì)工作節(jié)點(diǎn)進(jìn)度的跟蹤,并且如果某些節(jié)點(diǎn)失效則會(huì)把這些任務(wù)重新分配給其他的節(jié)點(diǎn)。另外,該框架將自動(dòng)地在計(jì)算/存儲(chǔ)網(wǎng)絡(luò)上分配“map”和“reduce”計(jì)算任務(wù)。以上所有工作都是由Hadoop運(yùn)行環(huán)境自動(dòng)完成,而開(kāi)發(fā)人員只需要?jiǎng)邮珠_(kāi)發(fā)map和reduce的例程。
整個(gè)Hadoop生態(tài)系統(tǒng)包括以下的項(xiàng)目:
? Pig - 一個(gè)支持通過(guò)高級(jí)語(yǔ)言編程來(lái)分析大型數(shù)據(jù)集的平臺(tái)。Pig提供了一個(gè)編譯器,它可以把Pig程序翻譯成Hpadoop框架可以執(zhí)行的MapReduce作業(yè)序列。
? Hive - Hadoop環(huán)境所支持的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)解決方案。它把為人熟知的關(guān)系型數(shù)據(jù)庫(kù)概念,如表、列和分區(qū),以及SQL的子集(HiveQL)引入了Hadoop的非結(jié)構(gòu)化世界。Hive的查詢被編譯成Hadoop執(zhí)行的MapReduce作業(yè)。
? HBase - 一個(gè)為在Hadoop中為支持大規(guī)模稀疏表而設(shè)計(jì)的列式NoSQL數(shù)據(jù)存儲(chǔ)環(huán)境。
? Flume - 一個(gè)用于在數(shù)據(jù)生成的同時(shí)進(jìn)行搬移的分布式、穩(wěn)定的、可用服務(wù)。Flume非常適合從多個(gè)系統(tǒng)中收集日至并且在日志數(shù)據(jù)生成時(shí)就將其加載到Hadoop分布式文件系統(tǒng)(HDFS)中。
? Lucent - 一個(gè)針對(duì)高性能、全功能文本搜索的搜索引擎庫(kù)。
? Avro - 使用JSON對(duì)預(yù)定義的數(shù)據(jù)類(lèi)型和協(xié)議進(jìn)行數(shù)據(jù)序列化的技術(shù),而且把序列化成一種緊湊二進(jìn)制格式。
? Zookeeper - 維護(hù)配置信息和命名的集中服務(wù),提供分布式的同步及分組服務(wù)
? Oozie - 用于管理和構(gòu)建Apache Hadoop作業(yè)執(zhí)行的工作流調(diào)度系統(tǒng)。
Hadoop很適合作批處理,但是通常人們認(rèn)為它并不適合于處理沒(méi)有終止的數(shù)據(jù)流。這是因?yàn)橐粋€(gè)Hadoop作業(yè)缺省認(rèn)為所有數(shù)據(jù)分布在多個(gè)節(jié)點(diǎn)上的文件中,而且會(huì)啟動(dòng)Map和Redcue來(lái)處理固定大小的輸入并生成固定大小的輸入。對(duì)于流式應(yīng)用程序,數(shù)據(jù)流是穩(wěn)定且不會(huì)停止的,Hadoop模型就顯得太笨重且不夠理想。動(dòng)態(tài)地添加新的map任務(wù)來(lái)處理新近到達(dá)的輸入(以滑動(dòng)窗口的方式來(lái)處理數(shù)據(jù)流的系統(tǒng)可能會(huì)把處理舊數(shù)據(jù)處理任務(wù)遷移走)導(dǎo)致了太多的開(kāi)銷(xiāo)以及太多的性能損耗。
Hadoop也不適合于需要使用于上一次計(jì)算結(jié)果的迭代算法。這類(lèi)算法包括很多種對(duì)于復(fù)雜數(shù)據(jù)分析非常關(guān)鍵的機(jī)器學(xué)習(xí)算法,例如在線學(xué)習(xí)算法[6]。
Hadoop對(duì)于需要使用一個(gè)共享的全局狀態(tài)的算法也不適用,因?yàn)檎麄€(gè)MapReduce模型是并行運(yùn)行map任務(wù)而不需要訪問(wèn)一個(gè)共享狀態(tài)的,這樣可以避免由于鎖、Semaphores(信號(hào)燈)以及網(wǎng)絡(luò)延遲而形成服務(wù)器性能瓶頸。在概率模型中用于評(píng)估的蒙特卡羅模擬就是會(huì)發(fā)生這類(lèi)問(wèn)題的例子。
圖7 展示了Hadoop的多個(gè)組件是如何結(jié)合在一起的
Hadoop 2.0
正是因?yàn)檫@些原因,人們開(kāi)發(fā)了Hadoop 2.0. 關(guān)鍵是該架構(gòu)實(shí)現(xiàn)了HDFS、資源管理及MapReduce編程的解耦,并且引入了稱(chēng)為YARN的資源管理層,它負(fù)責(zé)管理底層的資源。現(xiàn)在一個(gè)Hadoop 2.0的應(yīng)用程序可以在Hadoop管理的存儲(chǔ)和計(jì)算節(jié)點(diǎn)之上部署自己的應(yīng)用程序級(jí)調(diào)度例程。
Berkeley Spark [39,40]
Spark是一個(gè)由加州大學(xué)伯克利分校發(fā)明的開(kāi)源集群計(jì)算系統(tǒng),它的目標(biāo)是加速數(shù)據(jù)分析 - 包括運(yùn)行階段和開(kāi)發(fā)階段。為了更快地運(yùn)行程序,Spark提供了在內(nèi)存中進(jìn)行集群計(jì)算的原語(yǔ):一個(gè)作業(yè)可以把數(shù)據(jù)加載到內(nèi)存中并且能夠以比基于磁盤(pán)的Hadoop系統(tǒng)快得多的速度進(jìn)行反復(fù)地查詢。Spark也希望統(tǒng)一處理?xiàng)#?dāng)前是由MapReduce完成批處理,HBase完成交互查詢而實(shí)時(shí)分析的處理由其他框架完成 - 例如推特的Strom。這三個(gè)軟件集難以用一致的指標(biāo)來(lái)維護(hù)。而且它們也很難完成對(duì)流式數(shù)據(jù)的交互式查詢。統(tǒng)一的Spark就是為了高效且可擴(kuò)展地處理這些需求而設(shè)計(jì)的。
Spark的一個(gè)重要概念是彈性分布式數(shù)據(jù)集(RDD - Resilient Distributed dataset),它是一個(gè)集群中分散保存在內(nèi)存或磁盤(pán)中的對(duì)象集合。Spark中的應(yīng)用程序可以把這些RDD加載到集群節(jié)點(diǎn)的內(nèi)存中并且在運(yùn)行中由Spark運(yùn)行環(huán)境來(lái)自動(dòng)地處理數(shù)據(jù)的分區(qū)和本地化。這能夠支持快速的迭代處理。一個(gè)輸入的數(shù)據(jù)流可以分割成一系列的批處理并且做為一個(gè)小型批處理作業(yè)序列來(lái)處理。Spark架構(gòu)把流處理和批處理無(wú)縫地結(jié)合在了一起。
為了便于快速開(kāi)發(fā),Spark為Scale、Java和Python提供了簡(jiǎn)潔明了的API。Spark也可以使用Scala和Python shell交互式地快速查詢大數(shù)據(jù)集。Spark將數(shù)據(jù)保持在內(nèi)存中的初衷是為了有助于兩類(lèi)應(yīng)用程序:迭代的機(jī)器學(xué)習(xí)算法和交互式的數(shù)據(jù)挖掘。在這兩類(lèi)場(chǎng)景下,Spark的表現(xiàn)都比Hadoop MapReduce快100倍。
Spark也是Shark后臺(tái)的引擎,Shark是一個(gè)與Apache Hive完全兼容的數(shù)據(jù)倉(cāng)庫(kù),它的運(yùn)行速度也是Hive的100倍。由于Spark是一個(gè)新的引擎,所以它能夠訪問(wèn)Hadoop支持的所有數(shù)據(jù)源。
由于使用諸如YARN和HDFS等相同的底層基礎(chǔ)架構(gòu),Spark能夠無(wú)縫地與Hadoop 2.0生態(tài)系統(tǒng)集成(圖9)并做為MapReduce的一種替代手段。GraphX和MLlib庫(kù)包括可以實(shí)時(shí)運(yùn)行的復(fù)雜圖計(jì)算和機(jī)器學(xué)習(xí)算法。BlinkDB是一個(gè)大規(guī)模并行、運(yùn)行交互式SQL查詢的近似查詢引擎,它為響應(yīng)時(shí)間而對(duì)查詢精確度做了妥協(xié),其返回結(jié)果帶有明確的的錯(cuò)誤率注釋。BlinkDB在2-10%的錯(cuò)誤率下性能表現(xiàn)是Hive的200倍。
存儲(chǔ)基礎(chǔ)架構(gòu)
以多媒體、文本等格式快速涌入的海量數(shù)據(jù)很難以行式及列式的數(shù)據(jù)庫(kù)結(jié)構(gòu)來(lái)裝載。針對(duì)這類(lèi)問(wèn)題,產(chǎn)生了很多解決方案來(lái)滿足程序員在開(kāi)發(fā)使用大型數(shù)據(jù)集的社交、分析、游戲、金融和醫(yī)學(xué)APP時(shí)對(duì)于擴(kuò)展性和速度的需求。圖10顯示了用于存儲(chǔ)海量數(shù)據(jù)的多種類(lèi)型的數(shù)據(jù)庫(kù)。
為了擴(kuò)展數(shù)據(jù)庫(kù)以應(yīng)對(duì)數(shù)據(jù)在容量、速度和多樣性的挑戰(zhàn),我們需要在多個(gè)服務(wù)期間進(jìn)行水平擴(kuò)展而不是對(duì)單個(gè)服務(wù)器進(jìn)行升級(jí)(增加更多的內(nèi)存或者增加硬盤(pán)的容量)來(lái)垂直擴(kuò)展。但是水平擴(kuò)展要用到將數(shù)據(jù)保存在不同位置的分布式架構(gòu)。這樣的設(shè)計(jì)就帶來(lái)了所有分布式計(jì)算系統(tǒng)都共同面對(duì)的特定挑戰(zhàn):CAP理論[9]。根據(jù)CAP理論,一個(gè)分布式存儲(chǔ)系具備分區(qū)容錯(cuò)能力(當(dāng)任意信息丟失或者部分系統(tǒng)故障時(shí)系統(tǒng)還可以繼續(xù)運(yùn)行)時(shí)就需要犧牲一致性(所有人都能看到相同的數(shù)據(jù))或者可用性(你可以隨時(shí)讀/寫(xiě))。請(qǐng)注意分區(qū)容錯(cuò)性并不只是一個(gè)可選選項(xiàng),因?yàn)楫?dāng)節(jié)點(diǎn)崩潰(無(wú)論什么原因)或者網(wǎng)絡(luò)上有任意數(shù)量的包被丟棄(由于交換機(jī)故障或者其他原因)發(fā)生時(shí)就會(huì)導(dǎo)致分區(qū)的產(chǎn)生。當(dāng)“分區(qū)”不可避免地發(fā)生時(shí)而且分布式系統(tǒng)的各個(gè)分區(qū)無(wú)法互相通訊時(shí),問(wèn)題就變成了是否要保持一致性(意味著只有在滿足一致性時(shí)才能響應(yīng)查詢請(qǐng)求,而當(dāng)一致性無(wú)法保障時(shí)就不響應(yīng)查詢請(qǐng)求,而這也就意味著會(huì)犧牲可用性)或者是否要保持可用性(意味著盡管有些不一致也會(huì)應(yīng)答所有的查詢)。
評(píng)判一個(gè)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)指標(biāo)是它們的ACID屬性:
? 原子性 一個(gè)交易的所有請(qǐng)求要么都完成要么都放棄。如果一個(gè)交易中有一部分失敗,整個(gè)交易就會(huì)失敗而數(shù)據(jù)庫(kù)的狀態(tài)會(huì)保持不變。
? 一致性 確保每一個(gè)交易都會(huì)把數(shù)據(jù)庫(kù)從一個(gè)健全狀態(tài)改到另一個(gè)健全狀態(tài)。
? 隔離性 如果交易在持續(xù)執(zhí)行時(shí),能夠確保在一個(gè)系統(tǒng)狀態(tài)中獲得同時(shí)執(zhí)行的交易的結(jié)果。
? 持久性 意味著一旦一個(gè)交易被提交就會(huì)始終保持下來(lái),即使發(fā)生掉電、崩潰或錯(cuò)誤也不會(huì)受影響。
ACID專(zhuān)注于一致性是關(guān)系型數(shù)據(jù)所采取的傳統(tǒng)方式。為了處理互聯(lián)網(wǎng)及基于云計(jì)算的存儲(chǔ)模型的需求,圖譜的另一端是由Eric Brewer[10]提出的另一個(gè)設(shè)計(jì)理念,被稱(chēng)為BSAE:基本可用、軟狀態(tài)及最終一致性。多數(shù)NoSQL都是基于BASE原則的,也就是在CAP理論中選擇C或者A。
下面的表匯總了最常見(jiàn)的數(shù)據(jù)庫(kù)模型,列出它們的優(yōu)勢(shì)以及在CAP理論中他們對(duì)于一致性和可用性的取舍[8]。
表1 用于大數(shù)據(jù)的數(shù)據(jù)庫(kù)類(lèi)型
性能評(píng)估及代表性基準(zhǔn)
如在本節(jié)的前面說(shuō)討論的,在過(guò)去的幾年中多種數(shù)據(jù)庫(kù)類(lèi)型和NoSQL解決方案已經(jīng)衍生分化成鍵/值存儲(chǔ)、文檔型數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)和newSQL。由于這些解決方案針對(duì)不同的細(xì)分領(lǐng)域,所以試圖評(píng)估數(shù)據(jù)庫(kù)對(duì)于某個(gè)特定問(wèn)題的表現(xiàn)就很重要但是也越來(lái)越困難。
不同的數(shù)據(jù)庫(kù)使用不同的方法對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和訪問(wèn)。一些數(shù)據(jù)庫(kù),諸如Couchbase和MongoDB,會(huì)試圖運(yùn)行在已經(jīng)在內(nèi)存中緩存了數(shù)據(jù)集的硬件上。另一些數(shù)據(jù)庫(kù),例如Aerospike所做的優(yōu)化就是直接對(duì)固態(tài)盤(pán)(SSD)進(jìn)行寫(xiě)操作,這就使它在涉及大量插入操作的場(chǎng)景下基準(zhǔn)成績(jī)突出。雖然內(nèi)存數(shù)據(jù)庫(kù)在延遲和吞吐量方面有很大的優(yōu)勢(shì),當(dāng)很大的數(shù)據(jù)集需要處理時(shí)就會(huì)發(fā)生擴(kuò)展性的問(wèn)題。SSD相比與內(nèi)存則擁有更好的密度和更低的每GB成本,因此對(duì)于SSD數(shù)據(jù)庫(kù)可以在較少的節(jié)點(diǎn)上擴(kuò)展為更大的數(shù)據(jù)集 - 當(dāng)數(shù)據(jù)集很大時(shí)則越有價(jià)值。通過(guò)增加更過(guò)內(nèi)存型主機(jī)來(lái)進(jìn)行擴(kuò)展最終將導(dǎo)致更高的故障恢復(fù)成本,因?yàn)橹鳈C(jī)越多發(fā)生錯(cuò)誤的概率越大。
除了用于存儲(chǔ)數(shù)據(jù)及實(shí)現(xiàn)容錯(cuò)的不同技術(shù),性能基準(zhǔn)還要應(yīng)對(duì)這樣的一個(gè)事實(shí)即現(xiàn)實(shí)世界里各類(lèi)的場(chǎng)景將會(huì)以所有的方式來(lái)訪問(wèn)并保持?jǐn)?shù)據(jù)。在一個(gè)基準(zhǔn)的研究中,測(cè)試了兩個(gè)常見(jiàn)的情景:對(duì)持久性有很高要求的應(yīng)用程序 - 每一個(gè)提交的交易必須寫(xiě)盤(pán)并復(fù)制以放節(jié)點(diǎn)故障;放寬對(duì)這些要求而追求速度盡可能高的應(yīng)用程序[16]。另一個(gè)研究測(cè)試了包括只讀交易、讀寫(xiě)、只寫(xiě)[17]等等各種場(chǎng)景下所能達(dá)到的吞吐量和延遲指標(biāo)。UC Berkeley AmpLab進(jìn)行的研究針對(duì)特定類(lèi)型的查詢[18]做了在三個(gè)不同場(chǎng)景下Shark與一些代表性數(shù)據(jù)庫(kù)的對(duì)比測(cè)試。
一般而言,在快速發(fā)展的業(yè)態(tài)下很難對(duì)性能有明確的闡述。性能?chē)?yán)重依賴(lài)于所使用的查詢引擎、存儲(chǔ)架構(gòu)及數(shù)據(jù)被保存的方式。圖11代表了關(guān)于能力的一個(gè)寬泛分類(lèi)而不應(yīng)該被視為一個(gè)確切的排名。圖12展示了考慮到存儲(chǔ)的數(shù)據(jù)的復(fù)雜度及能夠數(shù)據(jù)的數(shù)據(jù)量大小后不同數(shù)據(jù)庫(kù)類(lèi)型的對(duì)比。
分析
機(jī)器學(xué)習(xí)算法能夠以自動(dòng)且可擴(kuò)展的方式對(duì)所收集的大型、多維數(shù)據(jù)進(jìn)行洞察分析。廣義上說(shuō),機(jī)器學(xué)習(xí)是指計(jì)算機(jī)具有對(duì)數(shù)據(jù)自動(dòng)進(jìn)行模式學(xué)習(xí)并得出推論的能力。這些算法可以根據(jù)很多不同的維度進(jìn)行分類(lèi)。
算法類(lèi)型
圖13展示了該分類(lèi)。
監(jiān)督式學(xué)習(xí) - 這個(gè)類(lèi)別包括所有將輸入數(shù)據(jù)映射到給定的目標(biāo)值或分類(lèi)標(biāo)簽的機(jī)器學(xué)習(xí)算法。通常已知的算法包括對(duì)分類(lèi)標(biāo)簽(類(lèi))進(jìn)行預(yù)測(cè)的分類(lèi)(Classification)和對(duì)連續(xù)值變量進(jìn)行預(yù)測(cè)的回歸/預(yù)測(cè)(regression/rediction)。在這些算法中,學(xué)習(xí)者利用一個(gè)大型的訓(xùn)練數(shù)據(jù)集生成一個(gè)源自一個(gè)類(lèi)集的特征向量(分類(lèi)的情況下)或值(回歸的情況下)的映射函數(shù)。每一個(gè)數(shù)據(jù)點(diǎn)都有人工的標(biāo)注是訓(xùn)練數(shù)據(jù)的必要條件。要獲得可能數(shù)百萬(wàn)數(shù)據(jù)點(diǎn)的人工標(biāo)注的成本降非常高,因此對(duì)于很多大數(shù)據(jù)應(yīng)用程序而言這類(lèi)標(biāo)注不是完全可行的。但是,當(dāng)今的很多大數(shù)據(jù)應(yīng)用程序利用較小的訓(xùn)練數(shù)據(jù)集就能夠取得對(duì)于現(xiàn)實(shí)世界的大規(guī)模、未標(biāo)注數(shù)據(jù)集的最佳成果。在這個(gè)類(lèi)別中一些最廣泛使用的分類(lèi)工具包括:神經(jīng)網(wǎng)絡(luò)、決策樹(shù)、支持向量機(jī)和樸素貝葉斯;而回歸/預(yù)測(cè)的算法則包括:線性回歸、多項(xiàng)式回歸、徑向基函數(shù),MARS和多線性插值。
無(wú)監(jiān)督式學(xué)習(xí) - 這個(gè)類(lèi)別包括所有不需要相關(guān)的人工標(biāo)簽就可以對(duì)輸入數(shù)據(jù)的隱含結(jié)構(gòu)進(jìn)行學(xué)習(xí)的機(jī)器學(xué)習(xí)算法。常用的算法包括聚類(lèi)和源信號(hào)分離。輸入數(shù)據(jù)的必要條件是存在能夠在知識(shí)發(fā)現(xiàn)中發(fā)掘的代表性功能。這個(gè)技術(shù)特別適合于通過(guò)該學(xué)習(xí)框架能夠很方便訪問(wèn)大量未標(biāo)注數(shù)據(jù)集的大數(shù)據(jù)應(yīng)用程序。本類(lèi)別中一些廣泛使用的工具包括K均值聚類(lèi),高斯混合模型,譜聚類(lèi),層次聚類(lèi),主成分分析,獨(dú)立分量分析。
強(qiáng)化學(xué)習(xí) - 這個(gè)類(lèi)別包括所有學(xué)習(xí)觀察與行動(dòng)之間的映射函數(shù)從而使獎(jiǎng)勵(lì)函數(shù)值(譯者注:獎(jiǎng)勵(lì)函數(shù)值即強(qiáng)化信號(hào))最大的所有機(jī)器學(xué)習(xí)算法。該學(xué)習(xí)算法的優(yōu)化目標(biāo)是在一段時(shí)間內(nèi)采取一個(gè)行動(dòng)而去的最大的獎(jiǎng)勵(lì)。這類(lèi)算法雖然在機(jī)器人領(lǐng)域很流行,但是現(xiàn)在大數(shù)據(jù)社區(qū)也取得了有限的進(jìn)展。這個(gè)類(lèi)別中廣泛使用的工具包括馬爾可夫決策過(guò)程和Q-learning。
半監(jiān)督式分類(lèi) - 這個(gè)類(lèi)別使用少量有標(biāo)注的數(shù)據(jù)并把這些信息與大量無(wú)標(biāo)注數(shù)據(jù)融合而實(shí)現(xiàn)一個(gè)適當(dāng)?shù)膶W(xué)習(xí)算法。由于存在大量用傳統(tǒng)監(jiān)督式學(xué)習(xí)無(wú)法很好地進(jìn)行分析的無(wú)標(biāo)注數(shù)據(jù),大數(shù)據(jù)社區(qū)對(duì)于這類(lèi)算法就特別感興趣。另一方面,半監(jiān)督式學(xué)習(xí)技術(shù)以一種有效的方式尋找已標(biāo)注與未標(biāo)注數(shù)據(jù)見(jiàn)的結(jié)構(gòu)共性來(lái)生成對(duì)大型數(shù)據(jù)集的映射函數(shù)。在本分類(lèi)中俄子項(xiàng)算法包括生成模型,基于圖的模型和多視圖模型。這個(gè)類(lèi)別中一些最廣泛使用的工具包括主動(dòng)學(xué)習(xí),遷移學(xué)習(xí)和合作培訓(xùn)。
數(shù)據(jù)挖掘的多樣性
由于上面的分類(lèi)適合于簡(jiǎn)單、結(jié)構(gòu)化的數(shù)據(jù)集,所以復(fù)雜、非結(jié)構(gòu)化數(shù)據(jù)集需要進(jìn)一步的界定并從中獲益。數(shù)據(jù)的多樣性可以劃分為六個(gè)寬泛的類(lèi)別而之前一節(jié)所提到的機(jī)器學(xué)習(xí)算法也能夠以多種方式進(jìn)行適配并/或加強(qiáng)來(lái)應(yīng)用到多種非結(jié)構(gòu)化的數(shù)據(jù)集上。
? 時(shí)序數(shù)據(jù) - 絕大多數(shù)大數(shù)據(jù)應(yīng)用程序都對(duì)時(shí)間很敏感,因此對(duì)于時(shí)序數(shù)據(jù)采用可擴(kuò)展的機(jī)器學(xué)習(xí)算法就變得很重要。時(shí)序數(shù)據(jù)是通過(guò)隨著時(shí)間推移反復(fù)測(cè)量而得到的數(shù)值或事件序列,例如股票市場(chǎng)的數(shù)據(jù)。可以對(duì)時(shí)序數(shù)據(jù)進(jìn)行成功建模的算法包括隱馬爾可夫模型,馬爾可夫隨機(jī)場(chǎng)(時(shí)空建模)和條件隨機(jī)域。將這些算法擴(kuò)展到大數(shù)據(jù)領(lǐng)域是個(gè)熱門(mén)的研究課題。最近,研究人員已經(jīng)成功地?cái)U(kuò)展了一個(gè)傳統(tǒng)的動(dòng)態(tài)時(shí)間歸整(DTW)算法來(lái)處理萬(wàn)億量級(jí)的數(shù)據(jù)點(diǎn)。
? 流數(shù)據(jù) - 數(shù)據(jù)持續(xù)抵達(dá),例如,來(lái)源于遠(yuǎn)程傳感器,零售交易,監(jiān)控系統(tǒng),互聯(lián)網(wǎng)流量,和電信網(wǎng)絡(luò)的數(shù)據(jù)。為了解決這類(lèi)數(shù)據(jù)的需求,機(jī)器學(xué)習(xí)算法必須以一種在線的方式工作。多數(shù)機(jī)器學(xué)習(xí)算法需要對(duì)數(shù)據(jù)進(jìn)行批處理,例如聚類(lèi)需要一次性檢查整個(gè)數(shù)據(jù)來(lái)學(xué)習(xí)有意義的類(lèi)。這些技術(shù)對(duì)于流數(shù)據(jù)而言是不可擴(kuò)展的,因?yàn)榇鎯?chǔ)過(guò)去的數(shù)據(jù)在計(jì)算上是不可行的。現(xiàn)在,已經(jīng)提出了一些針對(duì)流數(shù)據(jù)的與離線算法近似的分布式機(jī)器學(xué)習(xí)算法,其中包括分布的K-均值和分布的奇異值分解。一些包括Apache Mahout和Vowpal Wabbit在內(nèi)的工具已經(jīng)使用了這些算法。另一方面,有一些算法可以解決這些挑戰(zhàn),例如線性支持向量機(jī),內(nèi)核支持向量機(jī)算法,平行樹(shù)學(xué)習(xí)。
? 序列數(shù)據(jù) - 序列數(shù)據(jù)是由帶有或不帶有時(shí)間概念[19]的已經(jīng)排序的要素或事件序列構(gòu)成。序列數(shù)據(jù)的分析出現(xiàn)在許多不同的環(huán)境中,包括零售數(shù)據(jù)分析(確定客戶購(gòu)買(mǎi)一種類(lèi)型的商品后是否還會(huì)購(gòu)買(mǎi)另一種類(lèi)型的商品),或分析基因和蛋白質(zhì)序列。這里常用的機(jī)器學(xué)習(xí)算法經(jīng)常包括隱式馬爾可夫模型和序列比對(duì)算法(比如用于本地DNA序列比對(duì)的BLAST)。
? 圖數(shù)據(jù) - 很多問(wèn)題都會(huì)自然建模成圖,這些問(wèn)題包括社交網(wǎng)絡(luò)分析、萬(wàn)維網(wǎng)分析、生物網(wǎng)絡(luò)分析及分析或合成蛋白質(zhì)結(jié)構(gòu)。幾乎所有的大型圖挖掘算法可以很有效地用矩陣來(lái)表示,進(jìn)而有必要使用大規(guī)模的矩陣求解器。目前已經(jīng)能夠處理這種大規(guī)模數(shù)據(jù)的技術(shù)包括協(xié)同過(guò)濾、奇異值分解(SVD)、和網(wǎng)頁(yè)排名(Page Rank)。旨在解決這一挑戰(zhàn)的兩個(gè)工具是Presto和GraphLab。
? 空間數(shù)據(jù) – 空間數(shù)據(jù)庫(kù)保存著與空間相關(guān)的數(shù)據(jù),例如地圖、醫(yī)療影像數(shù)據(jù)、遠(yuǎn)程傳感器數(shù)據(jù)、VLSI芯片布局?jǐn)?shù)據(jù)及其他。由于數(shù)據(jù)之間具有空間上的聯(lián)系,所以這些數(shù)據(jù)不能視為完全獨(dú)立的;學(xué)習(xí)算法可以掌握期間的聯(lián)系。
? 多媒體數(shù)據(jù) – 這個(gè)類(lèi)別包括圖像、視頻、音頻和文本標(biāo)記。這個(gè)類(lèi)別所使用的挖掘算法包括用于圖像分割,運(yùn)動(dòng)矢量分析,模型構(gòu)建的數(shù)字信號(hào)處理技術(shù)。
多樣的數(shù)據(jù)分類(lèi)很容易映射到不同垂直細(xì)分行業(yè)的特定應(yīng)用場(chǎng)景;例如,金融行業(yè)會(huì)使用時(shí)序數(shù)據(jù)或者社交網(wǎng)絡(luò)中的圖數(shù)據(jù)。有些類(lèi)別也可能會(huì)涵蓋多種數(shù)據(jù);例如大規(guī)模科學(xué)計(jì)算會(huì)涉及所有的數(shù)據(jù)類(lèi)型和挖掘算法。
統(tǒng)計(jì)技術(shù)
機(jī)器學(xué)習(xí)并不是大數(shù)據(jù)意義的唯一范例。實(shí)際上統(tǒng)計(jì)技術(shù)在很長(zhǎng)的時(shí)間里都是數(shù)據(jù)分析的標(biāo)準(zhǔn)方法。有人認(rèn)為統(tǒng)計(jì)技術(shù)與機(jī)器學(xué)習(xí)技術(shù)之間的差別僅僅是術(shù)語(yǔ)不同而已。表二總結(jié)了在兩個(gè)社區(qū)(機(jī)器學(xué)習(xí)社區(qū)和統(tǒng)計(jì)界)之間叫法不同的通用概念。
雖然有很多相似而且只是表面上的再造,但實(shí)際上機(jī)器學(xué)習(xí)算法完全不涉及概率或者統(tǒng)計(jì);例如,支持向量機(jī)和神經(jīng)網(wǎng)絡(luò)。此外,大數(shù)據(jù)分析所涉及的數(shù)據(jù)往往也不僅是數(shù)據(jù)量巨大而且是多維的,因此計(jì)算問(wèn)題也是需要重點(diǎn)考慮。同樣機(jī)器學(xué)習(xí)算法也不得不關(guān)注傳統(tǒng)統(tǒng)計(jì)公式所忽略的計(jì)算問(wèn)題。因此,在很多方面,統(tǒng)計(jì)技術(shù)都被視為機(jī)器學(xué)習(xí)技術(shù)的一個(gè)子集。這會(huì)陷入對(duì)建模和推理感興趣的統(tǒng)計(jì)學(xué)家與熱愛(ài)算法和預(yù)測(cè)的機(jī)器學(xué)習(xí)專(zhuān)家之間的哲學(xué)討論,也就超出了本文的范疇。
文獻(xiàn)中經(jīng)常使用的另一個(gè)術(shù)語(yǔ)是“數(shù)據(jù)挖掘”。這是一個(gè)很常見(jiàn)的術(shù)語(yǔ),它是指從數(shù)據(jù)中進(jìn)行推演和預(yù)測(cè)的全套技術(shù)。因此,機(jī)器學(xué)習(xí)技術(shù)是數(shù)據(jù)挖掘技術(shù)的一個(gè)子集,數(shù)據(jù)挖掘技術(shù)還包括人們由于推理和預(yù)測(cè)的可視化技術(shù)。
圖14顯示了用于在數(shù)據(jù)分析中決定用哪一類(lèi)學(xué)習(xí)算法的基本流程圖
評(píng)估分類(lèi)和預(yù)測(cè)的指標(biāo)
分類(lèi)和預(yù)測(cè)可以通過(guò)以下五個(gè)主要的參數(shù)來(lái)評(píng)估:
? 準(zhǔn)確性:指定的分類(lèi)器或者預(yù)測(cè)因子能夠?qū)τ谛聰?shù)據(jù)或者之前沒(méi)有看到的數(shù)據(jù)(例如,沒(méi)有分類(lèi)標(biāo)簽信息的元組)進(jìn)行正確預(yù)測(cè)的能力
? 速度:生成或者使用指定分類(lèi)器和預(yù)測(cè)因子所涉及的計(jì)算成本
? 魯棒性:當(dāng)存在數(shù)據(jù)噪聲或者數(shù)據(jù)值丟失時(shí),分類(lèi)器和預(yù)測(cè)因子能夠正確預(yù)測(cè)的能力
? 可擴(kuò)展性:對(duì)于大量的數(shù)據(jù)能夠高效構(gòu)建分類(lèi)器和預(yù)測(cè)因子的能力
? 可解釋性:對(duì)分類(lèi)器和預(yù)測(cè)因子所能提供信息的理解和領(lǐng)悟等級(jí)(可解釋性是很主觀的因此很難評(píng)估)
分類(lèi)器對(duì)于第一個(gè)指定的測(cè)試集的準(zhǔn)確性是元組分類(lèi)正確的百分率(這些有標(biāo)簽的元組之前并沒(méi)有用于訓(xùn)練分類(lèi)器)。同樣,預(yù)測(cè)因子的準(zhǔn)確性是指一個(gè)指定的預(yù)測(cè)因子對(duì)新數(shù)據(jù)或者之前沒(méi)有看到的數(shù)據(jù)針對(duì)預(yù)測(cè)屬性所猜測(cè)的值有多準(zhǔn)。分類(lèi)器的錯(cuò)誤率或分類(lèi)誤判率是指其其余沒(méi)有正確分類(lèi)的元組所占的百分率。
一個(gè)分類(lèi)器有m個(gè)分類(lèi),一個(gè)混淆矩陣(Confusion Matrix)是一個(gè)m x m的表。在該表中的一個(gè)條目CM i j 表示被標(biāo)記為分類(lèi)J的分類(lèi)i的元組數(shù)量。如果一個(gè)分類(lèi)器的準(zhǔn)確性很高,大部分的非對(duì)角項(xiàng)就都被0填充。通過(guò)混淆矩陣可以計(jì)算其他的指標(biāo),例如精確度和靈敏度。
一個(gè)預(yù)測(cè)因子的準(zhǔn)確性是由一個(gè)指標(biāo)計(jì)算得來(lái)的,例如一個(gè)測(cè)試集的均方根誤差。準(zhǔn)確性可以使用一個(gè)或多個(gè)與訓(xùn)練集無(wú)關(guān)的測(cè)試集來(lái)進(jìn)行評(píng)估,而且評(píng)估技術(shù)也需要探討,例如交叉驗(yàn)證和自舉。當(dāng)一個(gè)學(xué)習(xí)者輸出的分類(lèi)器對(duì)于訓(xùn)練數(shù)據(jù)是100%準(zhǔn)確但是對(duì)于測(cè)試數(shù)據(jù)的準(zhǔn)確率是50%時(shí),而它應(yīng)該對(duì)兩者的準(zhǔn)確率為75%時(shí),我們說(shuō)該學(xué)習(xí)者過(guò)度擬合。過(guò)度擬合可以使用偏差和方差來(lái)測(cè)量。偏差是指一個(gè)學(xué)習(xí)者傾向?qū)W習(xí)同一個(gè)錯(cuò)誤的東西而方差是學(xué)習(xí)者不顧真實(shí)的東西而傾向于學(xué)習(xí)隨機(jī)的東西[38]。
學(xué)習(xí)者的泛化誤差可以表示為偏差平方和方差的總和。因此,最小化泛化誤差與同時(shí)最小化偏差和方差之間需要有所妥協(xié)。如果通過(guò)最小化方差來(lái)實(shí)現(xiàn)泛化誤差最小化,則會(huì)導(dǎo)致偏差較大也就意味著嚴(yán)重欠擬合。如果偏差降低而方差升高,則會(huì)導(dǎo)致過(guò)度擬合。
可視化
最常用的大數(shù)據(jù)可視化技術(shù)大致可分為以下三類(lèi)(圖 15)。
空間布局可視化 – 這類(lèi)的可視化技術(shù)是指將一個(gè)數(shù)據(jù)對(duì)象映射到坐標(biāo)空間中的一個(gè)特定的點(diǎn)的計(jì)算方法。這些技術(shù)的主要出發(fā)點(diǎn)是人類(lèi)的認(rèn)知能力很容易理解以空間為基礎(chǔ)而組織起來(lái)的信息。常用的空間布局可視化技術(shù)包括折線圖、條形圖、散點(diǎn)圖等。但是,這些圖往往由于自身的局限而無(wú)法展現(xiàn)數(shù)據(jù)中的復(fù)雜關(guān)系。一個(gè)這種復(fù)雜關(guān)系的例子就是數(shù)據(jù)對(duì)象存在層次結(jié)構(gòu),一般用樹(shù)狀圖來(lái)使之可視化[21]。另一個(gè)流行的空間布局可視化技術(shù)的例子是圖或網(wǎng)絡(luò)布局可視化,用節(jié)點(diǎn)和邊界在數(shù)據(jù)中得出有趣的見(jiàn)解。力導(dǎo)向圖繪制算法是可視化算法的一個(gè)例子。
抽象/匯總可視化 – 通常大數(shù)據(jù)分析在發(fā)現(xiàn)任何有意義的相關(guān)性之前都需要處理海量的數(shù)據(jù)(譬如,萬(wàn)億條記錄,TB級(jí)的數(shù)據(jù))。在這個(gè)量級(jí)上對(duì)現(xiàn)有的可視化技術(shù)進(jìn)行擴(kuò)展不是一個(gè)容易的事情。后來(lái)出現(xiàn)了一類(lèi)新的可視化技術(shù),它們?cè)谕ㄟ^(guò)可視化例程進(jìn)行渲染之前會(huì)對(duì)海量數(shù)據(jù)進(jìn)行處理和抽象/匯總[23]。這些技術(shù)被歸入交互式可視化方法之下。數(shù)據(jù)抽象的常見(jiàn)例子是把數(shù)據(jù)用直方圖分級(jí)或者以數(shù)據(jù)立方的方式展現(xiàn)。人們提出了很多聚類(lèi)算法,用新型的概念把以分級(jí)為基礎(chǔ)的數(shù)據(jù)進(jìn)行了擴(kuò)展。它們所帶來(lái)的新優(yōu)勢(shì)是以更緊湊、降維的方式來(lái)展現(xiàn)數(shù)據(jù)。
交互式/實(shí)時(shí)可視化 - 交互式可視化范疇內(nèi)有一類(lèi)新型的技術(shù),它們必須要實(shí)時(shí)地滿足用戶的交互需求。這些技術(shù)需要實(shí)時(shí)地支持客戶對(duì)數(shù)據(jù)的探索,即使是復(fù)雜的可視化機(jī)制也要在一秒鐘之內(nèi)完成[24]。在允許用戶在數(shù)據(jù)中快速發(fā)現(xiàn)重要的見(jiàn)解并且在這些見(jiàn)解之上證明或者反駁不用數(shù)據(jù)科學(xué)理論的場(chǎng)景下,這些技術(shù)則具有著非常強(qiáng)大的功能。這些技術(shù)對(duì)于以數(shù)據(jù)為驅(qū)動(dòng)來(lái)進(jìn)行洞察分析的行業(yè)也是非常關(guān)鍵的。今天諸如Tableau和微軟的Pivot Table等很多行業(yè)軟件對(duì)于交互式可視化都采用了類(lèi)似的策略 。
安全和隱私
大數(shù)據(jù)的安全及隱私挑戰(zhàn)被分解到大數(shù)據(jù)生態(tài)系統(tǒng)的四個(gè)方面中就如圖16中所描繪的:
? 基礎(chǔ)架構(gòu)安全
? 數(shù)據(jù)隱私
? 數(shù)據(jù)管理
? 完整性及反應(yīng)式安全
對(duì)大數(shù)據(jù)系統(tǒng)的基礎(chǔ)架構(gòu)進(jìn)行安全防護(hù)設(shè)計(jì)將涉及對(duì)分布式計(jì)算和數(shù)據(jù)存儲(chǔ)的安全防護(hù)。對(duì)數(shù)據(jù)本身的保護(hù)是很重要的,因?yàn)槲覀円谛畔鞑ミ^(guò)程中取保對(duì)隱私的保護(hù)并且通過(guò)使用加密和顆粒化的訪問(wèn)控制來(lái)保護(hù)敏感數(shù)據(jù)。管理海量數(shù)據(jù)對(duì)于可擴(kuò)展及分布式解決方案的需要不僅僅是對(duì)數(shù)據(jù)存儲(chǔ)進(jìn)行保護(hù)也需要對(duì)其進(jìn)行有效的審計(jì)及數(shù)據(jù)來(lái)源調(diào)查。最終,未了確保基礎(chǔ)架構(gòu)的安全,必須對(duì)來(lái)自多種終端的數(shù)據(jù)流進(jìn)行完整性檢查從而可以將其用于對(duì)安全事件進(jìn)行實(shí)時(shí)分析。
我們也將對(duì)之前介紹過(guò)的多種數(shù)據(jù)形式所帶來(lái)的安全問(wèn)題進(jìn)行闡述。
流式數(shù)據(jù) - 根據(jù)數(shù)據(jù)的公共與否,對(duì)于流式數(shù)據(jù)有兩個(gè)互補(bǔ)的安全問(wèn)題。對(duì)于公共數(shù)據(jù),私密性不是問(wèn)題但是對(duì)于個(gè)體使用者(例如,政府)需要制定過(guò)濾標(biāo)準(zhǔn)。對(duì)于私有數(shù)據(jù),就需要關(guān)注私密性與此同時(shí)為了達(dá)成特定的目的也可以披露一些經(jīng)過(guò)修改的數(shù)據(jù),例如預(yù)測(cè)分析。
在《Private Searching On Streaming Data》[25]中,Ostrovsky和Skeith考慮了對(duì)流式數(shù)據(jù)的私有搜索問(wèn)題,他們?cè)诙喾N加密假設(shè)條件下有效地對(duì)滿足一個(gè)保密條件(例如隱藏關(guān)鍵字具有或者缺少一個(gè)密碼組合)進(jìn)行搜索。在他們的方案中,客戶端能夠把安全條件雜錯(cuò)轉(zhuǎn)換后發(fā)送給過(guò)濾器節(jié)點(diǎn)。過(guò)濾器節(jié)點(diǎn)可以使用雜錯(cuò)條件把收到的數(shù)據(jù)加密形成加密的過(guò)濾消息,它只能由客戶端解密。這使得在真實(shí)數(shù)據(jù)在過(guò)濾的過(guò)程中有效地隱藏了相關(guān)的條件。
流式時(shí)序數(shù)據(jù)的連續(xù)性質(zhì)對(duì)隱藏這類(lèi)數(shù)據(jù)中的敏感信息提出了特別的技術(shù)挑戰(zhàn)。實(shí)際上,數(shù)據(jù)點(diǎn)的簡(jiǎn)單隨機(jī)擾動(dòng)不能提供嚴(yán)格的隱私保護(hù)。在《時(shí)間序列的可壓縮性和隱私》中,Papadimitriou等人研究了時(shí)間序列的可壓縮性和部分信息隱藏之間的取舍,而且通過(guò)對(duì)單個(gè)值進(jìn)行擾動(dòng)而帶來(lái)的不確定性該如何進(jìn)行卻舍也做了研究。
圖數(shù)據(jù) - 在《Private analysis of graph structure》[27]中,Karwa等人提出的高效算在提供了嚴(yán)格的隱私保護(hù)下的同時(shí)也能夠從圖數(shù)據(jù)中發(fā)布有用的統(tǒng)計(jì)信息。他們的算法用于處理反映個(gè)體之間關(guān)系的數(shù)據(jù)集,例如社交聯(lián)系或者電子郵件交流。該算法有效地隱蔽了任何特定關(guān)系的存在性或者缺失。具體而言, 該算法對(duì)子圖計(jì)數(shù)查詢返回恰當(dāng)?shù)拇鸢浮?duì)于給定的查詢圖(例如一個(gè)三角形或者星形),其目標(biāo)是返回輸入圖中查詢圖的同構(gòu)副本的數(shù)量。
科學(xué) - 通常科學(xué)數(shù)據(jù)不需要保密。然而,器的數(shù)據(jù)必須要確保數(shù)據(jù)的完整性,尤其是來(lái)自遠(yuǎn)端傳感的數(shù)據(jù)。文獻(xiàn)中提及的輕量級(jí)、短簽名可以用于這類(lèi)任務(wù)。這里有很多文獻(xiàn)關(guān)于數(shù)字簽名,例如著眼于短簽名的生成文檔[28]、[29]和[30]。
然而,在很多科學(xué)應(yīng)用場(chǎng)景中傳感器是部署在開(kāi)放環(huán)境中,因此很容易受到物理攻擊、可能會(huì)影響傳感器的加密密鑰。在[31]中,作者提出一個(gè)框架用來(lái)在大型傳感器網(wǎng)絡(luò)中進(jìn)行安全地信息聚合,它消除了攻擊者可以利用的關(guān)鍵弱點(diǎn)。在它們的框架中,傳感器網(wǎng)絡(luò)中的特定節(jié)點(diǎn) - 稱(chēng)為聚合器 - 幫助對(duì)一個(gè)查詢所請(qǐng)求的信息進(jìn)行聚合。通過(guò)構(gòu)建高效的隨機(jī)抽樣機(jī)制和交互式證明系統(tǒng),即使聚合器和一小部分的傳感器節(jié)點(diǎn)損壞時(shí)用戶也能夠驗(yàn)證聚合器給出的答案最大程度貼近真值。
Web - 可以部署一些標(biāo)準(zhǔn)的加密協(xié)議來(lái)保護(hù)web通信,其中包括TLS、Kerberos、OAuth、PKI、SeureBGP、NDSSEC(Secure NDS)、IEEE802系列協(xié)議、IPSec及移動(dòng)通信中IPv6重路由安全。
但前,為了安全智能和預(yù)測(cè),大數(shù)據(jù)分析也能夠?qū)eb服務(wù)器所產(chǎn)生的日志進(jìn)行分析。在NIST特刊 800-92[32]中,作者推薦了機(jī)構(gòu)中關(guān)于日志數(shù)據(jù)的最佳實(shí)踐。由于網(wǎng)絡(luò)服務(wù)器、工作站和其他計(jì)算設(shè)備的廣泛部署,以及對(duì)網(wǎng)絡(luò)和系統(tǒng)的威脅不斷增加,計(jì)算機(jī)安全日志的數(shù)量、數(shù)量和種類(lèi)都大大增加了。這也提升了對(duì)于計(jì)算機(jī)安全日志管理的需求,安全日志管理即對(duì)計(jì)算機(jī)安全日志數(shù)據(jù)進(jìn)行生成、傳輸、分析并處置的流程。一般的建議是組織內(nèi)需要制定日志管理的策略和流程、在整個(gè)組織內(nèi)合理定義日志管理的優(yōu)先級(jí)、構(gòu)建并維護(hù)一個(gè)日志管理的基礎(chǔ)架構(gòu)、為所有員工的日志管理職責(zé)提供必要的支持、并且制定日志管理的標(biāo)準(zhǔn)操作流程。
零售及金融數(shù)據(jù) - 由于個(gè)人的零售和金融數(shù)據(jù)具有很強(qiáng)的隱私特征,所以在對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和傳輸時(shí)需要始終尊崇行業(yè)的最佳實(shí)踐。現(xiàn)在的一些實(shí)踐是始終保持對(duì)數(shù)據(jù)的加密、在傳輸過(guò)程中及保存在基礎(chǔ)架構(gòu)中時(shí)需要確保對(duì)數(shù)據(jù)的訪問(wèn)具備正確的授權(quán)與認(rèn)證。諸如PCI-DSS這樣的金融行業(yè)合規(guī)性標(biāo)準(zhǔn)也闡述了安全最佳實(shí)踐及法律要求。
這類(lèi)數(shù)據(jù)的大量生成催生出了很多分析技術(shù),進(jìn)而也生成了很多對(duì)于第三方機(jī)構(gòu)而言極富價(jià)值的信息,他們希望以此來(lái)為產(chǎn)品定位正確的人群。在實(shí)踐中,這些數(shù)據(jù)需要經(jīng)過(guò)匿名化和聚合過(guò)程來(lái)完全去除特別的身份信息后才能共享。這個(gè)過(guò)程往往是即席查詢,在與公眾開(kāi)放數(shù)據(jù)[34]進(jìn)行關(guān)聯(lián)時(shí)基于經(jīng)驗(yàn)性的證據(jù)[33]就可以實(shí)現(xiàn)很多“去匿名化”的實(shí)例。(譯者注:去匿名化是一種數(shù)據(jù)挖掘策略,通過(guò)把匿名數(shù)據(jù)于其他數(shù)據(jù)來(lái)源做相互對(duì)照來(lái)重新識(shí)別出匿名數(shù)據(jù)來(lái)源。)分析結(jié)果共享的終極目標(biāo)是沒(méi)有私人信息能夠被真實(shí)地看到。然而,第三方及研究機(jī)構(gòu)通常希望做自己的研究于分析,為此提取有用且嚴(yán)格清洗過(guò)的數(shù)據(jù)仍然是一個(gè)挑戰(zhàn)。
業(yè)界已經(jīng)提出了一些用于解決隱私保護(hù)數(shù)據(jù)披露的正式模型[35],其中最強(qiáng)的模型之一是差分隱私框架[36]。在“GUPT:privacy preserving data analysis made easy”中,作者介紹了稱(chēng)為GUPT的系統(tǒng)的設(shè)計(jì)及評(píng)估,該系統(tǒng)基于差分隱私確保用于應(yīng)用程序的數(shù)據(jù)不會(huì)透露隱私。GUPT使用一個(gè)數(shù)據(jù)敏感度模型在整個(gè)過(guò)程中降低數(shù)據(jù)的隱私。它可以為不同的用戶應(yīng)用程序賦予不同的隱私等級(jí),從而保證整體穩(wěn)定的隱私等級(jí)并且實(shí)現(xiàn)應(yīng)用程序的最大功效。
總結(jié)
我們首先給出了大數(shù)據(jù)領(lǐng)域進(jìn)行分類(lèi)的六個(gè)最重要的維度。這六個(gè)維度是數(shù)據(jù)域、計(jì)算基礎(chǔ)架構(gòu)、存儲(chǔ)架構(gòu)、分析、可視化、安全及隱私。大數(shù)據(jù)的基礎(chǔ)架構(gòu)和方法論還在保持著快速的發(fā)展勢(shì)頭,但是在很多場(chǎng)景中它們所依賴(lài)的底層技術(shù)已經(jīng)在很多年前就已經(jīng)發(fā)明了。人類(lèi)活動(dòng)的數(shù)字化和機(jī)器間通信的快速增長(zhǎng)于大規(guī)模廉價(jià)硬件的結(jié)合,使得以前有關(guān)并行及分布式計(jì)算的學(xué)術(shù)思想得以實(shí)現(xiàn),并且通過(guò)必要的優(yōu)化使之在現(xiàn)實(shí)世界中的應(yīng)用更加有益。
參考文檔
[1] IBM Study, “StorageNewsletter ? Every Day We Create 2.5 Quintillion Bytes of Data,” 21-Oct-2011. http://www.storagenewsletter.com/rubriques/market-reportsresearch/ibm-cmo-study/.
[2] J. Dean and S. Ghemawat, “MapReduce: simplified data processing on large clusters,” in Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6, Berkeley, CA, USA, 2004, pp. 10–10.
[3] L. Valiant, “A bridging model for parallel computation,” CACM, vol. 33, no. 8, pp. 103–111, Aug. 1990.
[4] “Welcome to ApacheTM Hadoop?!” http://hadoop.apache.org/.
[5] S. Ghemawat, H. Gobioff, and S.-T. Leung, “The Google file system,” in Proceedings of the nineteenth ACM symposium on Operating systems principles, New York, NY, USA, 2003, pp. 29–43.
[6] J. Lin and C. Dyer, Data-Intensive Text Processing with MapReduce. Morgan & Claypool, 2010.
[7] “Hadoop Tutorial - YDN.” http://developer.yahoo.com/hadoop/tutorial/module4.html#dataflow.
[8] “Breaking Down ‘Big Data’ – Database Models – SoftLayer Blog.” http://blog.softlayer.com/2012/breaking-down-big-data-database-models/.
[9] “CAP theorem,” Wikipedia, the free encyclopedia. 16-Aug-2013.
[10] “CAP Twelve Years Later: How the ‘Rules’ Have Changed.” http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed.
[11] “Google Research Publication: BigTable.” http://research.google.com/archive/bigtable.html.
[12] “Amazon’s Dynamo - All Things Distributed.” http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html.
[13] “Graph database,” Wikipedia, the free encyclopedia. 21-Aug-2013.
[14] “New SQL: An Alternative to NoSQL and Old SQL for New OLTP Apps.” http://cacm.acm.org/blogs/blog-cacm/109710-new-sql-an-alternative-to-nosql-and-old-sql-for-new-oltp-apps/fulltext.
[15] Max De Marzi, “Introduction to Graph Databases,” 29-Apr-2012. http://www.slideshare.net/maxdemarzi/introduction-to-graph-databases-12735789.
[16] “Thumbtack Technology - Ultra-High Performance NoSQL Benchmarking: Analyzing Durability and Performance Tradeoffs.” http://thumbtack.net/whitepapers/ultra-high-performance-nosql-benchmark.html.
[17] T. Rabl, S. Gómez-Villamor, M. Sadoghi, V. Muntés-Mulero, H.-A. Jacobsen, and S. Mankovskii, “Solving Big Data Challenges for Enterprise Application Performance Management,” Proc VLDB Endow, vol. 5, no. 12, pp. 1724–1735, Aug. 2012.
[18] “Big Data Benchmark.” https://amplab.cs.berkeley.edu/benchmark/.
[19] J. Han, M. Kamber, and J. Pei, Data mining: concepts and techniques. Burlington, MA: Elsevier, 2012.
[20] R. Tibshirani, “Glossary of Machine learning and statistical terms.” Stanford University, 2012.
[21] B. Bederson and et. al., “Ordered and quantum treemaps: Making effective use of 2D space to display hierarchies.” https://www.researchgate.net/publication/220184592_Ordered_and_quantum_treemaps_Making_effective_use_of_2D_space_to_display_hierarchies.
[22] “Force-directed graph drawing - Wikipedia, the free encyclopedia.” http://en.wikipedia.org/wiki/Force-directed_graph_drawing.
[23] B. Shneiderman, “Extreme Visualization: Squeezing a Billion Records into a Million Pixels.” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.145.2521.
[24] Z. Liu and et. al., “Stanford Vis Group | imMens: Real-time Visual Querying of Big Data.” http://vis.stanford.edu/papers/immens
[25] R. Ostrovsky and et. al., “Private Searching On Streaming Data.” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.157.1127.
[26] S. Papadimitriou and et. al., “Time series compressibility and privacy.” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.66.7150.
[27] V. Karwa and et. al., “Private analysis of graph structure.” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.227.8815.
[28] D. Boneh and et. al., “Short Group Signatures.” http://crypto.stanford.edu/~dabo/abstracts/groupsigs.html.
[29] P. Gaborit and et. al., “Lightweight code-based identification and signature.” http://citeseer.uark.edu:8080/citeseerx/viewdoc/summary;jsessionid=410E9FDC4CC2BF40183250734B93BE7D?doi=10.1.1.131.3620.
[30] D. Boneh, B. Lynn, and H. Shacham, “Short Signatures from the Weil Pairing,” in Advances in Cryptology – ASIACRYPT 2001, C. Boyd, Ed. Springer Berlin Heidelberg, 2001, pp. 514–532.
[31] B. Przydatek and et. al., “SIA: secure information aggregation in sensor networks.” http://dl.acm.org/citation.cfm?id=958521.
[32] K. Kent and et. al., “Guide to Computer Security Log Management. SP 800-92.” http://dl.acm.org/citation.cfm?id=2206303.
[33] L. Sweeney, “k-anonymity: a model for protecting privacy.” http://dataprivacylab.org/dataprivacy/projects/kanonymity/kanonymity.html.
[34] A. Narayanan and et. al., “Robust De-anonymization of Large Sparse Datasets.” http://dl.acm.org/citation.cfm?id=1398064.
[35] B. Fung and et. al., “Privacy-Preserving Data Publishing: A Survey on Recent Developments.” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.150.6812.
[36] C. Dwork, “Differential Privacy.” http://research.microsoft.com/apps/pubs/default.aspx?id=64346.
[37] P. Mohan and et. al., “GUPT: privacy preserving data analysis made easy.” http://dl.acm.org/citation.cfm?id=2213876.
[38] P. Domingos, “A few useful things to know about machine learning.” http://dl.acm.org/citation.cfm?id=2347755.
[39] “Spark | AMPLab – UC Berkeley,” AMPLab - UC Berkeley. https://amplab.cs.berkeley.edu/publication/.
[40] M. Zaharia, M. Chowdhury, M. J. Franklin, S. Shenker, and I. Stoica, “Spark: Cluster Computing with Working Sets,” in Proceedings of the 2Nd USENIX Conference on Hot Topics in Cloud Computing, Berkeley, CA, USA, 2010, pp. 10–10.