文章地址:http://www.haha174.top/article/details/256473
1.Spark Stream 簡介
Spark Stream是spark core Api 的一種擴展,他可以用于大規模,高吞吐量,容錯的實時數據流處理。它支持從多種數據源讀取數據,比如kafka ,flume,ZeroMQ 等等并且能夠使用類似高階函數的復雜算法來進行數據處理,比如map reduce,join 等等。處理后的數據可以被保存到文件系統 , 數據庫等等
2.spark Streaming 基本工作原理
Spark Streaming 內部的基本工作原理如下:接收實時輸入數據流,然后將數據拆分成多個batch 比如每收集一秒的數據封裝為一個batch ,然后將每個batch 交給spark 的計算我們引擎進行處理,最后會產生出一個結果數據流,其中的數據,也是由一個一個的batch 所有組成。
3.DStream(一)
Spark Streaming 提供了一種高級抽象,叫做DStream,英文全稱為
Discretized Stream ,中文翻譯為“離散流” 它代表了一個持續不斷的數據流。DStream 可以通過輸入數據源來創建,不如kafka flume kinesis;
也可以通過對其他DStream 應用高階函數來創建,比如map ,reduce,join等等DStream的內部其實是一系列持續不斷的RDD RDD 是spark core 的核心抽象,即不可變的分布式的數據集,DStream 中每個RDD 都包含了一段時間內的數據集合。
4.DStream(二)
對于Dstream 應用的算子,比如map 其實在底層會被翻譯成對DStream這種每個RDD的操作,比如對于個DStream執行一個map操作,會產生一個新的DStream,但是在底層,其實其原理為對輸入DStream中每個的RDD 都應用一遍map 操作,然后生成新的RDD 即作為新的DStream中那個時間段的一個RDD 底層的RDD 的transformation操作,其實還是由sparkcore 的計算引擎來實現的,spark streaming 對于spark core 機型了一層封裝,隱藏可細節,然后對開發人員提供了方便易用的高層次api
下面給出一個整體的圖解