———————————————————————————————————
「無意中發現了乙個巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看**一樣!覺得太牛了,所以分享給大家。點這裡可以跳轉到教程。」。
大資料面試寶典目錄,
一、mapreduce 程式效率的瓶頸在於兩點:
1) 計算機效能
cpu、記憶體、磁碟健康、網路
2) i/o 操作優化
(1) 資料傾斜
(2) map 和reduce 數設定不合理
(3) reduce 等待過久
(4) 小檔案過多
(5) 大量的不可分塊的超大檔案
(6) spill 次數過多
(7) merge 次數過多等。
二、mapreduce優化方法(☆☆☆☆☆)
1)資料輸入:
(1)合併小檔案:在執行mr 任務前將小檔案進行合併,大量的小檔案會產生大量的map 任務,增
大map 任務裝載次數,而任務的裝載比較耗時,從而導致mr 執行較慢。
(2)採用conbinfileinputformat 來作為輸入,解決輸入端大量小檔案場景。
2)map 階段
(1)減少spill 次數:通過調整io.sort.mb 及sort.spill.percent 引數值,增大觸發spill 的記憶體上限,
減少spill 次數,從而減少磁碟io。
(2)減少merge 次數:通過調整io.sort.factor 引數,增大merge 的檔案數目,減少merge 的次數,
從而縮短mr 處理時間。
(3)在map 之後先進行combine 處理,減少i/o。
3)reduce 階段
(1)合理設定map 和reduce 數:兩個都不能設定太少,也不能設定太多。太少,會導致task 等
待,延長處理時間;太多,會導致map、reduce 任務間競爭資源,造成處理超時等錯誤。
(2)設定map、reduce 共存:調整slowstart.completedmaps 引數,使map 執行到一定程度後,reduce
也開始執行,減少reduce 的等待時間。
(3)規避使用reduce,因為reduce 在用於連線資料集的時候將會產生大量的網路消耗。
(4)合理設定reduc 端的buffer,預設情況下,資料達到乙個閾值的時候,buffer 中的資料就會寫入磁碟,然後reduce 會從磁碟中獲得所有的資料。也就是說,buffer 和educe 是沒有直接關聯的,中間多個乙個寫磁碟->讀磁碟的過程,既然有這個弊端,那麼就可以通過引數來配置,使得buffer 中的一部分資料可以直接輸送到reduce,從而減少io 開銷:mapred.job.reduce.input.buffer.percent,預設為0.0。當值大於0 的時候,會保留指定比例的記憶體讀buffer 中的資料直接拿給reduce 使用。這樣一來,設定buffer 需要記憶體,讀取資料需要記憶體,reduce 計算也要記憶體,所以要根據作業的運**況進行調整。
4)io 傳輸
(1)資料傾斜現象
資料頻率傾斜——某乙個區域的資料量要遠遠大於其他區域。資料大小傾斜——部分記錄的大小遠遠大於平均值。
(2)如何收集傾斜資料
在reduce 方法中加入記錄map 輸出鍵的詳細情況的功能。
public
static
final string max_values =
"skew.maxvalues"
;private
int maxvaluethreshold;
@override
public
void
configure
(jobconf job)
@override
public
void
reduce
(text key, iterator
values, outputcollector
output, reporter reporter)
throws ioexception if(
++i > maxvaluethreshold)}
(3)減少資料傾斜的方法
方法1:抽樣和範圍分割槽
可以通過對原始資料進行抽樣得到的結果集來預設分割槽邊界值。
方法2:自定義分割槽
另乙個抽樣和範圍分割槽的替代方案是基於輸出鍵的背景知識進行自定義分割槽。例如,如果map 輸出鍵的單詞**於一本書。其中大部分必然是省略詞(stopword)。那麼就可以將自定義分割槽將這部分省略詞傳送給固定的一部分reduce 例項。而將其他的都傳送給剩餘的reduce 例項。
方法3:combine
使用combine 可以大量地減小資料頻率傾斜和資料大小傾斜。在可能的情況下,
combine 的目的就是聚合並精簡資料。
6) 常用的調優引數
(1) 資源相關引數
(a) 以下引數是在使用者自己的mr 應用程式中配置就可以生效(mapred-default.xml)
(2) 容錯相關引數(mapreduce 效能優化)
大資料查詢優化方案
1 儲存過程 2 建索引 3 分割槽 把資料分成幾個區存放,搜尋的結果合併。做表分割槽,縮小查詢範圍 按乙個有效字段分割槽,比如按月份 4 表空間 5 我們以前大資料量的解決方案是 把資料分批查出來,一次性查出來是沒有什麼好的解決辦法。6 like 必定掃全表 7 硬體 公升級伺服器,有這麼多資料的...
大資料優化方案 企業案例分析
無意中發現了乙個巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看 一樣!覺得太牛了,所以分享給大家。點這裡可以跳轉到教程。大資料面試寶典目錄,2.搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1 255 位元組。3.有...
大資料量資料分頁查詢優化方案
在實際場景中會遇到這樣的一種情況 資料量很大,而且還要分頁查詢,如果資料量達到百萬級別之後,效能會急劇下降,導致查詢時間很長,甚至是超時。接下來我總結了兩種常用的優化方案,僅供參考。但是需要注意的是有個前提 主鍵id是遞增且資料有序。1 使用子查詢優化 這種方式先定位偏移位置的 id,然後往後查詢,...