1闲擦、流式計算
流式計算時相對于批量計算提出的概念焕济,一般認為纷妆,批量計算的處理數(shù)據(jù)集是有界的,也就是說吼蚁,批量計算開始時,計算數(shù)據(jù)的范圍是已經(jīng)確定的问欠,計算時總是成批的計算某一周期內(nèi)的數(shù)據(jù)肝匆,或者是截止到某一時間點的數(shù)據(jù)。批計算時顺献,也能夠批量使用源數(shù)據(jù)旗国,并批量地得出周期性的計算結(jié)果,因而所需要的的計算資源和計算時間是比較長的注整。
流計算則更強調(diào)流式輸入和更低的計算延時能曾,以達到近似實時地得到計算結(jié)果的目的。數(shù)據(jù)流式的產(chǎn)生和輸入計算系統(tǒng)肿轨,以為著數(shù)據(jù)不需要跟批處理系統(tǒng)一樣必須要等待一個周期才能被同步到計算系統(tǒng)寿冕,而是每產(chǎn)生一條數(shù)據(jù)(或者是每一條的數(shù)據(jù)變化)都會被直接同步到計算系統(tǒng),參與到實時的計算中來椒袍。流計算系統(tǒng)面對的輸入數(shù)據(jù)驼唱,是連續(xù)不斷的數(shù)據(jù)流。如果將數(shù)據(jù)流進行周期性的截斷驹暑,可以理解為批處理的模型玫恳;但是大部分情況下,流計算會將數(shù)據(jù)流按照極短的周期進行小批量處理(SPARK平臺的計算方案)优俘,或者是針對每一條到來的數(shù)據(jù)都進行計算(STORM和FLINK的計算方案)京办。
2、流計算與批處理的區(qū)別
與傳統(tǒng)的數(shù)據(jù)處理一樣帆焕,流計算的整體流程也可以分為數(shù)據(jù)集成同步惭婿、數(shù)據(jù)處理計算、數(shù)據(jù)結(jié)果輸出幾個步驟。
數(shù)據(jù)集成同步审孽,是將業(yè)務(wù)源系統(tǒng)的數(shù)據(jù)同步到計算平臺的過程县袱。對于最原始的數(shù)據(jù)倉庫(即數(shù)倉與業(yè)務(wù)數(shù)據(jù)庫在同一數(shù)據(jù)庫的方案),數(shù)據(jù)是不需要進行同步就可以利用數(shù)據(jù)庫資源進行計算的佑力,但是這樣的弊端是數(shù)倉邏輯計算時會占用業(yè)務(wù)系統(tǒng)的計算資源式散,而且數(shù)倉只能建設(shè)成為一個個孤立的數(shù)據(jù)集合,無法達到數(shù)據(jù)打通的目的打颤。當(dāng)出現(xiàn)中央式的批處理數(shù)倉時暴拄,數(shù)據(jù)集成靠的是五花八門的集成工具,比如說datastage编饺、powercenter乖篷、kettle,這一類是通過往業(yè)務(wù)數(shù)據(jù)庫發(fā)起一個select請求進行數(shù)據(jù)同步的透且;另外一種同步的方案則是采用數(shù)據(jù)庫自帶的主從同步功能撕蔼,比如說MySQL的binlog同步,Oracle的dataguard秽誊、goldengate同步等鲸沮,不過這種方案總是有這樣那樣的缺陷,比如說你需要準(zhǔn)備一個結(jié)構(gòu)和源庫一樣的數(shù)據(jù)庫作為數(shù)倉锅论,有可能就達不到把多種異構(gòu)數(shù)據(jù)源集成到一個平臺的目的讼溺。流計算的數(shù)據(jù)同步,則是出于減少每次同步的數(shù)據(jù)量的目的最易,采用的是捕獲數(shù)據(jù)變化記錄流失化的方案怒坯,落到實處,就是監(jiān)聽數(shù)據(jù)庫的同步日志藻懒,將其寫入到消息系統(tǒng)中剔猿,生成消息流。對于MySQL嬉荆,可以監(jiān)聽binlog日志艳馒,將數(shù)據(jù)庫里面每行數(shù)據(jù)的增刪更新動作都捕獲起來,形成信息流员寇。
數(shù)據(jù)處理計算弄慰,就是數(shù)倉的關(guān)鍵部分,一般稱之為計算引擎蝶锋,包括了進行數(shù)據(jù)計算所需要的的臨時存儲陆爽、CPU資源和內(nèi)存資源。批處理平臺的計算引擎一般都是分布式處理框架扳缕,比如說hive慌闭;流計算的計算引擎則是集群安裝的spark别威、storm、flink平臺驴剔。流計算的計算引擎主要結(jié)局的問題是將數(shù)據(jù)流結(jié)構(gòu)化省古,并使用一系列流程化算子化技術(shù),合理的規(guī)范計算資源丧失,將數(shù)據(jù)進行正確的計算和輸出豺妓。
數(shù)據(jù)結(jié)果輸出,就是在計算過程或者計算完成時布讹,需要將計算結(jié)果輸出到數(shù)據(jù)展現(xiàn)依賴的數(shù)據(jù)庫琳拭,或者是中間存儲組件。批處理計算的結(jié)果描验,一般會輸出到MySQL數(shù)據(jù)庫進行數(shù)據(jù)展現(xiàn)白嘁。而流計算系統(tǒng)則會將中間結(jié)果輸出到信息系統(tǒng)中,給下游的計算做輸入膘流;對于最終計算結(jié)果絮缅,則會輸出到分析型數(shù)據(jù)庫,進行數(shù)據(jù)實時匯總展現(xiàn)呼股。
3耕魄、框架上的升級
舊的批處理框架如下:
新的流式處理框架如下: