1. 程式人生 > >Spark Streaming 入門

Spark Streaming 入門

watermark 吞吐量 成了 res proc 工具 receives enable obs

概述

什麽是 Spark Streaming?
Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams.
根據官網的解釋,Spark Streaming是一個基於Spark Core的一個高擴展,高吞吐量,容錯的一個處理實時流數據的 工具(流處理).

數據的流處理
Data can be ingested from many sources like Kafka, Flume, Kinesis, or TCP sockets, and can be processed using complex algorithms expressed with high-level functions like map, reduce, join and window. Finally, processed data can be pushed out to filesystems, databases, and live dashboards.

官網說明中,可以發現,數據可以是Kafka,Flume等數據源頭,經過相應的轉化處理,可以將處理的結果push到外部文件系統,數據庫等

處理流程圖

技術分享圖片

一句話總結:將不同的數據源經過Spark Streaming處理,接著將處理的結果輸出到外部文件系統

其中,Spark Streaming擁有下面幾個特性:

  1. 高度容錯(能夠從錯誤中快速恢復過來)
  2. 能夠運行在成百上千的機器節點上
  3. 具有低延時
  4. 可以結合機器學習,圖計算等同層框架做相應處理

上面的第四點,想強調一下,這個特性很重要的,這樣我們就可以結合其余的子框架來做更復雜的處理.這點也體現了
One Stack to rule them all.
"一棧式解決不同場景"

工作原理
Internally, it works as follows. Spark Streaming receives live input data streams and divides the data into batches, which are then processed by the Spark engine to generate the final stream of results in batches.

官網說明中,可以發現,Spark Streaming會去接收實時輸入的數據流,將接收的數據流按照要求分成一些小批次數據,將拆分的每一個小批次數據交給Spark Engine去處理,最終,也會得到一些小批次的處理結果

如圖所示:
技術分享圖片

Spark Streaming應用場景
簡單舉個大家熟悉的例子:
Spark Streaming可以用來做電商網站的實時推薦商品系統
,想想,現在,當你在購物網站上搜索瀏覽了某個數據,那麽,馬上它就會為你實時推薦相應的商品,供你選擇,這樣,可以加大網站的盈利

再次理解Spark Streaming的工作原理

工作原理(粗粒度)

Spark Streaming接收到實時數據流,將數據按照指定的時間切成一些小的數據塊,然後將一系列的小的數據庫傳給Spark Engine去處理.最後,將處理的結果,push到外部文件系統數據庫等.

工作原理(細粒度)

先理解一下有一個叫做Context上下文的概念;
Spark SQL中有:
SQL Context/HiveContext
Spark Core中有:
SparkContext
Spark Streaming中有:
Streaming Context等概念

Receiver:Driver端啟動的,用於接收數據

一個Spark應用程序中存在SparkContext和SparkContext

技術分享圖片
[上圖,來自慕課網Michael__PK老師]

處理步驟:

  1. Driver會在Executor端中啟動一些Receiver的接收器,
  2. 接收器啟動之後,會把Input data Stream拆分為一些blocks存放在內存裏面(多副本的話,會把blocks拷貝到相應的Executor中去),
  3. 之後,我們的Receiver會把我們blocks塊信息告訴StreamingContext
  4. ,每個周期到了,我們的StreamingContex會通知SparkContext啟動一些jobs,
  5. SparkContext會把job分發到Executor上執行

好的,到這裏,Spark Streaming的基本介紹就完成了,接下來我們隊核心概念進行理解

Spark Streaming 入門