亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Spark 數(shù)據(jù)傾斜調(diào)優(yōu)10策(一)

Spark 數(shù)據(jù)傾斜調(diào)優(yōu)10策(一)

來源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2022-06-22 17:37:31 1655890651

  何謂數(shù)據(jù)傾斜?數(shù)據(jù)傾斜指的是并行處理的數(shù)據(jù)集中,某一部分(如Spark或Kafka的一個(gè)Partition)的數(shù)據(jù)顯著多于其它部分,從而使得該部分的處理速度成為整個(gè)數(shù)據(jù)集處理的瓶頸。

  一、數(shù)據(jù)傾斜概述

  1.1 什么是數(shù)據(jù)傾斜

  對Hadoop、Spark、Flink這樣的大數(shù)據(jù)系統(tǒng)來講,數(shù)據(jù)量大并不可怕,可怕的是數(shù)據(jù)傾斜。

  何謂數(shù)據(jù)傾斜?數(shù)據(jù)傾斜指的是,并行處理的數(shù)據(jù)集中,某一部分(如Spark或Kafka的一個(gè)Partition)的數(shù)據(jù)顯著多于其它部分,從而使得該部分的處理速度成為整個(gè)數(shù)據(jù)集處理的瓶頸。

  對于分布式系統(tǒng)而言,理想情況下,隨著系統(tǒng)規(guī)模(節(jié)點(diǎn)數(shù)量)的增加,應(yīng)用整體耗時(shí)線性下降。如果一臺(tái)機(jī)器處理一批大量數(shù)據(jù)需要120分鐘,當(dāng)機(jī)器數(shù)量增加到三時(shí),理想的耗時(shí)為120 / 3 = 40分鐘,如下圖所示

 

Spark數(shù)據(jù)傾斜調(diào)優(yōu)10策1

 

  但是,上述情況只是理想情況,實(shí)際上將單機(jī)任務(wù)轉(zhuǎn)換成分布式任務(wù)后,會(huì)有overhead,使得總的任務(wù)量較之單機(jī)時(shí)有所增加,所以每臺(tái)機(jī)器的執(zhí)行時(shí)間加起來比單臺(tái)機(jī)器時(shí)更大。這里暫不考慮這些overhead,假設(shè)單機(jī)任務(wù)轉(zhuǎn)換成分布式任務(wù)后,總?cè)蝿?wù)量不變。

  但即使如此,想做到分布式情況下每臺(tái)機(jī)器執(zhí)行時(shí)間是單機(jī)時(shí)的1 / N,就必須保證每臺(tái)機(jī)器的任務(wù)量相等。不幸的是,很多時(shí)候,任務(wù)的分配是不均勻的,甚至不均勻到大部分任務(wù)被分配到個(gè)別機(jī)器上,其它大部分機(jī)器所分配的任務(wù)量只占總得的小部分。比如一臺(tái)機(jī)器負(fù)責(zé)處理80%的任務(wù),另外兩臺(tái)機(jī)器各處理10%的任務(wù),如下圖所示

Spark數(shù)據(jù)傾斜調(diào)優(yōu)10策2

 

  1.2 數(shù)據(jù)傾斜發(fā)生時(shí)的現(xiàn)象

  • 絕大多數(shù) task 執(zhí)行得都非常快,但個(gè)別 task 執(zhí)行極慢。比如,總共有 1000 個(gè) task,997 個(gè) task 都在 1 分鐘之內(nèi)執(zhí)行完了,但是剩余兩三個(gè) task 卻要一兩個(gè)小時(shí)。這種情況很常見。

  • 原本能夠正常執(zhí)行的 Spark 作業(yè),某天突然報(bào)出 OOM(內(nèi)存溢出)異常,觀察異常棧,是我們寫 的業(yè)務(wù)代碼造成的。這種情況比較少見。

  • Task 類似下圖所示

