Spark treaming簡介
Spark Streaming是Spark中的一個組件,具有高吞吐量,容錯能力強的特點,基于Spark Core進行構建,也能夠與Spark core.Spark SQL進行混合編程,用于對流式進行處理,類似于Storm.
Spark Streaming的輸入和輸出
如上圖所示,Spark Streming是流式數據的一個主要處理組件,左邊是數據源的輸入,右邊是數據源的輸出,此外,Spark Streaming也能和MLlib(機器學習)以及Graphx完美融合
DStream
Spark Streaming有一個針對流式計算的組件,叫DStream,正如Spark core的組件RDD,Saprk SQL的組件DataFrame和DataSet.
在源碼中DStream是通過HashMap來保存他所管理的數據流的窒悔。K是RDD中數據流的時間腕柜,V是包含數據流的RDD。
DStream采用微批次架構處理,它是由一堆RDD組成的集合,它的工作原理是將輸入的數據切割成一個個單位時間內的RDD,于是每個單位時間內都有一個RDD,然后每一個RDD又會通過Saprk
Core處理成新的流.,因此Spark Streaming輸出的是單位時間內一節(jié)一節(jié)的流,然后遞給Saprk
Core后,它輸出的也是一節(jié)一節(jié)的流(RDD組成的序列)
Streaming的輸入數據源
Streaming的數據源分為三種方式:文件數據源 / 自定義數據源 / RDD隊列
文件數據源: Spark Streaming會監(jiān)控一個目錄,這個目錄會是HDFS的目錄,這個目錄下面一旦有文件進入,Streaming就會處理這個文件的信息.,前提是這些文件具有相同的格式,可以通過移動來實現文件進入
自定義數據源:
自定義數據源通過繼承Receiver,實現onStart.onStop方法來自定義數據源采集,具體步驟如下:
1. 新建一個class去繼承Receiver,并給Receiver傳入一個類型的參數,該類型參數是你需要接收的數據的類型.
2.重寫Receiver的方法,onStart方法(在Receiver啟動的時候調用的方法). onStop方法(在Receiver正常體制的情況下調用的方法)
3.在程序中通過streamingContext.receiverStream(new CustomeReceiver)來調用你的定制化Receiver.
代碼寫好后,打成jar包,在hadoop下啟動發(fā)射語句 nc -lk 9999,再在spark下啟動那個jar,就OK了
RDD隊列
RDD隊列是streamingContext()的實例,調用queuestream(RDD),里面?zhèn)魅胍粋€RDD隊列,代碼如下:
Streaming和Kafka的對接
數據進入kafka輸入端,形成一個kafka隊列,隊列依次進入streaming里,通過streaming的處理,在通過kafka的輸出端輸出來
先啟動zookeeper,再啟動kafka? bin/kafka-server-start.sh-daemon ./config/server.properties
下次補充..
Streaming和Flume的對接
下次補充..