首頁技術(shù)文章正文

大數(shù)據(jù)離線階段Day8之MapReduce優(yōu)化參數(shù)

更新時間:2018-10-24 來源:黑馬程序員 瀏覽量:

  1. 資源相關(guān)參數(shù)

  //以下參數(shù)是在用戶自己的MapReduce應(yīng)用程序中配置就可以生效

  (1) mapreduce.map.memory.mb: 一個Map Task可使用的內(nèi)存上限(單位:MB),默認(rèn)為1024。如果Map Task實際使用的資源量超過該值,則會被強(qiáng)制殺死。

  (2) mapreduce.reduce.memory.mb: 一個Reduce Task可使用的資源上限(單位:MB),默認(rèn)為1024。如果Reduce Task實際使用的資源量超過該值,則會被強(qiáng)制殺死。

  (3) mapreduce.map.cpu.vcores: 每個Maptask可用的最多cpu core數(shù)目, 默認(rèn)值: 1

  (4) mapreduce.reduce.cpu.vcores: 每個Reducetask可用最多cpu core數(shù)目默認(rèn)值: 1

  (5) mapreduce.map.java.opts: Map Task的JVM參數(shù),你可以在此配置默認(rèn)的java heap

  size等參數(shù), 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc”

  (@taskid@會被Hadoop框架自動換為相應(yīng)的taskid), 默認(rèn)值: “”

  (6) mapreduce.reduce.java.opts: Reduce Task的JVM參數(shù),你可以在此配置默認(rèn)的java

  heap size等參數(shù), 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc”, 默認(rèn)值: “”

  //應(yīng)該在yarn啟動之前就配置在服務(wù)器的配置文件中才能生效

  (1) yarn.scheduler.minimum-allocation-mb RM中每個容器請求的最小配置,以MB為單位,默認(rèn)1024。

  (2) yarn.scheduler.maximum-allocation-mb RM中每個容器請求的最大分配,以MB為單位,默認(rèn)8192。

  (3) yarn.scheduler.minimum-allocation-vcores 1

  (4)yarn.scheduler.maximum-allocation-vcores 32

  (5) yarn.nodemanager.resource.memory-mb 表示該節(jié)點(diǎn)上YARN可使用的物理內(nèi)存總量,默認(rèn)是8192(MB),注意,如果你的節(jié)點(diǎn)內(nèi)存資源不夠8GB,則需要調(diào)減小這個值,而YARN不會智能的探測節(jié)點(diǎn)的物理內(nèi)存總量。

  //shuffle性能優(yōu)化的關(guān)鍵參數(shù),應(yīng)在yarn啟動之前就配置好

  (1) mapreduce.task.io.sort.mb 100 shuffle的環(huán)形緩沖區(qū)大小,默認(rèn)100m

  (2) mapreduce.map.sort.spill.percent 0.8 環(huán)形緩沖區(qū)溢出的閾值,默認(rèn)80%

  2. 容錯相關(guān)參數(shù)

  (1) mapreduce.map.maxattempts: 每個Map Task最大重試次數(shù),一旦重試參數(shù)超過該值,則認(rèn)為Map Task運(yùn)行失敗,默認(rèn)值:4。

  (2) mapreduce.reduce.maxattempts: 每個Reduce Task最大重試次數(shù),一旦重試參數(shù)超過該值,則認(rèn)為Map Task運(yùn)行失敗,默認(rèn)值:4。

  (3) mapreduce.map.failures.maxpercent: 當(dāng)失敗的Map Task失敗比例超過該值,整個作業(yè)則失敗,默認(rèn)值為0. 如果你的應(yīng)用程序允許丟棄部分輸入數(shù)據(jù),則該該值設(shè)為一個大于0的值,比如5,表示如果有低于5%的Map Task失敗(如果一個Map Task重試次數(shù)超過mapreduce.map.maxattempts,則認(rèn)為這個Map Task失敗,其對應(yīng)的輸入數(shù)據(jù)將不會產(chǎn)生任何結(jié)果),整個作業(yè)扔認(rèn)為成功。

  (4) mapreduce.reduce.failures.maxpercent: 當(dāng)失敗的Reduce Task失敗比例超過該值為,整個作業(yè)則失敗,默認(rèn)值為0.

  (5) mapreduce.task.timeout:如果一個task在一定時間內(nèi)沒有任何進(jìn)入,即不會讀取新的數(shù)據(jù),也沒有輸出數(shù)據(jù),則認(rèn)為該task處于block狀態(tài),可能是臨時卡住,也許永遠(yuǎn)會卡住。為了防止因為用戶程序永遠(yuǎn)block不退出,則強(qiáng)制設(shè)置了一個超時時間(單位毫秒),默認(rèn)是600000,值為0將禁用超時。。

  3. 效率跟穩(wěn)定性參數(shù)

  (1) mapreduce.map.speculative: 是否為Map Task打開推測執(zhí)行機(jī)制,默認(rèn)為true, 如果為true,則可以并行執(zhí)行一些Map任務(wù)的多個實例。

  (2) mapreduce.reduce.speculative: 是否為Reduce Task打開推測執(zhí)行機(jī)制,默認(rèn)為true

  (3)mapreduce.input.fileinputformat.split.minsize: FileInputFormat做切片時最小切片大小,默認(rèn)1。

  (5)mapreduce.input.fileinputformat.split.maxsize: FileInputFormat做切片時最大切片大小

  推測執(zhí)行機(jī)制(Speculative Execution):它根據(jù)一定的法則推測出“拖后腿”的任務(wù),并為這樣的任務(wù)啟動一個備份任務(wù),讓該任務(wù)與原始任務(wù)同時處理同一份數(shù)據(jù),并最終選用最先成功運(yùn)行完成任務(wù)的計算結(jié)果作為最終結(jié)果。



作者 :黑馬程序員大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com

分享到:
在線咨詢 我要報名
和我們在線交談!