Spark Streaming

在很多實時資料處理的場景中,都需要用到流式處理(Stream Process)框架,Spark也包含了兩個完整的流式處理框架Spark Streaming和Structured Streaming(Spark 2.0出現),先闡述流式處理框架,之后介紹Spark Streaming框架使用,
Spark Streaming概述
在傳統的資料處理程序中,我們往往先將資料存入資料庫中,當需要的時候再去資料庫中進行檢索查詢,將處理的結果回傳給請求的用戶;另外,MapReduce 這類大資料處理框架,更多應用在離線計算場景中,而對于一些實時性要求較高的場景,我們期望延遲在秒甚至毫秒級別,就需要引出一種新的資料計算結構——流式計算,對無邊界的資料進行連續不斷的處理、聚合和分析,
Streaming 應用場景
如下的場景需求, 僅僅通過傳統的批處理/離線處理/離線計算/處理歷史資料是無法完成的:
1)、電商實時大屏:每年雙十一時,淘寶和京東實時訂單銷售額和產品數量大屏展示,要求:
- 資料量大,可能每秒鐘上萬甚至幾十萬訂單量
- 快速的處理,統計出不同維度銷售訂單額,以供前端大屏展示

2)、商品推薦:京東和淘寶的商城在購物車、商品詳情等地方都有商品推薦的模塊,商品推薦的要求:
- 快速的處理, 加入購物車以后就需要迅速的進行推薦
- 資料量大
- 需要使用一些推薦演算法

3)、工業大資料:現在的工場中, 設備是可以聯網的, 匯報自己的運行狀態, 在應用層可以針對這些資料來分析運行狀況和穩健程度, 展示工件完成情況, 運行情況等,工業大資料的需求:
- 快速回應, 及時預測問題
- 資料是以事件的形式動態的產品和匯報
- 因為是運行狀態資訊, 且一般都是幾十上百臺機器, 所以匯報的資料量很大

4)、集群監控:一般的大型集群和平臺, 都需要對其進行監控,監控的需求
- 要針對各種資料庫, 包括 MySQL, HBase 等進行監控
- 要針對應用進行監控, 例如 Tomcat, Nginx, Node.js 等
- 要針對硬體的一些指標進行監控, 例如 CPU, 記憶體, 磁盤 等
- 工具的日志輸出是非常多的, 往往一個用戶的訪問行為會帶來幾百條日志, 這些都要匯報, 所以資料量比較大
- 要從這些日志中, 聚合系統運行狀況

上述展示場景需要實時對資料進行分析處理,屬于大資料中的實時流式資料處理
Streaming 計算模式
流式處理任務是大資料處理中很重要的一個分支,關于流式計算的框架也有很多,如比較出名的Storm流式處理框架,是由Nathan Marz等人于 2010 年最先開發,之后將Storm開源,成為 Apache 的頂級專案,Trident 對Storm進行了一個更高層次的抽象;另外由LinkedIn貢獻給社區的 Samza 也是一種流處理解決方案,不過其構建嚴重依賴于另一個開源專案 Kafka,
Spark Streaming 構建在Spark的基礎之上的實時流處理框架,隨著Spark的發展,Spark Streaming和Structured Streaming也受到了越來越多的關注,
不同的流式處理框架有不同的特點,也適應不同的場景,主要有如下兩種模式,
模式一:原生流處理(Native)
所有輸入記錄會一條接一條地被處理,上面提到的 Storm 和 Flink都是采用這種方式;
絕對一次一條的模式

模式二:微批處理(Batch)
將輸入的資料以某一時間間隔 T,切分成多個微批量資料,然后對每個批量資料進行處理,Spark Streaming 和 StructuredStreaming采用的是這種方式;
比如間隔是1秒,就一秒鐘處理一個批次

???????Spark Streaming 計算思想
Spark Streaming是Spark生態系統當中一個重要的框架,它建立在Spark Core之上,下圖也可以看出Sparking Streaming在Spark生態系統中地位,

官方定義Spark Streaming模塊:

SparkStreaming是一個基于SparkCore之上的實時計算框架,可以從很多資料源消費資料并對資料進行實時的處理,具有高吞吐量和容錯能力強等特點,

對于Spark Streaming來說,將流式資料封裝的資料結構:DStream(Discretized Stream,離散化資料流,連續不斷的資料流),代表持續性的資料流和經過各種Spark算子操作后的結果資料流,其實就是將流式資料按照時間間隔BatchInterval劃分為很多Batch批次,針對每個Batch批次資料當做RDD進行快速分析和處理,
SparkStreaming模塊對流式資料處理,介于Batch批處理和RealTime實時處理之間處理資料方式,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279343.html
標籤:其他
下一篇:你必須了解的動態規劃演算法
