您好,登錄后才能下訂單哦!
一、StreamingContext功能及源碼剖析:
1、 通過Spark Streaming對象jssc,創建應用程序主入口,并連上Driver,接收數據服務端口9999寫入源數據
2、 Spark Streaming的主要功能有:
主程序的入口;
提供了各種創建DStream的方法接收各種流入的數據源(例如:Kafka、Flume、Twitter、ZeroMQ和簡單的TCP套接字等);
通過構造函數實例化Spark Streaming對象時,可以指定master URL、appName、或者傳入SparkConf配置對象、或者已經創建的SparkContext對象;
將接收的數據流傳入DStreams對象中;
通過Spark Streaming對象實例的start方法來啟動當前應用程序的流計算框架或通過stop方法結束當前應用程序的流計算框架;
二、DStream功能及源碼剖析:
1、 DStream是RDD的模板,DStream是抽象的,RDD也是抽象
2、 DStream的具體實現子類如下圖所示:
3、 以StreamingContext實例的socketTextSteam方法為例,其執行完的結果返回DStream對象實例,其源碼調用過程如下圖:
socket.getInputStream獲取數據,while循環來存儲數據(內存、磁盤)
三、Receiver功能及源碼剖析:
1、Receiver代表數據的輸入,接收外部輸入的數據,如從Kafka上抓取數據;
2、Receiver運行在Worker節點上;
3、Receiver在Worker節點上抓取Kafka分布式消息框架上的數據時,具體實現類是KafkaReceiver;
4、Receiver是抽象類,其抓取數據的實現子類如下圖所示:
5、 如果上述實現類都滿足不了您的要求,您自己可以定義Receiver類,只需要繼承Receiver抽象類來實現自己子類的業務需求。
四、StreamingContext、DStream、Receiver結合流程分析:
(1)inputStream代表了數據輸入流(如:Socket、Kafka、Flume等)
(2)Transformation代表了對數據的一系列操作,如flatMap、map等
(3)outputStream代表了數據的輸出,例如wordCount中的println方法:
數據在流進來之后,最終還是基于RDD進行執行,在處理流進來的數據時是DStream進行Transformation,StreamingContext會根據Transformation生成DStreamGraph,而DStreamGraph就是DAG的模板,這個模板是被框架托管的。當我們指定時間間隔的時候,Spark Streaming框架會自動觸發Job,所以在開發者編寫好的Spark代碼時(如:flatMap、collect、print),不會導致job的運行,job運行是
Spark Streaming框架自動產生的。
總結:
備注:
資料來源于:DT_大數據夢工廠(IMF傳奇行動絕密課程)
更多私密內容,請關注微信公眾號:DT_Spark
如果您對大數據Spark感興趣,可以免費聽由王家林老師每天晚上20:00開設的Spark永久免費公開課,地址YY房間號:68917580
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。