咱們知道,大數據的計算模式主要分爲批量計算(batch computing)、流式計算(stream computing)、交互計算(interactive computing)、圖計算(graph computing)等。其中,流式計算和批量計算是兩種主要的大數據計算模式,分別適用於不一樣的大數據應用場景。html
目前主流的流式計算框架有Storm、Spark Streaming、Flink三種,其基本原理以下:java
在Storm中,須要先設計一個實時計算結構,咱們稱之爲拓撲(topology)。以後,這個拓撲結構會被提交給集羣,其中主節點(master node)負責給工做節點(worker node)分配代碼,工做節點負責執行代碼。在一個拓撲結構中,包含spout和bolt兩種角色。數據在spouts之間傳遞,這些spouts將數據流以tuple元組的形式發送;而bolt則負責轉換數據流。node
Apache Spark微信
Spark Streaming,即核心Spark API的擴展,不像Storm那樣一次處理一個數據流。相反,它在處理數據流以前,會按照時間間隔對數據流進行分段切分。Spark針對連續數據流的抽象,咱們稱爲DStream(Discretized Stream)。 DStream是小批處理的RDD(彈性分佈式數據集), RDD則是分佈式數據集,能夠經過任意函數和滑動數據窗口(窗口計算)進行轉換,實現並行操做。網絡
Apache Flink框架
針對流數據+批數據的計算框架。把批數據看做流數據的一種特例,延遲性較低(毫秒級),且可以保證消息傳輸不丟失不重複。運維
Flink創造性地統一了流處理和批處理,做爲流處理看待時輸入數據流是無界的,而批處理被做爲一種特殊的流處理,只是它的輸入數據流被定義爲有界的。Flink程序由Stream和Transformation這兩個基本構建塊組成,其中Stream是一箇中間結果數據,而Transformation是一個操做,它對一個或多個輸入Stream進行計算處理,輸出一個或多個結果Stream。分佈式
這三種計算框架的對好比下:函數
參考文章:post
Streaming Big Data: Storm, Spark and Samza
相關閱讀:
如欲瞭解更多,歡迎搜索並關注先薦微信公衆號(ID:dsfsxj)。
本帳號爲第四範式智能推薦產品先薦的官方帳號。帳號立足於計算機領域,特別是人工智能相關的前沿研究,旨在把更多與人工智能相關的知識分享給公衆,從專業的角度促進公衆對人工智能的理解;同時也但願爲人工智能相關人員提供一個討論、交流、學習的開放平臺,從而早日讓每一個人都享受到人工智能創造的價值。