SparkStreaming的背壓機制

2021-10-11 16:13:42 字數 870 閱讀 5524

spark 1.5

以前版本,使用者如果要限制receiver的資料接收速率,可以通過設定靜態配製引數「spark.streaming.receiver.maxrate」的值來實現,此舉雖然可以通過限制接收速率,來適配當前的處理能力,防止記憶體溢位,但也會引入其它問題。比如:producer資料生產高於maxrate,當前集群處理能力也高於maxrate,這就會造成資源利用率下降等問題。(注:當處理能力小於接收速率時,容易造成記憶體溢位,但是當大於限制的接收速率時,又會浪費效能優勢)

為了更好的協調資料接收速率與資源處理能力,1.5

版本開始spark streaming可以動態控制資料接收速率來適配集群資料處理能力。背壓機制(即

spark streaming backpressure

):根據jobscheduler反饋作業的執行資訊來動態調整receiver資料接收率。

通過屬性「spark.streaming.backpressure.enabled」來控制是否啟用背壓機制,預設值

false

,即不啟用。

注:背壓機制:動態調整採集器採集訊息的速度與執行器處理訊息的速度

採集器對kafka中的訊息進行採集,然後將訊息分配給執行器處理

1) 當採集器接收訊息過快,executor來不及處理,會導致記憶體溢位,所以採集器要降低採集速度

2) 當採集器的速度降低到一定程度,executor處理訊息的能力大於採集速度,會有浪費效能

3) 背壓機制就是採集器根據executor處理訊息的能力動態調整採集速度,以便達到最佳的處理效果。

4)當資料量大,且不可控時,需要開啟背壓機制,動態調整接收與處理的速率。反之當資料量穩定時需要關閉背壓機制,自己手動設定接收器速率,因為背壓機制會一直占用計算資源進行動態調整的計算。

優雅的停止SparkStreaming

背景 流式任務需要7 24小時執行,但是有時涉及到公升級 需要主動停止程式,但是分布式程式,沒辦法做到乙個個程序去殺死,所有配置優雅的關閉就顯得至關重要了。可以考慮使用外部檔案儲存或者關係型資料庫 快取等來控制內部程式關閉。此例子使用hdfs建立指定檔案來控制程式的關閉,想要更好的在前端進行控制,可...

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...