流式計算
出自 MBA智库百科(https://wiki.mbalib.com/)
流式計算(Streaming Compute)
目錄 |
流式計算(Streaming Compute)利用分散式的思想和方法,對海量“流”式數據進行實時處理。流式計算更加強調計算數據流和低時延。這邊所謂的流數據( streaming data)是一種不斷增長的,無限的數據集[1]。
流式計算是否等於實時計算?習慣上實時和流式等價,但其實這種觀點並不完全正確。數據的發生的時間和處理時間有可能是不一致的,只能說流式計算是一種低延遲的計算方式。
業界常見的流式計算框架:Storm、Flink、Yahoo S4、Kafka Stream、Twitter Heron、Apache Samza、Spark Streaming。
流式計算框架、平臺與相關產品[2]
第一類,商業級流式計算平臺(IBM InfoSphere Streams、IBM StreamBase等);
第二類,開源流式計算框架(Twitter Storm、S4等);
第三類,公司為支持自身業務開發的流式計算框架。
Strom:Twitter 開發的第一代流處理系統。
Heron:Twitter 開發的第二代流處理系統。
Spark streaming:是Spark核心API的一個擴展,可以實現高吞吐量的、具備容錯機制的實時流數據的處理。
Flink:是一個針對流數據和批數據的分散式處理引擎。
Apache Kafka:由Scala寫成。該項目的目標是為處理實時數據提供一個統一、高通量、低等待的平臺。
流式處理可以用於兩種不同場景: 事件流和持續計算。
(1)事件流
事件流能夠持續產生大量的數據,這類數據最早出現與傳統的銀行和股票交易領域,也在互聯網監控、無線通信網等領域出現、需要以近實時的方式對更新數據流進行複雜分析如趨勢分析、預測、監控等。簡單來說,事件流採用的是查詢保持靜態,語句是固定的,數據不斷變化的方式。
(2)持續計算
比如對於大型網站的流式數據:網站的訪問PV/UV、用戶訪問了什麼內容、搜索了什麼內容等,實時的數據計算和分析可以動態實時地刷新用戶訪問數據,展示網站實時流量的變化情況,分析每天各小時的流量和用戶分佈情況; 比如金融行業,毫秒級延遲的需求至關重要。一些需要實時處理數據的場景也可以應用Storm,比如根據用戶行為產生的日誌文件進行實時分析,對用戶進行商品的實時推薦等。
通過大數據處理我們獲取了數據的價值,但是數據的價值是恆定不變的嗎?顯然不是,一些數據在事情發生後不久就有了更高的價值,而且這種價值會隨著時間的推移而迅速減少。流處理的關鍵優勢在於它能夠更快地提供洞察力,通常在毫秒到秒之間。
流式計算的價值在於業務方可在更短的時間內挖掘業務數據中的價值,並將這種低延遲轉化為競爭優勢。比方說,在使用流式計算的推薦引擎中,用戶的行為偏好可以在更短的時間內反映在推薦模型中,推薦模型能夠以更低的延遲捕捉用戶的行為偏好以提供更精準、及時的推薦。
流式計算能做到這一點的原因在於,傳統的批量計算需要進行數據積累,在積累到一定量的數據後再進行批量處理;而流式計算能做到數據隨到隨處理,有效降低了處理延時。