小編給大家分享一下receiver based Dstream怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站服務項目包括西寧網(wǎng)站建設、西寧網(wǎng)站制作、西寧網(wǎng)頁制作以及西寧網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西寧網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到西寧省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
使用注意事項
1. receiver 會像正常task一樣,由driver調(diào)度到executor,并占用一個cpu,與正常task不同,receiver是常駐線程
2. receiver個數(shù) KafkaUtils.createStream調(diào)用次數(shù)決定,調(diào)用一次產(chǎn)生一個receiver
3. al topicMap = Map("page_visits" -> 1) map的value對應的數(shù)值實際上是消費的線程個數(shù)。
前情:基于reciver kafka java客戶端消費者高階API
4. receiver 默認 200ms 生成一個block,spark.streaming.blockInterval默認值是200ms。最小建議是50ms,小于該值,性能不好,比如task加載比重就比較大了。每秒鐘大于50個任務,那么將任務加載分發(fā)執(zhí)行就會成為一種負擔。
根據(jù)數(shù)據(jù)量來調(diào)整block的生成周期。
5. receiver接收的block會放入blockmananger,每個executor都會有一個blockmanager實例,由于數(shù)據(jù)的本地性,那么存在recever的executor會被調(diào)度執(zhí)行更多的task,就會導致某些executor比較空閑。
a). 增加executor
b). repartition增加分區(qū)
c). 調(diào)整數(shù)據(jù)本地性 spark.locality.wait 假如任務都是3s以內(nèi)執(zhí)行結(jié)束,就會導致越來越多的任務調(diào)度到數(shù)據(jù)存在的executor上執(zhí)行,最終導致executor執(zhí)行的任務失衡。
6. kafka 082 高階消費者api,有分組的概念。當然就會產(chǎn)生一個問題,消費者組內(nèi)的線程數(shù),和kafka分區(qū)數(shù)的對應關系。
7. checkpoint 目的是從driver故障恢復或者恢復upstatebykey等狀態(tài)
8. wal,預寫日志,為了故障恢復,實現(xiàn)了最少一次消費。一是沒必要多副本,尤其是基于hdfs的存儲。然后為了效率,可以關閉wal。使能wal只需要將spark.streaming.receiver.writeAheadLog.enable配置為true,默認值是false
9 限制消費者最大速率
1. spark.streaming.backpressure.enabled
默認是false,設置為true,就開啟了背壓機制。
2. spark.streaming.backpressure.initialRate
默認沒設置,初始速率。第一次啟動的時候每個receiver接受數(shù)據(jù)的最大值。
3. spark.streaming.receiver.maxRate
默認值沒設置。每個接收器將接收數(shù)據(jù)的最大速率(每秒記錄數(shù))。
實際上,每個流每秒最多將消費此數(shù)量的記錄。 將此配置設置為0或負數(shù)將不會對速率進行限制。
10。 spark.streaming.stopGracefullyOnShutdown
on yarn 模式kill的時候是立即終止程序的,無效。
11. 在產(chǎn)生job的時候會將當前job有效范圍的所有block組裝成一個blockrdd,一個block對應一個分區(qū)。
圖解
未加入wal的基于recevier的dstream
加入wal的Dstream
存checkpoint和wal的過程
故障恢復圖解
以上是“receiver based Dstream怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!