本文主要介紹一下spark streaming,從以下三個方面來介紹:
- Spark Streaming設計
- Spark Streaming與Storm的對比
- 從“Hadoop+Storm”架構轉向Spark架構
Spark Streaming設計
Spark Streaming可整合多種輸入數據源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。經處理後的數據可存儲至文件系統、數據庫,或顯示在儀表盤裏,如下圖所示:
Spark Streaming的基本原理是將實時輸入數據流以時間片(秒級)爲單位進行拆分,然後經Spark引擎以類似批處理的方式處理每個時間片數據,如下圖縮手:
spark streaming設計(秒級)
Spark Streaming最主要的抽象是DStream(Discretized Stream,離散化數據流),表示連續不斷的數據流。在內部實現上,Spark Streaming的輸入數據按照時間片(如1秒)分成一段一段,每一段數據轉換爲Spark中的RDD,這些分段就是Dstream,並且對DStream的操作都最終轉變爲對相應的RDD的操作。
spark streaming與storm的對比
Spark Streaming和Storm最大的區別在於,Spark Streaming無法實現毫秒級的流計算,而Storm可以實現毫秒級響應。
Spark Streaming構建在Spark上,一方面是因爲Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面,相比於Storm,RDD數據集更容易做高效的容錯處理。
Spark Streaming採用的小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和算法,因此,方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。
從“Hadoop+storm”架構向spark架構轉變
Hadoop+storm部署方式案例:
spark同時滿足批量和流式處理需求
採用Spark架構具有如下優點:
- 實現一鍵式安裝和配置、線程級別的任務監控和告警;
- 降低硬件集羣、軟件維護、任務監控和應用開發的難度;
- 便於做成統一的硬件、計算平臺資源池。