更新時(shí)間:2018-10-24 來源:黑馬程序員 瀏覽量:
1. 資源相關(guān)參數(shù)
//以下參數(shù)是在用戶自己的MapReduce應(yīng)用程序中配置就可以生效
(1) mapreduce.map.memory.mb: 一個(gè)Map Task可使用的內(nèi)存上限(單位:MB),默認(rèn)為1024。如果Map Task實(shí)際使用的資源量超過該值,則會(huì)被強(qiáng)制殺死。
(2) mapreduce.reduce.memory.mb: 一個(gè)Reduce Task可使用的資源上限(單位:MB),默認(rèn)為1024。如果Reduce Task實(shí)際使用的資源量超過該值,則會(huì)被強(qiáng)制殺死。
(3) mapreduce.map.cpu.vcores: 每個(gè)Maptask可用的最多cpu core數(shù)目, 默認(rèn)值: 1
(4) mapreduce.reduce.cpu.vcores: 每個(gè)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@會(huì)被Hadoop框架自動(dòng)換為相應(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啟動(dòng)之前就配置在服務(wù)器的配置文件中才能生效
(1) yarn.scheduler.minimum-allocation-mb RM中每個(gè)容器請求的最小配置,以MB為單位,默認(rèn)1024。
(2) yarn.scheduler.maximum-allocation-mb RM中每個(gè)容器請求的最大分配,以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)減小這個(gè)值,而YARN不會(huì)智能的探測節(jié)點(diǎn)的物理內(nèi)存總量。
//shuffle性能優(yōu)化的關(guān)鍵參數(shù),應(yīng)在yarn啟動(dòng)之前就配置好
(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. 容錯(cuò)相關(guān)參數(shù)
(1) mapreduce.map.maxattempts: 每個(gè)Map Task最大重試次數(shù),一旦重試參數(shù)超過該值,則認(rèn)為Map Task運(yùn)行失敗,默認(rèn)值:4。
(2) mapreduce.reduce.maxattempts: 每個(gè)Reduce Task最大重試次數(shù),一旦重試參數(shù)超過該值,則認(rèn)為Map Task運(yùn)行失敗,默認(rèn)值:4。
(3) mapreduce.map.failures.maxpercent: 當(dāng)失敗的Map Task失敗比例超過該值,整個(gè)作業(yè)則失敗,默認(rèn)值為0. 如果你的應(yīng)用程序允許丟棄部分輸入數(shù)據(jù),則該該值設(shè)為一個(gè)大于0的值,比如5,表示如果有低于5%的Map Task失敗(如果一個(gè)Map Task重試次數(shù)超過mapreduce.map.maxattempts,則認(rèn)為這個(gè)Map Task失敗,其對應(yīng)的輸入數(shù)據(jù)將不會(huì)產(chǎn)生任何結(jié)果),整個(gè)作業(yè)扔認(rèn)為成功。
(4) mapreduce.reduce.failures.maxpercent: 當(dāng)失敗的Reduce Task失敗比例超過該值為,整個(gè)作業(yè)則失敗,默認(rèn)值為0.
(5) mapreduce.task.timeout:如果一個(gè)task在一定時(shí)間內(nèi)沒有任何進(jìn)入,即不會(huì)讀取新的數(shù)據(jù),也沒有輸出數(shù)據(jù),則認(rèn)為該task處于block狀態(tài),可能是臨時(shí)卡住,也許永遠(yuǎn)會(huì)卡住。為了防止因?yàn)橛脩舫绦蛴肋h(yuǎn)block不退出,則強(qiáng)制設(shè)置了一個(gè)超時(shí)時(shí)間(單位毫秒),默認(rèn)是600000,值為0將禁用超時(shí)。。
3. 效率跟穩(wěn)定性參數(shù)
(1) mapreduce.map.speculative: 是否為Map Task打開推測執(zhí)行機(jī)制,默認(rèn)為true, 如果為true,則可以并行執(zhí)行一些Map任務(wù)的多個(gè)實(shí)例。
(2) mapreduce.reduce.speculative: 是否為Reduce Task打開推測執(zhí)行機(jī)制,默認(rèn)為true
(3)mapreduce.input.fileinputformat.split.minsize: FileInputFormat做切片時(shí)最小切片大小,默認(rèn)1。
(5)mapreduce.input.fileinputformat.split.maxsize: FileInputFormat做切片時(shí)最大切片大小
推測執(zhí)行機(jī)制(Speculative Execution):它根據(jù)一定的法則推測出“拖后腿”的任務(wù),并為這樣的任務(wù)啟動(dòng)一個(gè)備份任務(wù),讓該任務(wù)與原始任務(wù)同時(shí)處理同一份數(shù)據(jù),并最終選用最先成功運(yùn)行完成任務(wù)的計(jì)算結(jié)果作為最終結(jié)果。
作者
:黑馬程序員大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com
大數(shù)據(jù)離線階段Day8之MapReduce并行度機(jī)制
2018-10-24云計(jì)算-基于KVM的H3C云計(jì)算平臺(tái)CAS的一些運(yùn)維經(jīng)驗(yàn)
2018-08-09搭建Python獨(dú)立環(huán)境:virtualenv的應(yīng)用
2018-07-27大數(shù)據(jù)入門Hadoop安裝
2018-07-272019版大數(shù)據(jù)學(xué)習(xí)路線圖(含大綱+視頻+工具+教材+面試)
2018-05-14云計(jì)算大數(shù)據(jù):spark與storm比對與選型
2018-01-23