Spark數(shù)據(jù)傾斜調(diào)優(yōu)10策3

 

  總結(jié):

  1. 大部分任務(wù)都很快執(zhí)行完,用時(shí)也相差無幾,但個(gè)別Task執(zhí)行耗時(shí)很長,整個(gè)應(yīng)用程序一直處于99%左右 的狀態(tài)。

  2. 一直運(yùn)行正常的Spark Application昨晚突然OOM了。

  1.3 數(shù)據(jù)傾斜發(fā)生的原理

  數(shù)據(jù)傾斜的原理很簡單: 在進(jìn)行 shuffle 的時(shí)候,必須將各個(gè)節(jié)點(diǎn)上相同的 key 的數(shù)據(jù)拉取到某個(gè)節(jié)點(diǎn) 上的一個(gè) task 來進(jìn)行處理,比如按照 key 進(jìn)行聚合或 join 等操作。此時(shí)如果某個(gè) key 對應(yīng)的數(shù)據(jù)量特 別大的話,就會(huì)發(fā)生數(shù)據(jù)傾斜。比如大部分 key 對應(yīng) 10 條數(shù)據(jù),但是個(gè)別 key 卻對應(yīng)了 100 萬條數(shù) 據(jù),那么大部分 task 可能就只會(huì)分配到 10 條數(shù)據(jù),然后 1 秒鐘就運(yùn)行完了;但是個(gè)別 task 可能分配 到了 100 萬數(shù)據(jù),要運(yùn)行一兩個(gè)小時(shí)。因此,整個(gè) Spark 作業(yè)的運(yùn)行進(jìn)度是由運(yùn)行時(shí)間最長的那個(gè) task 決定的。

  因此出現(xiàn)數(shù)據(jù)傾斜的時(shí)候,Spark 作業(yè)看起來會(huì)運(yùn)行得非常緩慢,甚至可能因?yàn)槟硞€(gè) task 處理的數(shù)據(jù) 量過大導(dǎo)致內(nèi)存溢出。

  下圖就是一個(gè)很清晰的例子:hello 這個(gè) key,在三個(gè)節(jié)點(diǎn)上對應(yīng)了總共 7 條數(shù)據(jù),這些數(shù)據(jù)都會(huì)被拉 取到同一個(gè)task中進(jìn)行處理;而world 和 you 這兩個(gè) key 分別才對應(yīng) 1 條數(shù)據(jù),所以另外兩個(gè) task 只 要分別處理 1 條數(shù)據(jù)即可。此時(shí)第一個(gè) task 的運(yùn)行時(shí)間可能是另外兩個(gè) task 的 7 倍,而整個(gè) stage 的 運(yùn)行速度也由運(yùn)行最慢的那個(gè) task 所決定。

