spark是批處理還是流式處理?

時間 2021-05-11 11:42:49

1樓:iyacontrol

Spark 是批處理。

不過提供了兩種處理流資料的方式:

Spark Streaming

Structured Streaming (Spark 2.x)接下來我們簡單講下這兩種方式。

Spark StreamingSpark Streaming 使用的是DStream API,內部是RDD,所以本質上是微批。

Structured StreamingStructured Streaming 使用的是DataFrames / DataSet, 沒有批處理概念。觸發器中接收到的資料將附加到連續流動的資料流中。處理資料流的每一行,並將結果更新到無邊界結果表中。

相對比兩種方式,Structured Streaming 更適合處理流式資料。

2樓:褲衩兒

Spark是批處理,spark streaming本質上也是微批,嚴格意義上來講只能算是準實時。structed streaming對標的是flink,可以以microbatch的方式完成對流資料的處理,目前不是很成熟,應用不是很多。流式無界資料目前還是推薦使用flink

3樓:

批處理,也支援流資料處理,不過是通過微批的方式來實現的,所以,流資料的處理可以達到秒級的延遲更新。2.4以後的structured streaming提供了cotinous的模式,可以達到耗秒級,不過還處於開發階段。

4樓:zoombeet

如果按大的分類標準來說,spark是流式處理。但是流式處理系統又有自己的小分類,也分為兩種。分別為微批處理系統和純流式處理系統。

微批處理系統是指將輸入的資料分割為一些非常微小的資料單元基本,每次處理都是處理乙個小的資料單元,看起來就和流處理系統一樣。純流處理系統就是每次只處理乙個單位的資料(例如乙個位元組),可以處理一些實時的資料。

5樓:任逸帆

Structured Streaming 預設使用微批模式,spark 引擎會定期檢查是否有新資料到達,然後開啟乙個新的批次進行處理,如下圖:

在微批模式下, driver 在執行每個批次前,都需要先把 offset range 寫入 WAL, 為了掛掉後可以 recover,當一條日誌到達後,並不會立即處理,需要先處理完上乙個批次,然後把這乙個批次的 offset 記錄後,才會處理,如下圖:

這種模式下,最低的延遲可以搞到 100ms, 這種模式是架構在 Spark SQL 上的,所以就坐享 spark SQL 中已有的優化方式(code generation 和 project Tungsten,參考 https://

),這種模式主要是面向吞吐量進行設計,而且可以滿足絕大部分應用場景,比如ETL和準實時監控,但是對於要求延遲在 10ms 的場景就力不從心了,所以2.3 版本中又引入了持續流處理模型。

在持續流模式下,spark不是定期排程新批次的任務,而是啟動一直執行的駐守在 executor 上的任務,源源不斷的進行讀取處理輸出資料,如下圖:

因為在 executor 端是持續流處理的,所以最低延遲可以降到幾毫秒,spark 內部採用的分布式快照演算法類似 Chandy-Lamport 演算法,不過略有區別,在source 端隔一段時間注入特殊標記(epoch markers)到資料流,然後就相當於把資料切分為不同的 epochs, 當特殊標記流到最後的 operator, executor 獲取後,向driver 匯報,driver等齊所有executor的匯報,統一發號施令,統一提交,有點類似於二次提交演算法,全部的 executor 都提交後,driver 再寫入提交日誌中,這個 epochs 就算是全部ok了,防止重複執行。

6樓:進擊的聖鬥士

本質上是批處理,就算是spark streaming也是微批處理,做到秒級別,對於延遲要求低的專案也是不能支援的。真正的流處理是flink,最流行的大資料流處理引擎。

不過,最近spark出了個Structured Streaming,所謂流式,無非就是無限大的表,官方給出的圖一目了然:

現在的設計很簡單,其實就是無限大的 Source Table 對映到一張無限大的 Result Table上,每個週期完成後,都會更新Result Table。

7樓:辰彩飛揚

spark是基於記憶體的批處理,sparkstreaming是微批,structedstreaming好像可以實現流處理可以和flink掰掰手腕

8樓:ashley

批處理,但是它提供了類實時處理的框架,sparkStreaming,為什麼說他是類實時處理呢?很簡單,日常的批處理一般是T+1,每天處理一次,時間上我們就說它每24小時處理一次。實時處理呢?

資料剛產生我就要進行處理。那把spark中的批處理,每24小時處理一次的時間縮短,縮短,再縮短,最後時間可能是1s鐘處理一次,時間可以再短。這就是spark中實時處理的概念,或者說spark Streaming的原理。

9樓:大資料技術天涯

Apache Spark 是乙個統一的、快速的分布式計算引擎,能夠同時支援批處理與流計算,充分利用記憶體做平行計算,官方給出Spark記憶體計算的速度比MapReduce快100倍。因此可以說作為當下最流行的計算框架,Spark已經足夠優秀了。

Spark 可以說是一站式的分布式計算引擎,能夠支援批處理、流計算、機器學習以及圖計算。

Spark Core:Spark核心模型,底層的高階抽象 RDD 稱為彈性分布式資料集,具有高容錯性,是平行計算的基石。

Spark SQL:Spark提供了Spark SQL模組用於處理結構化資料,支援互動式SQL、DataFrame API以及多種語言支援。

