剖析大數(shù)據(jù)平臺的數(shù)據(jù)分析
無論是采集數(shù)據(jù),還是存儲數(shù)據(jù),都不是大數(shù)據(jù)平臺的最終目標(biāo)。失去數(shù)據(jù)處理環(huán)節(jié),即使珍貴如金礦一般的數(shù)據(jù)也不過是一堆廢鐵而已。數(shù)據(jù)處理是大數(shù)據(jù)產(chǎn)業(yè)的核心路徑,然后再加上***一公里的數(shù)據(jù)可視化,整個鏈條就算徹底走通了。
一、數(shù)據(jù)處理的分類
如下圖所示,我們可以從業(yè)務(wù)、技術(shù)與編程模型三個不同的視角對數(shù)據(jù)處理進行歸類:
業(yè)務(wù)角度的分類與具體的業(yè)務(wù)場景有關(guān),但最終會制約技術(shù)的選型,尤其是數(shù)據(jù)存儲的選型。例如,針對查詢檢索中的全文本搜索,ElasticSearch會是***的選擇,而針對統(tǒng)計分析,則因為統(tǒng)計分析涉及到的運算,可能都是針對一列數(shù)據(jù),例如針對銷量進行求和運算,就是針對銷量這一整列的數(shù)據(jù),此時,選擇列式存儲結(jié)構(gòu)可能更加適宜。
在技術(shù)角度的分類中,嚴格地講,SQL方式并不能分為單獨的一類,它其實可以看做是對API的封裝,通過SQL這種DSL來包裝具體的處理技術(shù),從而降低數(shù)據(jù)處理腳本的遷移成本。畢竟,多數(shù)企業(yè)內(nèi)部的數(shù)據(jù)處理系統(tǒng),在進入大數(shù)據(jù)時代之前,大多以SQL形式來訪問存儲的數(shù)據(jù)。大體上,SQL是針對MapReduce的包裝,例如Hive、Impala或者Spark SQL。
Streaming流處理可以實時地接收由上游源源不斷傳來的數(shù)據(jù),然后以某個細小的時間窗口為單位對這個過程中的數(shù)據(jù)進行處理。消費的上游數(shù)據(jù)可以是通過網(wǎng)絡(luò)傳遞過來的字節(jié)流、從HDFS讀取的數(shù)據(jù)流,又或者是消息隊列傳來的消息流。通常,它對應(yīng)的就是編程模型中的實時編程模型。
機器學(xué)習(xí)與深度學(xué)習(xí)都屬于深度分析的范疇。隨著Google的AlphaGo以及TensorFlow框架的開源,深度學(xué)習(xí)變成了一門顯學(xué)。我了解不多,這里就不露怯了。
機器學(xué)習(xí)與常見的數(shù)據(jù)分析稍有不同,通常需要多個階段經(jīng)歷多次迭代才能得到滿意的結(jié)果。下圖是深度分析的架構(gòu)圖:
針對存儲的數(shù)據(jù),需要采集數(shù)據(jù)樣本并進行特征提取,然后對樣本數(shù)據(jù)進行訓(xùn)練,并得到數(shù)據(jù)模型。倘若該模型經(jīng)過測試是滿足需求的,則可以運用到數(shù)據(jù)分析場景中,否則需要調(diào)整算法與模型,再進行下一次的迭代。
編程模型中的離線編程模型以Hadoop的MapReduce為代表,內(nèi)存編程模型則以Spark為代表,實時編程模型則主要指的是流處理,當(dāng)然也可能采用Lambda架構(gòu),在Batch Layer(即離線編程模型)與Speed Layer(實時編程模型)之間建立Serving Layer,利用空閑時間與空閑資源,又或者在寫入數(shù)據(jù)的同時,對離線編程模型要處理的大數(shù)據(jù)進行預(yù)先計算(聚合),從而形成一種融合的視圖存儲在數(shù)據(jù)庫中(如HBase),以便于快速查詢或計算。
二、場景驅(qū)動數(shù)據(jù)處理
不同的業(yè)務(wù)場景(業(yè)務(wù)場景可能出現(xiàn)混合)需要的數(shù)據(jù)處理技術(shù)不盡相同,因而在一個大數(shù)據(jù)系統(tǒng)下可能需要多種技術(shù)(編程模型)的混合。
場景1:某廠商的輿情分析
我們在為某廠商實施輿情分析時,根據(jù)客戶需求,與數(shù)據(jù)處理有關(guān)的部分就包括:語義分析、全文本搜索與統(tǒng)計分析。通過網(wǎng)絡(luò)爬蟲抓取過來的數(shù)據(jù)會寫入到Kafka,而消費端則通過Spark Streaming對數(shù)據(jù)進行去重去噪,之后交給SAS的ECC服務(wù)器進行文本的語義分析。分析后的數(shù)據(jù)會同時寫入到HDFS(Parquet格式的文本)和ElasticSearch。同時,為了避免因為去重去噪算法的誤差而導(dǎo)致部分有用數(shù)據(jù)被“誤殺”,在MongoDB中還保存了一份全量數(shù)據(jù)。如下圖所示:
場景2:Airbnb的大數(shù)據(jù)平臺
Airbnb的大數(shù)據(jù)平臺也根據(jù)業(yè)務(wù)場景提供了多種處理方式,整個平臺的架構(gòu)如下圖所示:
Panoramix(現(xiàn)更名為Caravel)為Airbnb提供數(shù)據(jù)探查功能,并對結(jié)果進行可視化,Airpal則是基于Web的查詢執(zhí)行工具,它們的底層都是通過Presto對HDFS執(zhí)行數(shù)據(jù)查詢。Spark集群則為Airbnb的工程師與數(shù)據(jù)科學(xué)家提供機器學(xué)習(xí)與流處理的平臺。
三、大數(shù)據(jù)平臺的整體結(jié)構(gòu)
行文至此,整個大數(shù)據(jù)平臺系列的講解就快結(jié)束了。***,我結(jié)合數(shù)據(jù)源、數(shù)據(jù)采集、數(shù)據(jù)存儲與數(shù)據(jù)處理這四個環(huán)節(jié)給出了一個整體結(jié)構(gòu)圖,如下圖所示:
這幅圖以查詢檢索場景、OLAP場景、統(tǒng)計分析場景與深度分析場景作為核心的四個場景,并以不同顏色標(biāo)識不同的編程模型。從左到右,經(jīng)歷數(shù)據(jù)源、數(shù)據(jù)采集、數(shù)據(jù)存儲和數(shù)據(jù)處理四個相對完整的階段,可供大數(shù)據(jù)平臺的整體參考。
【本文為51CTO專欄作者“張逸”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】