Spark數(shù)據(jù)傾斜調(diào)優(yōu)10策4

 

  總結(jié):

  * 數(shù)據(jù)傾斜發(fā)生的本質(zhì),就是在執(zhí)行多階段的計(jì)算的時(shí)候,中間的shuffle策略可能導(dǎo)致分發(fā)到下 游Task的數(shù)據(jù)量不均勻,進(jìn)而導(dǎo)致下游Task執(zhí)行時(shí)長的不一致。不完全均勻是正常的,但是如果相差太大,那么就產(chǎn)生性能問題了。

  1.4 數(shù)據(jù)傾斜的危害

  從上圖可見,當(dāng)出現(xiàn)數(shù)據(jù)傾斜時(shí),小量任務(wù)耗時(shí)遠(yuǎn)高于其它任務(wù),從而使得整體耗時(shí)過大,未能充分發(fā) 揮分布式系統(tǒng)的并行計(jì)算優(yōu)勢。另外,當(dāng)發(fā)生數(shù)據(jù)傾斜時(shí),

  少量部分任務(wù)處理的數(shù)據(jù)量過大,可能造成 內(nèi)存不足使得任務(wù)失敗,并進(jìn)而引進(jìn)整個(gè)應(yīng)用失敗。如果應(yīng)用并沒有因此失敗,但是大量正常任務(wù)都早 早完成處于等待狀態(tài),資源得不到充分利用。

  總結(jié):

  1. 整體耗時(shí)過大(整個(gè)任務(wù)的完成由執(zhí)行時(shí)間最長的那個(gè)Task決定)

  2. 應(yīng)用程序可能異常退出(某個(gè)Task執(zhí)行時(shí)處理的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于正常節(jié)點(diǎn),則需要的資源容易出現(xiàn)瓶頸, 當(dāng)資源不足,則應(yīng)用程序退出)

  3. 資源閑置(處理等待狀態(tài)的Task資源得不到及時(shí)的釋放,處于閑置浪費(fèi)狀態(tài))

  1.5 數(shù)據(jù)傾斜是如何造成的

  在 Spark 中,同一個(gè) Stage 的不同 Partition 可以并行處理,而具有依賴關(guān)系的不同 Stage 之間是串行 處理的。假設(shè)某個(gè) Spark Job 分為Stage0 和 Stage1 兩個(gè) Stage,且 Stage1 依賴于 Stage0,那 Stage0 完全處理結(jié)束之前不會(huì)處理 Stage1。而 Stage0 可能包含 N 個(gè)Task,這 N 個(gè) Task 可以并行進(jìn)行。如 果其中 N-1 個(gè) Task 都在 10 秒內(nèi)完成,而另外一個(gè) Task 卻耗時(shí) 1 分鐘,那該 Stage 的總時(shí)間至少為 1 分鐘。換句話說,一個(gè) Stage 所耗費(fèi)的時(shí)間,主要由最慢的那個(gè) Task 決定。由于同一個(gè) Stage 內(nèi)的所有 Task 執(zhí)行相同的計(jì)算,在排除不同計(jì)算節(jié)點(diǎn)計(jì)算能力差異的前提下,不同 Task 之間耗時(shí)的差異主要由該 Task 所處理的數(shù)據(jù)量決定。Stage 的數(shù)據(jù)來源主要分為如下兩類:

  1. 數(shù)據(jù)源本身分布有問題:從數(shù)據(jù)源直接讀取。如讀取HDFS,Kafka,有可能出現(xiàn),大概率不會(huì)

  2. 自己指定的分區(qū)規(guī)則:讀取上一個(gè) Stage 的 Shuffle 數(shù)據(jù)

  樸素的分布式計(jì)算的核心思想:

  1. 大問題拆分成小問題:分而治之

  2. 既然要分開算,那最后就一定要把分開計(jì)算的那么多的小 Task 的結(jié)果執(zhí)行匯總

  3. 所以必然分布式計(jì)算引擎的設(shè)計(jì)中,應(yīng)用程序的執(zhí)行一定是分階段

  4. 分布計(jì)算引擎的而核心:一個(gè)復(fù)雜的分布式計(jì)算應(yīng)用程序的執(zhí)行肯定要分成多個(gè)階段,每個(gè)階段分布式并 行運(yùn)行多個(gè)Task

  5. DAG引擎:

  Spark: stage1 ==> stage2 ===> stage3

  mapreduce: 就只有兩個(gè)階段:mapper reducer

  階段與階段之間需要進(jìn)行 shuffle,只要進(jìn)行了數(shù)據(jù)混洗,就存在著數(shù)據(jù)分發(fā)不均勻的情況。如果情況嚴(yán) 重,就是數(shù)據(jù)傾斜。

  分布式計(jì)算引擎的設(shè)計(jì),免不了有shuffle,既然有shuffle操作,就一定有產(chǎn)生數(shù)據(jù)傾斜的可能。如果 你是做大數(shù)據(jù)處理的,就一定會(huì)遇到 數(shù)據(jù)傾斜!

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個(gè)全面的物聯(lián)網(wǎng)開發(fā)平臺(tái),它為眾多硬件平臺(tái)和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動(dòng)備份有什么區(qū)別?

1、定義和目標(biāo)不同云快照的主要目標(biāo)是提供一種快速恢復(fù)數(shù)據(jù)的方法,它只記錄在快照時(shí)間點(diǎn)后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動(dòng)備份的主要目標(biāo)...詳情>>

