以上兩者是典型的緩存系統(tǒng),在中等數(shù)據(jù)規(guī)模下表現(xiàn)較好,對(duì)于更大數(shù)據(jù)規(guī)模就會(huì)比較吃力,這時(shí)就需要使用HBase或者Cassandra等支持實(shí)時(shí)場(chǎng)景的大容量存儲(chǔ)系統(tǒng)。同時(shí),由于HBase和Cassandra支持超大規(guī)模數(shù)據(jù)的持久化存儲(chǔ),它們也可以用在離線存儲(chǔ)領(lǐng)域。
大數(shù)據(jù)的計(jì)算層平臺(tái)按照時(shí)效性劃分,也分為離線計(jì)算和在線計(jì)算(或叫實(shí)時(shí)計(jì)算)兩種類型,而各個(gè)計(jì)算間的數(shù)據(jù)傳遞工作一部分由存儲(chǔ)系統(tǒng)完成,另一部分由數(shù)據(jù)管道系統(tǒng)(如消息隊(duì)列系統(tǒng)等)完成。離線計(jì)算平臺(tái)通常用來(lái)處理數(shù)據(jù)量巨大,耗時(shí)長(zhǎng)的計(jì)算任務(wù),適用于對(duì)大量數(shù)據(jù)的統(tǒng)計(jì)分析和深度挖掘。
典型的離線計(jì)算平臺(tái)有:
1、作為通用并行計(jì)算模型的hadoop MapReduce、Spark;
2、高性能并行計(jì)算的MPI;
3、數(shù)據(jù)倉(cāng)庫(kù)式計(jì)算的Hive、Impala、Shark;
4、圖模型計(jì)算的Pregel、Bagel、GraphX等。
在線計(jì)算/實(shí)時(shí)計(jì)算平臺(tái)通常用來(lái)處理流式數(shù)據(jù),適用于計(jì)算量一般較輕,且時(shí)效性需求高或永不間斷的計(jì)算場(chǎng)景。
常見的實(shí)時(shí)計(jì)算平臺(tái)有:Storm、S4、Spark Streaming等。消息隊(duì)列平臺(tái)一般用于上下游計(jì)算的數(shù)據(jù)銜接,特別是時(shí)效性要求較高的計(jì)算流程,每個(gè)計(jì)算步驟的輸出結(jié)果寫入消息隊(duì)列平臺(tái)后,下游計(jì)算可立即感知并啟動(dòng)計(jì)算,縮短反應(yīng)時(shí)間。業(yè)界用得較多的平臺(tái)包括輕量級(jí)的Kestrel,以及重量級(jí)、容錯(cuò)性好的Kafka。
業(yè)務(wù)邏輯層承載著各個(gè)業(yè)務(wù)具體的計(jì)算邏輯,一般來(lái)說(shuō)有日志處理、離線分析、深度挖掘、分類聚類、預(yù)測(cè)建模等離線業(yè)務(wù),也有實(shí)時(shí)挖掘、實(shí)時(shí)監(jiān)控等實(shí)時(shí)處理業(yè)務(wù)。
最外的服務(wù)層就是直接對(duì)外提供服務(wù)的各個(gè)業(yè)務(wù)的線上服務(wù)器集群。
位于后臺(tái)的各個(gè)大數(shù)據(jù)平臺(tái),為了容災(zāi)、資源復(fù)用、例行維護(hù)的考慮,其服務(wù)訪問(wèn)入口可能會(huì)發(fā)生變化,因此往往需要一個(gè)資源定位系統(tǒng)來(lái)獲取各個(gè)平臺(tái)當(dāng)前最新的服務(wù)訪問(wèn)入口。通過(guò)資源定位系統(tǒng)提供的自動(dòng)定位服務(wù)能力,各個(gè)平臺(tái)服務(wù)接口的遷移就可以對(duì)使用者透明。
在大數(shù)據(jù)各平臺(tái)的整體層次結(jié)構(gòu)中,最不可或缺的配套系統(tǒng)就是自動(dòng)監(jiān)控運(yùn)維系統(tǒng)。海量數(shù)據(jù)的處理,對(duì)存儲(chǔ)和計(jì)算的壓力都是非常巨大的,所以各個(gè)平臺(tái)出現(xiàn)硬件異常和軟件異常的概率急速上升,因此需要一套自動(dòng)監(jiān)控運(yùn)維系統(tǒng)來(lái)不斷監(jiān)控各個(gè)服務(wù)器的硬件狀況,操作系統(tǒng)層面的CPU、內(nèi)存、IO、網(wǎng)絡(luò)等各個(gè)指標(biāo),大數(shù)據(jù)平臺(tái)層面的運(yùn)作情況,業(yè)務(wù)邏輯層面的服務(wù)狀態(tài)等。
另外一方面,雖然各個(gè)大數(shù)據(jù)平臺(tái)都具有一定的容錯(cuò)能力,但是并不是所有類型的錯(cuò)誤都能夠容忍,并且當(dāng)出現(xiàn)了可容忍的小錯(cuò)誤時(shí),往往預(yù)示著更致命的錯(cuò)誤隱藏在背后,若不及時(shí)發(fā)現(xiàn),就很可能導(dǎo)致非常嚴(yán)重的后果。因此需要監(jiān)控運(yùn)維系統(tǒng)將這些小問(wèn)題提前預(yù)警出來(lái),以便將事故扼殺在萌芽中。自動(dòng)監(jiān)控運(yùn)維系統(tǒng)一般具有系統(tǒng)狀態(tài)檢測(cè)、性能分析、監(jiān)控報(bào)警、自動(dòng)發(fā)布與回滾等能力。尤其是自動(dòng)發(fā)布與回滾能力,對(duì)于海量用戶的業(yè)務(wù)來(lái)說(shuō),是必不可少的,可以大大減輕運(yùn)維的工作量,消除容易出錯(cuò)的人工環(huán)節(jié),增加業(yè)務(wù)的穩(wěn)定性。
前面給出了各個(gè)大數(shù)據(jù)系統(tǒng)在后臺(tái)的層次結(jié)構(gòu),接下來(lái)介紹一下業(yè)務(wù)數(shù)據(jù)在各個(gè)平臺(tái)之間的流向關(guān)系。

