您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何解析SparkStreaming推測機制,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
什么是推測機制?
如果有很多個task都在運行,很多task一下就完成了自己的任務,但是有一個task運行的很慢。在實時計算任務中,如果對實時性要求比較高,就算是兩三秒也要在乎這些。
所以在sparkstreaming中有一個推測機制專門來解決這個運行的很慢的task。
每隔一段時間來檢查有哪些正在運行的task需要重新調度,假設總的task有10個,成功運行的task數量>0.75x10,正在運行的task的運行時間>1.5x成功運行task的平均時間,則這個正在運行的task需要重新等待調度。
但是這里有一個很嚴重的問題,最開始自學的時候發現了,接著在看一些機構視頻里面也有講到這個問題。
這個問題就是如果這個正在運行的task遇到數據傾斜怎么辦?
假如有5個task,有一個task遇到了數據傾斜,但就算遇到數據傾斜(稍微有點數據傾斜,也沒事),它也會完成任務,它需要6s,其他4個任務只需要1s。那開啟推測機制后,這個任務好不容易運行到了2s,快要成功了,但遇到了推測機制,它就需要重新調度重新運行,下一次運行了3s,遇到推測機制就會重新運行,整個過程一直在循環,這就是小編要說的問題!
那開啟推測機制遇到數據傾斜,怎么辦?
我們可以采用一些解決數據傾斜的辦法,大致講一下關于數據傾斜的幾個解決方案:
1、如果發現導致數據傾斜的key就幾個,而且對計算本身的影響并不大的話,就可以采用過濾少數導致傾斜的key
2、兩階段聚合,將原本相同的key通過附加隨機前綴的方式,變成多個不同的key,就可以讓原本被一個task處理的數據分散到多個task上去做局部聚合,進而解決單個task處理數據量過多的問題。接著去除掉隨機前綴,再次進行全局聚合,就可以得到最終的結果。但是這個方法只適用于聚合類的shuffle操作,不適合join類的shuffle操作。
3、對于join導致的數據傾斜,如果只是某幾個key導致了傾斜,可以將少數幾個key分拆成獨立RDD,并附加隨機前綴打散成n份去進行join,此時這幾個key對應的數據就不會集中在少數幾個task上,而是分散到多個task進行join了。適用于兩個數據量比較大的表進行join。
4、如果在進行join操作時,RDD中有大量的key導致數據傾斜,那么進行分拆key也沒什么意義,此時就只能使用這一種方案來解決問題了。將原先一樣的key通過附加隨機前綴變成不一樣的key,然后就可以將這些處理后的“不同key”分散到多個task中去處理,而不是讓一個task處理大量的相同key。
以上就是如何解析SparkStreaming推測機制,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。