最近調(diào)研了一些實(shí)時(shí)計(jì)算方面的技術(shù)蛤肌,同時(shí)也對(duì)相關(guān)概念做了一些了解及梳理业簿。
在一般情況下我們可以這樣理解瘤礁,離線和批量等價(jià)、實(shí)時(shí)和流式等價(jià)梅尤,但其實(shí)這種觀點(diǎn)并不完全正確柜思。
假設(shè)一種情況:當(dāng)我們擁有一個(gè)非常強(qiáng)大的硬件系統(tǒng),可以毫秒級(jí)的處理Gb級(jí)別的數(shù)據(jù)巷燥,那么批量計(jì)算也可以毫秒級(jí)得到統(tǒng)計(jì)結(jié)果(當(dāng)然這種情況非常極端赡盘,目前不可能),那我們還能說(shuō)它是離線計(jì)算嗎缰揪?
所以說(shuō)離線和實(shí)時(shí)應(yīng)該指的是:數(shù)據(jù)處理的延遲陨享;批量和流式指的是:數(shù)據(jù)處理的方式。兩者并沒(méi)有必然的關(guān)系。
什么是實(shí)時(shí)計(jì)算抛姑?這個(gè)概念與離線計(jì)算是相伴而生的赞厕,那么先說(shuō)下什么是離線計(jì)算。
離線計(jì)算
離線計(jì)算就是在計(jì)算開(kāi)始前已知所有輸入數(shù)據(jù)定硝,輸入的數(shù)據(jù)不會(huì)再發(fā)生變化皿桑,且在解決一個(gè)問(wèn)候就要立即得出結(jié)果的前提下進(jìn)行的計(jì)算。
離線計(jì)算框架主要有hadoop蔬啡、spark诲侮、MapReduce、HDFS星爪。其中MapReduce被各大公司作為數(shù)據(jù)處理的主要方案浆西。
MapReduce的思想也是從早期的函數(shù)式編程語(yǔ)言中借鑒而來(lái),推廣到了分布式系統(tǒng)中顽腾。
傳統(tǒng)的數(shù)據(jù)處理方式通常是將數(shù)據(jù)導(dǎo)入到專門的數(shù)據(jù)分析工具中近零,這樣會(huì)面臨兩個(gè)問(wèn)題:
1、如果源數(shù)據(jù)非常大時(shí)抄肖,往往數(shù)據(jù)的移動(dòng)就要花費(fèi)較長(zhǎng)時(shí)間久信。
2、傳統(tǒng)的數(shù)據(jù)處理工具往往是單機(jī)模型漓摩,面對(duì)海量數(shù)據(jù)時(shí)裙士,數(shù)據(jù)處理的時(shí)間也是一個(gè)很大的問(wèn)題。
MapReduce是離線批量計(jì)算的代表管毙,采用移動(dòng)計(jì)算優(yōu)于移動(dòng)數(shù)據(jù)的理念腿椎,計(jì)算任務(wù)通常直接在HDFS的dataNode上運(yùn)行,這樣避免了數(shù)據(jù)的移動(dòng)(當(dāng)然reduce階段還是需要節(jié)點(diǎn)間傳輸數(shù)據(jù))夭咬,并且采用并行計(jì)算的方式啃炸,大大減少了數(shù)據(jù)處理時(shí)間。
實(shí)時(shí)計(jì)算
隨著用戶數(shù)據(jù)量的增加卓舵,離線的計(jì)算會(huì)越來(lái)越慢南用,難以滿足用戶在某些場(chǎng)景下的實(shí)時(shí)性要求,因此很多解決方案中引入了實(shí)時(shí)計(jì)算掏湾。
很多時(shí)候裹虫,即使是海量數(shù)據(jù),我們也希望即時(shí)去查看一些數(shù)據(jù)指標(biāo)融击,實(shí)時(shí)流計(jì)算應(yīng)運(yùn)而生筑公。
實(shí)時(shí)流計(jì)算有兩個(gè)特點(diǎn),一個(gè)是實(shí)時(shí)尊浪,隨時(shí)可以看數(shù)據(jù)匣屡;另一個(gè)是流涩拙。
有了這樣的需求和產(chǎn)品定義,自然會(huì)有相關(guān)的技術(shù)實(shí)現(xiàn)耸采。目前工業(yè)級(jí)別的老牌實(shí)時(shí)流計(jì)算框架是 Storm、Spark Streaming工育,Samza虾宇、Flink 等等。
阿里云的實(shí)時(shí)計(jì)算(原阿里云流計(jì)算)是一套基于Apache Flink構(gòu)建的一站式如绸、高性能實(shí)時(shí)大數(shù)據(jù)處理平臺(tái)嘱朽。
主要應(yīng)用的場(chǎng)景為:
1、實(shí)時(shí)ETL
集成流計(jì)算現(xiàn)有的諸多數(shù)據(jù)通道和SQL靈活的加工能力怔接,對(duì)流式數(shù)據(jù)進(jìn)行實(shí)時(shí)清洗搪泳、歸并、結(jié)構(gòu)化處理扼脐。同時(shí)岸军,為離線數(shù)倉(cāng)進(jìn)行有效的補(bǔ)充和優(yōu)化,為數(shù)據(jù)實(shí)時(shí)傳輸?shù)奶峁┛捎?jì)算通道瓦侮。
2艰赞、實(shí)時(shí)報(bào)表
實(shí)時(shí)化采集、加工流式數(shù)據(jù)存儲(chǔ)肚吏。實(shí)時(shí)監(jiān)控和展現(xiàn)業(yè)務(wù)方妖、客戶各類指標(biāo),讓數(shù)據(jù)化運(yùn)營(yíng)實(shí)時(shí)化罚攀。
3党觅、監(jiān)控預(yù)警
對(duì)系統(tǒng)和用戶行為進(jìn)行實(shí)時(shí)檢測(cè)和分析。實(shí)時(shí)監(jiān)測(cè)和發(fā)現(xiàn)危險(xiǎn)行為斋泄。
4杯瞻、在線系統(tǒng)
實(shí)時(shí)計(jì)算各類數(shù)據(jù)指標(biāo),并利用實(shí)時(shí)結(jié)果及時(shí)調(diào)整在線系統(tǒng)相關(guān)策略是己。在各類內(nèi)容投放又兵、無(wú)線智能推送領(lǐng)域有大量的應(yīng)用。