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