2023-10-14 12:48:59
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲(chǔ),而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語言是一種以簡潔和有效性為目標(biāo)的編程語言,因此在設(shè)計(jì)過程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
色翁荡息又大又硬又粗又爽| 人妻人人做人碰人人添青青| 欧美性爱视频第一页| 少妇人妻综合久久中文888| 亚洲AⅤ中文无码字幕色| 亚洲中文字幕精品久久| ZOOM与人性ZOOM2区别| 国产福利一区二区久久| 久久精品WWW人人做人人爽| 女女互揉吃奶揉到高潮视频| 深灬深灬深灬深灬一点| 亚洲欧美日韩在线不卡| SHOPIFY日本站5ZAWW| 国产精品无码久久久久久久久久 | 亚洲日韩一区二区三区| JAPANESETUBE日本护士高潮| 国产老妇伦国产熟女老妇高清| 久久水蜜桃亚洲AV无码精品麻豆| 日本三级在线播放线观看视频| 亚洲AV无码久久久久久精品同性| 4399理论片午午伦夜理片| 国产成人无码AV| 久久综合九色综合久99| 双腿张开被9个男人调教| 一本大道香蕉在线精品| 风流老太婆大BBWBBWHD| 在教室伦流澡到高潮HGL视频| 边做边爱免费完整版视频播放| 韩国免费A级毛片| 人妻色欲AV无码专区精油按摩| 性色AV免费网站| CHINESEHD国产精品麻豆| 国产真实伦在线观看| 欧美一区二区三区久久综合| 亚洲AV综合色区无码二区爱AV | 亚洲综合成人AⅤ在线网站| 成人免费午夜无码视频| 久久精品国产亚洲AV网站| 肉感妇BBWBBWBBWBBW| 一本一道AⅤ无码中文字幕| 国产成人亚洲精品无码MP4| 美女黄网站免费福利视频| 性色AV一区二区三区| 锕锕锕锕锕锕~好痛APP下载| 精品久久久久久中文字幕202| 色窝窝人妻9色聚色窝| 在线中文天堂最新版WWW| 国产美女被遭强高潮免费网站| 欧美群交射精内射颜射潮喷| 亚洲国产一二三精品无码| 丁香五月婷激情综合第九色| 蜜臀av无码少妇一区二区三区| 亚洲AV极品熟妇一品二品三品| 爆乳一区二区三区无码| 久久人人97超碰精品| 亚洲AⅤ无码专区在线观看Q| 成人拳交喷水在线播放| 免费AV资源网站| 亚洲精品少妇XXXX| 国产精品久久久久精品| 人妻无码精品久久亚瑟影视| 婬乱丰满熟妇XXXXX性69| 国产一精品一AV一免费| 搡BBBB搡BBB搡五十| 99RE6热这里只精品首页| 精品人妻一区二区三区蜜桃 | 国产精品国产三级国产专播| 欧美熟妇另类久久久久久多毛 | 欧美极品少妇XXXXⅩ喷水| 亚洲日韩精品一区二区三区| 国产精品永久久久久久久久久 | 欧美黑人一区二区| 夜夜爽妓女8888视频免费观看| 国产午夜无码精品免费看动漫| 少妇又粗又大人妻无码| www.性xxxxx| 免费体验120秒视频| 亚洲午夜无码毛片av| 国内自产少妇自拍区免费| 撕掉她的衣服吮的双乳游戏| 草木影视在线视频免费观看| 欧妇女乱妇女乱视频| 又黄又无遮挡AAAAA毛片| 精品人妻一区二区三区浪潮在线| 亚洲AV 无码片一区二区三区| 国产成人精品视频ⅤA秋霞影院 | 动性配人ⅩXXXX配| 强被迫伦姧在线观看中文版| 重囗味sm在线观看无码| 久久久亚洲熟妇熟一区二区| 亚洲日韩精品A∨片无码| 黑人荫道BBWBBB大荫道| 亚洲AV成人精品五区| 国产精品天干天干在线观看| 视频一区二区三区在线观看蜜桃 | 国产日产欧产精品精品蜜芽| 四虎AV永久在线精品免费观看| 成人免费一区二区三区视频软件| 欧美做受又硬又粗又大视频| a 成 人小说网站在线观看| 蜜臀久久久久精品久久久| 一本色道久久综合一| 久久久久精品午夜福利| 亚洲人成在线观看无码| 精品无人区麻豆乱码1区2区新区| 亚洲高清国产拍精品熟女| 韩国免费A级作爱片视频| 亚洲AV午夜成人影院老师机影院| 国产欧美亚洲日韩图片| 午夜精品一区二区三区在线观看| 国产精品久久福利新婚之夜| 无码国产成人午夜电影在线观看| 国产成人无码精品久久久露脸| 天堂AV亚洲ITV在线AⅤ| 疯狂做爰XXXⅩ高潮69短| 色综合色综合久久综合频道88| 俄罗斯POMOGISEBE| 天天躁日日躁狠狠躁一区| 国产护士在线视频XXXX免费| 无码日韩精品一区二区免费| 国产精品无码无片在线观看| 新妺妺窝人体色7777婷婷| 国精产品一二二区传媒有哪些 | 欧美肉欲XXⅩOOO性| 啊灬啊灬啊灬快灬高潮少| 欧洲一本到卡二卡三卡乱码| www.内射孕妇网站入口| 日韩无人区码卡二卡3卡2022| 高清播放器欧美大片| 无码少妇一区二区三区视频| 国内偷窥一区二区三区视频| 亚洲欧美另类在线| 乱中年女人伦AV一区二区| 97人妻碰碰碰久久久久禁片| 人人妻人人澡人人爽精品日本 | 久久亚洲中文字幕无码| 再深点灬舒服灬太大了添视频软件| 男人靠女人免费视频网站| 锕锕锕锕锕锕锕好疼免费看网站 | 人妻精品久久久久中文字幕| 吃奶呻吟打开双腿做受视频免费| 无码人妻精品丰满熟妇区| 国色天香精品卡一卡二卡三二百 | 国产精品自产拍在线观看| 久久久精品人妻一区二区三区GV| 在线观看特色大片免费视频| 欧美日韩一区二区三区自拍 | 粗大挺进尤物人妻中文字幕| 无码人妻品一区二区三区精99| 极品VPSWINDOWS少妇| 玉蒲团Ⅲ艳乳欲仙欲| 人妻中文字幕在线| 国产精品无码一区二区三区在| 亚洲乱码日产精品B| 免费视频成人片在线观看| 波多野结衣在线观看av| 无码中文字幕加勒比一本二本| 精品久久久99大香线蕉| 18禁裸乳无遮挡啪啪无码免费| 日本熟妇人妻XXXXX野外呻| 国产强被迫伦姧在线观看无码| 亚洲色欲色欲欲WWW在线| 欧美激情精品久久久久久| 国产99久久精品一区二区| 亚洲成A人片在线观看无码 | 久久精品国产精品国产一区| 99无人区码一码二码三码四码| 水蜜桃国产成人精品网站| 精品国产乱码久久久久久郑州公司 | 日本真人边吃奶边做爽动态图| 国产日韩亚洲大尺度高清| 在线观看韩国电影| 色欲欲WWW成人网站| 狠狠噜天天噜日日噜视频跳一跳 | 免费看黄的成人APP| 二级毛片免费视频播放| 亚洲鲁丝片一区二区三区| 欧美日韩精品一区二区三区不卡 | 亚欧洲精品在线视频免费观看| 麻豆一二三四区乱码| 多毛小姐BGMBGMBGM| 亚洲日韩国产一区二区蜜桃| 人妻无码ΑV中文字幕久久琪琪布| 国产性自爱拍偷在在线播放| 中文字幕无码日韩专区免费| 天天躁日日躁狠狠躁欧美老妇| 精品无码成人网站久久久久久| YY影院电视剧大全| 亚洲AV中文无码乱人伦在线咪咕 | 中文字幕亚洲日韩无线码| 天天狠天天透天天伊人| 巨爆乳寡妇中文在线观看| 高雅人妻被迫沦为玩物| 一本岛V免费不卡一二三区| 少妇久久久久久人妻无码| 久久婷婷五月综合色欧美| 国产成人精品亚洲一区| 中文字幕日韩人妻不卡一区| 性饥渴少妇XXXXⅩHD| 强 暴 疼 哭 处 女|