1.什么是Spark Streaming
Spark Streaming是在Spark Core API的基礎(chǔ)上培漏,實現(xiàn)的可擴展骡显、高吞吐、可容錯的實時數(shù)據(jù)流處理引擎粉私。Spark Streaming的數(shù)據(jù)源可以從Kafka、Flume近零、Kinesis或TCP Socket等獲得,并且可以使用由高級函數(shù)(如map秒赤、reduce憎瘸、join入篮、window等)開發(fā)的復(fù)雜算法進行流數(shù)據(jù)處理幌甘。最后,處理完的數(shù)據(jù)可以推送到文件系統(tǒng)锅风、數(shù)據(jù)庫或?qū)崟r儀表盤等處存儲和展示。甚至皱埠,Spark Streaming還提供了機器學(xué)習(xí)和圖處理算法以供使用。
下圖展示了Spark Streaming常見的數(shù)據(jù)來源和去向:
2.Spark Streaming的特點
下面是官網(wǎng)上給出的Spark Streaming的特點:http://spark.apache.org/docs/latest/streaming-programming-guide.html
- 易用:使用高級算子構(gòu)造應(yīng)用。Spark Streaming擴展了Spark Core API來處理流數(shù)據(jù)托修,使得流處理和批處理一樣方便。Spark Streaming支持Java睦刃、Scala和Python。
- 容錯性強:可以開箱即用十酣。Spark Streaming開箱后無需任何額外的代碼涩拙,就能恢復(fù)丟失的工作和操作狀態(tài)(如滑動窗口等)。
- Spark集成:集成了流處理耸采、批處理和交互查詢兴泥。通過在Spark上運行,Spark Streaming允許您重復(fù)使用相同的代碼進行批處理虾宇,將流加入歷史數(shù)據(jù)郁轻,或者在流狀態(tài)下運行即席查詢。 構(gòu)建功能強大的交互式應(yīng)用程序文留,不僅僅是分析好唯。
3.Spark Streaming的工作原理
Spark Streaming的內(nèi)部工作原理如下所示:Spark Streaming接收實時輸入的數(shù)據(jù)流,然后將數(shù)據(jù)流切分成批燥翅,交給Spark引擎進行處理骑篙,最終生成“批處理”形式的的結(jié)果流。
Spark Streaming將連續(xù)的數(shù)據(jù)流切分成離散的數(shù)據(jù)流森书,即Discretized Stream靶端,簡稱DStream。DStream的本質(zhì)是一個由許多RDD組成的序列凛膏。
4.案例:演示示例程序NetworkWordCount
(1)在終端1上杨名,啟動netcat服務(wù)器,向9999端口發(fā)送數(shù)據(jù)
[root@localhost ~ ] # nc -l -p 9999
(2)在終端2上猖毫,執(zhí)行示例程序NetworkWordCount台谍,監(jiān)聽本機的9999端口發(fā)來的數(shù)據(jù)
[root@localhost ~ ] # $SPARK_HOME/bin/run-example streaming.NetworkWordCount localhost 9999
(3)在終端1上,輸入要發(fā)送的數(shù)據(jù)吁断,按回車發(fā)送
I love Beijing
I love China
Beijing is the capital of China
(4)在終端2上趁蕊,查看Spark Streaming處理的結(jié)果
注意:如果要確保本例執(zhí)行成功, 那么必須要使機器的CPU核數(shù)大于等于2仔役。一個核用于監(jiān)聽掷伙,至少一個核用于計算。否則只有一個核的話又兵,程序會停在那里(只監(jiān)聽任柜,不計算)。