一文詳解被阿里騰訊視作核心機密的大數(shù)據(jù)平臺架構(gòu)
如果我們能夠化整為零,在企業(yè)內(nèi)部從宏觀、整體的角度設(shè)計和實現(xiàn)一個統(tǒng)一的大數(shù)據(jù)平臺,引入單一集群、單一存儲,統(tǒng)一服務和統(tǒng)一安全的架構(gòu)思想,就能很好的幫助企業(yè)解決很多問題。
提到大數(shù)據(jù)分析平臺,不得不說Hadoop系統(tǒng),Hadoop到現(xiàn)在也超過10年的歷史了,很多東西發(fā)生了變化,版本也從0.x進化到目前的2.6版本。我把2012年后定義成后Hadoop平臺時代,這不是說不用Hadoop,而是像NoSQL (Not Only SQL)那樣,有其他的選型補充。
大數(shù)據(jù)分析平臺
Hadoop: 開源的數(shù)據(jù)分析平臺,解決了大數(shù)據(jù)(大到一臺計算機無法進行存儲,一臺計算機無法在要求的時間內(nèi)進行處理)的可靠存儲和處理。適合處理非結(jié)構(gòu)化數(shù)據(jù),包括HDFS,MapReduce基本組件。


HDFS:提供了一種跨服務器的彈性數(shù)據(jù)存儲系統(tǒng)。
MapReduce:技術(shù)提供了感知數(shù)據(jù)位置的標準化處理流程:讀取數(shù)據(jù),對數(shù)據(jù)進行映射(Map),使用某個鍵值對數(shù)據(jù)進行重排,然后對數(shù)據(jù)進行化簡(Reduce)得到最終的輸出。
Amazon Elastic Map Reduce(EMR):托管的解決方案,運行在由Amazon Elastic Compute Cloud(EC2)和Simple Strorage Service(S3)組成的網(wǎng)絡(luò)規(guī)模的基礎(chǔ)設(shè)施之上。如果你需要一次性的或不常見的大數(shù)據(jù)處理,EMR可能會為你節(jié)省開支。但EMR是高度優(yōu)化成與S3中的數(shù)據(jù)一起工作,會有較高的延時。Hadoop 還包含了一系列技術(shù)的擴展系統(tǒng),這些技術(shù)主要包括了Sqoop、Flume、Hive、Pig、Mahout、Datafu和HUE等。
這里就不一一列舉了,有很多,有感興趣的可以和我私信討論。
大數(shù)據(jù)平臺架構(gòu)
大數(shù)據(jù)計算通過將可執(zhí)行的代碼分發(fā)到大規(guī)模的服務器集群上進行分布式計算,以處理大規(guī)模的數(shù)據(jù),即所謂的移動計算比移動數(shù)據(jù)更劃算。但是這樣的計算方式必然不會很快,即使一個規(guī)模不太大的數(shù)據(jù)集上的一次簡單計算,MapReduce也可能需要幾分鐘,Spark快一點,也至少需要數(shù)秒的時間。
而網(wǎng)站處理用戶請求,需要毫秒級的響應,也就是說,要在1秒內(nèi)完成計算,大數(shù)據(jù)計算必然不能實現(xiàn)這樣的響應要求。但是網(wǎng)站應用又需要使用大數(shù)據(jù)實現(xiàn)統(tǒng)計分析、數(shù)據(jù)挖掘、關(guān)聯(lián)推薦、用戶畫像等一系列功能。
所以網(wǎng)站需要構(gòu)建一個大數(shù)據(jù)平臺,去整合網(wǎng)站應用和大數(shù)據(jù)系統(tǒng)之間的差異,將應用程序產(chǎn)生的數(shù)據(jù)導入到大數(shù)據(jù)系統(tǒng),經(jīng)過處理計算后再導出給應用程序使用。一個典型的網(wǎng)站大數(shù)據(jù)平臺架構(gòu)如下圖:

