1. 程式人生 > >流式計算簡介

流式計算簡介

1、資料的時效性

日常工作中,我們一般會先把資料儲存在一張表中,然後對這張表的資料進行加工、分析。那這裡是先儲存在表中,那就會涉及到時效性這個概念。

如果我們處理以年,月為單位的級別的資料處理,進行統計分析,個性化推薦,那麼資料的的最新日期離當前有幾個甚至上月都沒有問題。但是如果我們處理的是以天為級別,或者以小時甚至更小粒度的資料處理,那麼就要求資料的時效性更高了。比如:對網站的實時監控,對異常日誌的監控,這些場景需要工作人員立即響應,這樣的場景下,傳統的統一收集資料,再存到資料庫中,再取出來進行分析就無法滿足高時效性的需求了。

2、流式計算和批量計算

上面說到的:統一收集資料--儲存到DB--對資料進行批量處理,就是我們說到的批量計算

而流式計算,顧名思義,就是對資料流進行處理,是實時計算。

主要原理是:

(1)與批量計算那樣慢慢積累資料不同,流式計算將大量資料平攤到每個時間點上,連續地對小批量資料的進行傳輸,資料持續流動,計算完之後就丟棄。

(2)批量計算是維護一張表,對錶進行實施各種計算邏輯。流式計算相反,是必須先定義好計算邏輯,提交到流式計算系統,這個計算作業邏輯在整個執行期間是不可更改的。

(3)計算結果上,批量計算對全部資料進行計算後傳輸結果,流式計算是每次小批量計算後,結果可以立刻投遞到線上系統,做到實時化展現。

3、流式計算流程及特性

流程:

(1)提交流計算作業

(2)等待流式資料觸發流計算作業

(3)計算結果持續不斷對外寫出

特性:

(1)實時,低延遲

(2)無界,資料是不斷輸出無終止的

(3)連續,計算連續進行,計算之後資料就會被丟棄

4、相關產品

Strom:Twitter 開發的第一代流處理系統。

Heron:Twitter 開發的第二代流處理系統。

Spark streaming:是Spark核心API的一個擴充套件,可以實現高吞吐量的、具備容錯機制的實時流資料的處理。

Flink:是一個針對流資料和批資料的分散式處理引擎。

Apache Kafka:由Scala寫成。該專案的目標是為處理實時資料提供一個統一、高通量、低等待的平臺。