資料介紹
什么是數(shù)據(jù)傾斜?
對(duì) Spark/Hadoop 這樣的分布式大數(shù)據(jù)系統(tǒng)來講,數(shù)據(jù)量大并不可怕,可怕的是數(shù)據(jù)傾斜。
對(duì)于分布式系統(tǒng)而言,理想情況下,隨著系統(tǒng)規(guī)模(節(jié)點(diǎn)數(shù)量)的增加,應(yīng)用整體耗時(shí)線性下降。如果一臺(tái)機(jī)器處理一批大量數(shù)據(jù)需要 120 分鐘,當(dāng)機(jī)器數(shù)量增加到 3 臺(tái)時(shí),理想的耗時(shí)為 120 / 3 = 40 分鐘。但是,想做到分布式情況下每臺(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ù)。
『不患多而患不均』,這是分布式計(jì)算環(huán)境下最大的問題。意味著計(jì)算能力不是線性擴(kuò)展的,而是存在短板效應(yīng): 一個(gè) Stage 所耗費(fèi)的時(shí)間,是由最慢的那個(gè) Task 決定。
由于同一個(gè) Stage 內(nèi)的所有 task 執(zhí)行相同的計(jì)算,在排除不同計(jì)算節(jié)點(diǎn)計(jì)算能力差異的前提下,不同 task 之間耗時(shí)的差異主要由該 task 所處理的數(shù)據(jù)量決定。所以,要想發(fā)揮分布式系統(tǒng)并行計(jì)算的優(yōu)勢(shì),就必須解決數(shù)據(jù)傾斜問題。
數(shù)據(jù)傾斜的危害
當(dāng)出現(xiàn)數(shù)據(jù)傾斜時(shí),小量任務(wù)耗時(shí)遠(yuǎn)高于其它任務(wù),從而使得整體耗時(shí)過大,未能充分發(fā)揮分布式系統(tǒng)的并行計(jì)算優(yōu)勢(shì)。
另外,當(dāng)發(fā)生數(shù)據(jù)傾斜時(shí),部分任務(wù)處理的數(shù)據(jù)量過大,可能造成內(nèi)存不足使得任務(wù)失敗,并進(jìn)而引進(jìn)整個(gè)應(yīng)用失敗。
數(shù)據(jù)傾斜的現(xiàn)象
當(dāng)發(fā)現(xiàn)如下現(xiàn)象時(shí),十有八九是發(fā)生數(shù)據(jù)傾斜了:
絕大多數(shù) task 執(zhí)行得都非??欤珎€(gè)別 task 執(zhí)行極慢,整體任務(wù)卡在某個(gè)階段不能結(jié)束。
原本能夠正常執(zhí)行的 Spark 作業(yè),某天突然報(bào)出 OOM(內(nèi)存溢出)異常,觀察異常棧,是我們寫的業(yè)務(wù)代碼造成的。這種情況比較少見。
TIPS:
在 Spark streaming 程序中,數(shù)據(jù)傾斜更容易出現(xiàn),特別是在程序中包含一些類似 sql 的 join、group 這種操作的時(shí)候。因?yàn)?Spark Streaming 程序在運(yùn)行的時(shí)候,我們一般不會(huì)分配特別多的內(nèi)存,因此一旦在這個(gè)過程中出現(xiàn)一些數(shù)據(jù)傾斜,就十分容易造成 OOM。
數(shù)據(jù)傾斜的原因
在進(jìn)行 shuffle 的時(shí)候,必須將各個(gè)節(jié)點(diǎn)上相同的 key 拉取到某個(gè)節(jié)點(diǎn)上的一個(gè) task 來進(jìn)行處理,比如按照 key 進(jìn)行聚合或 join 等操作。此時(shí)如果某個(gè) key 對(duì)應(yīng)的數(shù)據(jù)量特別大的話,就會(huì)發(fā)生數(shù)據(jù)傾斜。比如大部分 key 對(duì)應(yīng)10條數(shù)據(jù),但是個(gè)別 key 卻對(duì)應(yīng)了100萬條數(shù)據(jù),那么大部分 task 可能就只會(huì)分配到10條數(shù)據(jù),然后1秒鐘就運(yùn)行完了;但是個(gè)別 task 可能分配到了100萬數(shù)據(jù),要運(yùn)行一兩個(gè)小時(shí)。
因此出現(xiàn)數(shù)據(jù)傾斜的時(shí)候,Spark 作業(yè)看起來會(huì)運(yùn)行得非常緩慢,甚至可能因?yàn)槟硞€(gè) task 處理的數(shù)據(jù)量過大導(dǎo)致內(nèi)存溢出。
- Linux的內(nèi)核定制方法詳細(xì)說明 22次下載
- Linux的內(nèi)核定制方法詳細(xì)說明 4次下載
- 如何使用Python繪制PDF文件教程詳細(xì)說明 12次下載
- ABB報(bào)警代碼及處理方法詳細(xì)說明 3次下載
- 西門子PLC培訓(xùn)資料之數(shù)據(jù)塊中的數(shù)據(jù)存儲(chǔ)詳細(xì)說明 15次下載
- RTD系列板卡升級(jí)操作方法詳細(xì)說明 8次下載
- 提高LabVIEW開發(fā)速度的方法有哪些25個(gè)技巧詳細(xì)說明 19次下載
- 測(cè)試比較四種Arduino Nano全新型號(hào)的數(shù)據(jù)詳細(xì)說明 25次下載
- 5種數(shù)據(jù)庫的SQL語句大全詳細(xì)說明 8次下載
- 使用SQL語句創(chuàng)建數(shù)據(jù)庫的實(shí)例詳細(xì)說明 19次下載
- SQL的常用命令使用方法詳細(xì)說明 12次下載
- 51單片機(jī)無法燒錄程序應(yīng)該如何解決詳細(xì)方法說明
- Matlab圖形繪制經(jīng)典案例詳細(xì)說明 7次下載
- PHP八種變量類型的詳細(xì)資料說明 7次下載
- 八種常見汽車懸掛系統(tǒng)詳細(xì)說明 17次下載
- 重新分配FlexRAM的方法 1529次閱讀
- PIC系列單片機(jī)程序設(shè)計(jì)基礎(chǔ)知識(shí)詳細(xì)說明 4303次閱讀
- C語言和C++的特點(diǎn)與用法詳細(xì)說明 4216次閱讀
- FPGA的入門基礎(chǔ)知識(shí)詳細(xì)說明 9212次閱讀
- 使用AT89S51單片機(jī)制作紅外遙控器的資料和源代碼詳細(xì)說明 5863次閱讀
- 電腦無法識(shí)別U盤應(yīng)該如何解決詳細(xì)方法說明 1.2w次閱讀
- 常用穩(wěn)壓二極管的參數(shù)表格詳細(xì)說明 1.3w次閱讀
- 電氣電纜的最全常用手冊(cè)詳細(xì)說明 8632次閱讀
- 機(jī)器學(xué)習(xí)實(shí)例:Spark與Python結(jié)合設(shè)計(jì) 2706次閱讀
- 一文讀懂 Spark 內(nèi)存管理 914次閱讀
- 詳細(xì)putty串口使用教程與八大使用技巧分享 7.5w次閱讀
- 接收卡升級(jí)的詳細(xì)說明概述圖文詳解 2.3w次閱讀
- 基于AD9854產(chǎn)生MSK調(diào)制信號(hào)詳細(xì)說明 4727次閱讀
- 音響功放接線圖解及詳細(xì)說明 93.6w次閱讀
- 在ISE中直接調(diào)用chipscope進(jìn)行在線邏輯分析(2) 4935次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1490次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費(fèi)
- 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
- 7藍(lán)牙設(shè)備在嵌入式領(lǐng)域的廣泛應(yīng)用
- 0.63 MB | 3次下載 | 免費(fèi)
- 89天練會(huì)電子電路識(shí)圖
- 5.91 MB | 3次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多