1. 程式人生 > >SparkStreamingj整合Kafka的幾個重要引數

SparkStreamingj整合Kafka的幾個重要引數

使用SparkStreaming整合kafka時有幾個比較重要的引數:

(1)spark.streaming.stopGracefullyOnShutdown (true / false)預設fasle

確保在kill任務時,能夠處理完最後一批資料,再關閉程式,不會發生強制kill導致資料處理中斷,沒處理完的資料丟失

(2)spark.streaming.backpressure.enabled (true / false) 預設false

開啟後spark自動根據系統負載選擇最優消費速率

(3)spark.streaming.backpressure.initialRate (整數) 預設直接讀取所有

在(2)開啟的情況下,限制第一次批處理應該消費的資料,因為程式冷啟動 佇列裡面有大量積壓,防止第一次全部讀取,造成系統阻塞

(4)spark.streaming.kafka.maxRatePerPartition (整數) 預設直接讀取所有

限制每秒每個消費執行緒讀取每個kafka分割槽最大的資料量

注意:

只有(4)啟用的時候,每次消費的最大資料量,就是設定的資料量,如果不足這個數,就有多少讀多少,如果超過這個數字,就讀取這個數字的設定的值

只有(2)+(4)啟用的時候,每次消費讀取的數量最大會等於(4)設定的值,最小是spark根據系統負載自動推斷的值,消費的資料量會在這兩個範圍之內變化根據系統情況,但第一次啟動會有多少讀多少資料。此後按(2)+(4)設定規則執行

(2)+(3)+(4)同時啟用的時候,跟上一個消費情況基本一樣,但第一次消費會得到限制,因為我們設定第一次消費的頻率了。

       除此之外,還應該考慮程式容錯性,這個跟checkpoint有關係散仙在前面的文章已經描述過具體請參考:http://qindongliang.iteye.com/