Spark Streaming:可擴充套件、容錯的流計算框架,基於微批(micro batch)處理的模式,Spark2.0 引入了Structured Streaming進一步定義了流計算諸多方面的語義。

MLlib:原生支援的機器學習庫,支援主流的統計與機器學習演算法。

GraphX:Spark提供的分布式圖計算框架,能夠處理複雜的業務場景比如社交關係、金融擔保等。

Spark在流處理方面支援Spark Streaming和Structured Streaming

Spark Streaming流處理的機制是將源源不斷的流式資料按照一定時間間隔,分隔成乙個乙個小的batch批次,然後經過Spark引擎處理後輸出到外部系統。實際上是微批操作,因此上述的時間間隔稱為Batch Duration,即批處理時間間隔。Spark Streaming這種把流當作一種批的設計思想具有非常高的吞吐量,但避免不了較高的延時,因此Spark Streaming的場景也受到了限制,實時性要求非常高的場景不適合使用Spark Streaming。

Spark Streaming支援兩種狀態管理操作 updateStateByKey 與 mapWithState,分別用來滿足類似全量與增量的操作。而在Structured 。

Spark Streaming只支援處理時間,到了Structured Streaming 模型中同時支援處理時間和事件時間。

在容錯性方面,Spark Streaming能夠保證 At-most-Once 或 At-least-Once 這種至多或至少一次的處理語義,基本上保證不了 Exactly-Once 這種嚴格一次的處理語義。通常是只實現 At-least-Once 的處理,保證資料不丟失,但是不能保證資料不會被重複處理,因此要求輸出端能夠支援冪等操作或者更新操作。

總的來說,與flink 對比,spark 是準實時,實際是微批處理,Spark是乙個通用的、快速的大資料處理引擎,集批處理、流處理、機器學習與圖計算等於一身,基於記憶體的迭代計算更加高效,目前也在不斷增強包括流處理在內的能力。

10樓:羅少揚

思路上還是批處理,基於記憶體的rdd資料集處理和備份機制。在spark中的實時處理可以理解為批大小盡可能客觀地縮小,增加瞬時能夠處理的批的數量,給人帶來實時性的提公升的效果。

和mapreduce框架的最大不同在於減少磁碟的io、提高記憶體的使用效率(記憶體資料和轉換/計算方法的重用)

和flink的不同在於spark是記憶體資料集從大到小的縮放,而flink是傳輸資料的邊界定義是有界還是無界。

11樓:老馮一枚

spark是乙個批流統一的計算引擎,支援批處理和流處理。當處理流資料時,把流資料切割成非常小的批進行計算。即以批處理為核型,批流統一的計算引擎。

純批處理引擎有:mapreduce和tez純流處理引擎有:storm

批流合一的還有:

apache flink,以流處理為核型,把批處理的資料看作乙個有限的流的計算引擎。

apache apex

12樓:加公尺谷大資料

從定義上來說,Apache Spark可以理解為一種包含流處理能力的批處理框架。

Spark批處理模式

與MapReduce不同,Spark的資料處理工作全部在記憶體中進行,只在一開始將資料讀入記憶體,以及將最終結果持久儲存時需要與儲存層互動。所有中間態的處理結果均儲存在記憶體中。

雖然記憶體中處理方式可大幅改善效能,Spark在處理與磁碟有關的任務時速度也有很大提公升,因為通過提前對整個任務集進行分析可以實現更完善的整體式優化。為此Spark可建立代表所需執行的全部操作,需要操作的資料,以及操作和資料之間關係的Directed Acyclic Graph(有向無環圖),即DAG,藉此處理器可以對任務進行更智慧型的協調。

Spark流處理模式

流處理能力是由Spark Streaming實現的。Spark本身在設計上主要面向批處理工作負載,為了彌補引擎設計和流處理工作負載特徵方面的差異,Spark實現了一種叫做微批(Micro-batch)*的概念。在具體策略方面該技術可以將資料流視作一系列非常小的「批」,藉此即可通過批處理引擎的原生語義進行處理。

Spark Streaming會以亞秒級增量對流進行緩衝,隨後這些緩衝會作為小規模的固定資料集進行批處理。這種方式的實際效果非常好,但相比真正的流處理框架在效能方面依然存在不足。

這個批處理怎麼寫?

D testWork test tree 卷Drive 的資料夾 PATH 列表卷序列號為 F462 C62ED in A A B B C C D D outD testWork test cd inD testWork test in r.batD testWork test in for i i...

請教批處理修改文字問題?

還是我自己來回答吧,因為我已經搞定了,度娘就是厲害 echo off setlocal enabledelayedexpansion for f tokens i in 1.txt do if i echo.else set line i call chg new 1.txt pause exit ...

批處理計算與流處理計算的區別是什麼?

風控演算法小白 批處理主要操作大容量靜態資料集,並在計算過程完成後返回結果。可以認為,處理的是用乙個固定時間間隔分組的資料點集合。批處理模式中使用的資料集通常符合下列特徵 1 有界 批處理資料集代表資料的有限集合2 持久 資料通常始終儲存在某種型別的持久儲存位置中3 大量 批處理操作通常是處理極為海...