您好,登錄后才能下訂單哦!
小編給大家分享一下receiver based Dstream怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
使用注意事項
1. receiver 會像正常task一樣,由driver調度到executor,并占用一個cpu,與正常task不同,receiver是常駐線程
2. receiver個數 KafkaUtils.createStream調用次數決定,調用一次產生一個receiver
3. al topicMap = Map("page_visits" -> 1) map的value對應的數值實際上是消費的線程個數。
前情:基于reciver kafka java客戶端消費者高階API
4. receiver 默認 200ms 生成一個block,spark.streaming.blockInterval默認值是200ms。最小建議是50ms,小于該值,性能不好,比如task加載比重就比較大了。每秒鐘大于50個任務,那么將任務加載分發執行就會成為一種負擔。
根據數據量來調整block的生成周期。
5. receiver接收的block會放入blockmananger,每個executor都會有一個blockmanager實例,由于數據的本地性,那么存在recever的executor會被調度執行更多的task,就會導致某些executor比較空閑。
a). 增加executor
b). repartition增加分區
c). 調整數據本地性 spark.locality.wait 假如任務都是3s以內執行結束,就會導致越來越多的任務調度到數據存在的executor上執行,最終導致executor執行的任務失衡。
6. kafka 082 高階消費者api,有分組的概念。當然就會產生一個問題,消費者組內的線程數,和kafka分區數的對應關系。
7. checkpoint 目的是從driver故障恢復或者恢復upstatebykey等狀態
8. wal,預寫日志,為了故障恢復,實現了最少一次消費。一是沒必要多副本,尤其是基于hdfs的存儲。然后為了效率,可以關閉wal。使能wal只需要將spark.streaming.receiver.writeAheadLog.enable配置為true,默認值是false
9 限制消費者最大速率
1. spark.streaming.backpressure.enabled
默認是false,設置為true,就開啟了背壓機制。
2. spark.streaming.backpressure.initialRate
默認沒設置,初始速率。第一次啟動的時候每個receiver接受數據的最大值。
3. spark.streaming.receiver.maxRate
默認值沒設置。每個接收器將接收數據的最大速率(每秒記錄數)。
實際上,每個流每秒最多將消費此數量的記錄。 將此配置設置為0或負數將不會對速率進行限制。
10。 spark.streaming.stopGracefullyOnShutdown
on yarn 模式kill的時候是立即終止程序的,無效。
11. 在產生job的時候會將當前job有效范圍的所有block組裝成一個blockrdd,一個block對應一個分區。
圖解
未加入wal的基于recevier的dstream
加入wal的Dstream
存checkpoint和wal的過程
故障恢復圖解
以上是“receiver based Dstream怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。