本篇文章給大家分享的是有關如何解析SparkStreaming推測機制,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)秉承實現(xiàn)全網(wǎng)價值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站建設、網(wǎng)站制作,微信小程序開發(fā),網(wǎng)頁設計制作,成都手機網(wǎng)站制作,成都全網(wǎng)營銷幫助傳統(tǒng)企業(yè)實現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻自己的專業(yè)和所長。
什么是推測機制?
如果有很多個task都在運行,很多task一下就完成了自己的任務,但是有一個task運行的很慢。在實時計算任務中,如果對實時性要求比較高,就算是兩三秒也要在乎這些。
所以在sparkstreaming中有一個推測機制專門來解決這個運行的很慢的task。
每隔一段時間來檢查有哪些正在運行的task需要重新調(diào)度,假設總的task有10個,成功運行的task數(shù)量>0.75x10,正在運行的task的運行時間>1.5x成功運行task的平均時間,則這個正在運行的task需要重新等待調(diào)度。
但是這里有一個很嚴重的問題,最開始自學的時候發(fā)現(xiàn)了,接著在看一些機構(gòu)視頻里面也有講到這個問題。
這個問題就是如果這個正在運行的task遇到數(shù)據(jù)傾斜怎么辦?
假如有5個task,有一個task遇到了數(shù)據(jù)傾斜,但就算遇到數(shù)據(jù)傾斜(稍微有點數(shù)據(jù)傾斜,也沒事),它也會完成任務,它需要6s,其他4個任務只需要1s。那開啟推測機制后,這個任務好不容易運行到了2s,快要成功了,但遇到了推測機制,它就需要重新調(diào)度重新運行,下一次運行了3s,遇到推測機制就會重新運行,整個過程一直在循環(huán),這就是小編要說的問題!
那開啟推測機制遇到數(shù)據(jù)傾斜,怎么辦?
我們可以采用一些解決數(shù)據(jù)傾斜的辦法,大致講一下關于數(shù)據(jù)傾斜的幾個解決方案:
1、如果發(fā)現(xiàn)導致數(shù)據(jù)傾斜的key就幾個,而且對計算本身的影響并不大的話,就可以采用過濾少數(shù)導致傾斜的key
2、兩階段聚合,將原本相同的key通過附加隨機前綴的方式,變成多個不同的key,就可以讓原本被一個task處理的數(shù)據(jù)分散到多個task上去做局部聚合,進而解決單個task處理數(shù)據(jù)量過多的問題。接著去除掉隨機前綴,再次進行全局聚合,就可以得到最終的結(jié)果。但是這個方法只適用于聚合類的shuffle操作,不適合join類的shuffle操作。
3、對于join導致的數(shù)據(jù)傾斜,如果只是某幾個key導致了傾斜,可以將少數(shù)幾個key分拆成獨立RDD,并附加隨機前綴打散成n份去進行join,此時這幾個key對應的數(shù)據(jù)就不會集中在少數(shù)幾個task上,而是分散到多個task進行join了。適用于兩個數(shù)據(jù)量比較大的表進行join。
4、如果在進行join操作時,RDD中有大量的key導致數(shù)據(jù)傾斜,那么進行分拆key也沒什么意義,此時就只能使用這一種方案來解決問題了。將原先一樣的key通過附加隨機前綴變成不一樣的key,然后就可以將這些處理后的“不同key”分散到多個task中去處理,而不是讓一個task處理大量的相同key。
以上就是如何解析SparkStreaming推測機制,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。