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