大數(shù)據(jù)平臺可分為三個部分:
1.數(shù)據(jù)采集
將應用程序產(chǎn)生的數(shù)據(jù)和日志等同步到大數(shù)據(jù)系統(tǒng)中,由于數(shù)據(jù)源不同,這里的數(shù)據(jù)同步系統(tǒng)實際上是多個相關(guān)系統(tǒng)的組合。數(shù)據(jù)庫同步通常用Sqoop,日志同步可以選擇Flume,打點采集的數(shù)據(jù)經(jīng)過格式化轉(zhuǎn)換后通過Kafka傳遞。
不同的數(shù)據(jù)源產(chǎn)生的數(shù)據(jù)質(zhì)量可能差別很大,數(shù)據(jù)庫中的數(shù)據(jù)也許可以直接導入大數(shù)據(jù)系統(tǒng)就可以,而日志和爬蟲產(chǎn)生的數(shù)據(jù)就需要進行大量的清洗、轉(zhuǎn)化處理才能有效使用。所以數(shù)據(jù)同步系統(tǒng)實際上承擔著傳統(tǒng)數(shù)據(jù)倉庫ETL的工作。
2.數(shù)據(jù)處理
這里是大數(shù)據(jù)存儲與計算的核心,數(shù)據(jù)同步系統(tǒng)導入的數(shù)據(jù)存儲在HDFS。MapReduce、Hive、Spark等計算任務讀取HDFS上的數(shù)據(jù)進行計算,再將計算結(jié)果寫入HDFS。
MapReduce、Hive、Spark等進行的計算處理被稱作是離線計算,HDFS存儲的數(shù)據(jù)被稱為離線數(shù)據(jù)。相對的,用戶實時請求需要計算的數(shù)據(jù)稱為在線數(shù)據(jù),這些數(shù)據(jù)由用戶實時產(chǎn)生,進行實時在線計算,并把結(jié)果數(shù)據(jù)實時返回用戶,這個計算過程中涉及的數(shù)據(jù)主要是用戶自己一次請求產(chǎn)生和需要的數(shù)據(jù),數(shù)據(jù)規(guī)模非常小,內(nèi)存中一個線程上下文就可以處理。
在線數(shù)據(jù)完成和用戶的交互后,被數(shù)據(jù)同步系統(tǒng)導入到大數(shù)據(jù)系統(tǒng),這些數(shù)據(jù)就是離線數(shù)據(jù),其上進行的計算通常針對(某一方面的)全體數(shù)據(jù),比如針對所有訂單進行商品的關(guān)聯(lián)性挖掘,這時候數(shù)據(jù)規(guī)模非常大,需要較長的運行時間,這類計算就是離線計算。
除了離線計算,還有一些場景,數(shù)據(jù)規(guī)模也比較大,要求的處理時間也比較短。比如淘寶要統(tǒng)計每秒產(chǎn)生的訂單數(shù),以便進行監(jiān)控和宣傳。這種場景被稱為大數(shù)據(jù)流式計算,通常用Storm、Spark Steaming等流式大數(shù)據(jù)引擎來完成,可以在秒級甚至毫秒級時間內(nèi)完成計算。
3.數(shù)據(jù)輸出與展示
大數(shù)據(jù)計算產(chǎn)生的數(shù)據(jù)還是寫入到HDFS中,應用程序不可能到HDFS中讀取數(shù)據(jù),所以必須要將HDFS中的數(shù)據(jù)導出到數(shù)據(jù)庫中。數(shù)據(jù)同步導出相對比較容易,計算產(chǎn)生的數(shù)據(jù)都比較規(guī)范,稍作處理就可以用Sqoop之類的系統(tǒng)導出到數(shù)據(jù)庫。
這時,應用程序就可以直接訪問數(shù)據(jù)庫中的數(shù)據(jù),實時展示給用戶,比如展示給用戶的關(guān)聯(lián)推薦的商品。淘寶賣家的量子魔方之類的產(chǎn)品,其數(shù)據(jù)都來自大數(shù)據(jù)計算產(chǎn)生。
除了給用戶訪問提供數(shù)據(jù),大數(shù)據(jù)還需要給運營和決策層提供各種統(tǒng)計報告,這些數(shù)據(jù)也寫入數(shù)據(jù)庫,被相應的后臺系統(tǒng)訪問。很多運營和管理人員,每天一上班,就是登錄后臺數(shù)據(jù)系統(tǒng),查看前一天的數(shù)據(jù)報表,看業(yè)務是否正常。如果數(shù)據(jù)正常甚至上升,就可以稍微輕松一點,如果數(shù)據(jù)下跌,焦躁而忙碌的一天也馬上就開始了。
將上面三個部分整合起來的是任務調(diào)度管理系統(tǒng),不同的數(shù)據(jù)何時開始同步,各種MapReduce、Spark任務如何合理調(diào)度才能使資源利用最合理、等待的時間又不至于太久,臨時的重要任務能夠盡快執(zhí)行,這些都需要任務調(diào)度管理系統(tǒng)完成。有時候?qū)Ψ治鰩熀凸こ處熼_放的作業(yè)提交、進度跟蹤,數(shù)據(jù)查看等功能也集成在這個系統(tǒng)中。
對于每個公司的大數(shù)據(jù)團隊,最核心開發(fā)維護的也就是這個系統(tǒng),大數(shù)據(jù)平臺上的其他系統(tǒng)一般都有成熟的開源軟件可以選擇,作業(yè)調(diào)度管理會涉及很多個性化的需求,通常需要團隊自己開發(fā)。
看到這里,你們對整個大數(shù)據(jù)平臺架構(gòu)了解了嗎,如果還沒有,我特地選了幾個知名互聯(lián)網(wǎng)公司的例子給你們,圖片有點糊,諒解。

滴滴

知乎