如上圖所示,數(shù)據(jù)的來(lái)源一般有三種:第一種是線上的實(shí)時(shí)日志流;第二種是定期批量收集和更新的數(shù)據(jù);第三種是長(zhǎng)期不變的靜態(tài)數(shù)據(jù)。前兩種數(shù)據(jù)通常發(fā)布到訂閱發(fā)布系統(tǒng)當(dāng)中,以通知下游消費(fèi)者進(jìn)行消費(fèi)。靜態(tài)數(shù)據(jù)一般直接保存在離線存儲(chǔ)系統(tǒng)中,供需要時(shí)訪問(wèn)。
發(fā)布訂閱系統(tǒng)負(fù)責(zé)管理數(shù)據(jù)的發(fā)布和收集下游的訂閱需求,將數(shù)據(jù)分發(fā)給對(duì)應(yīng)的消費(fèi)者,一部分?jǐn)?shù)據(jù)會(huì)發(fā)送到在線計(jì)算平臺(tái),另一部分?jǐn)?shù)據(jù)會(huì)落入離線存儲(chǔ)平臺(tái)。發(fā)布訂閱系統(tǒng)可分為持久式和非持久式,可根據(jù)業(yè)務(wù)的特性選用。
對(duì)于在線處理部分,在線計(jì)算平臺(tái)所需的數(shù)據(jù)一部分來(lái)自從發(fā)布訂閱系統(tǒng)中獲取實(shí)時(shí)數(shù)據(jù),另一部分來(lái)自在線存儲(chǔ)系統(tǒng)。在線計(jì)算平臺(tái)常見的計(jì)算類型有在線服務(wù)、流式計(jì)算、實(shí)時(shí)回饋等,分別服務(wù)于數(shù)據(jù)抓取、實(shí)時(shí)統(tǒng)計(jì)、實(shí)時(shí)監(jiān)控、在線分析、實(shí)時(shí)推薦等應(yīng)用。在線存儲(chǔ)平臺(tái)中的數(shù)據(jù)一般分為臨時(shí)緩存數(shù)據(jù)和持久化數(shù)據(jù),這些數(shù)據(jù)通常來(lái)自在線計(jì)算平臺(tái)和離線計(jì)算平臺(tái)。在線存儲(chǔ)平臺(tái)承載的應(yīng)用有:KV緩存、數(shù)據(jù)庫(kù)緩存、流式數(shù)據(jù)、字典服務(wù)等。