MapReduce性能優(yōu)化

shuffle過(guò)程參數(shù)調(diào)優(yōu)

Map端的調(diào)優(yōu)屬性
io.sort.mb int 100 排序Map輸出是所使用內(nèi)存緩沖區(qū)的大小铺董,以MB為單位
io.sort.record.percent float 0.05 用作存儲(chǔ)Map輸出記錄邊界的io.sort.mb的比例,剩余的空間存儲(chǔ)Map輸出記錄本身
io.sort.spill.percent float 0.8 Map輸出內(nèi)存緩沖和用來(lái)開始磁盤溢出寫過(guò)程的記錄邊界索引岸蜗,是兩者使用比例的閥值
io.sort.factor boolean false 排序文件時(shí)援雇,一次最后合并的流數(shù)缨恒,這個(gè)屬性也在Reduce端使用蜂绎,將閥值增加到100是很常用的
mapred.compress.map.output 壓縮Map的輸出
mapred.map.out.compression.codec class org.apache.hadoop.io.compress.DefaultCodec 用于Map輸出的壓碼編碼解碼
min.num.spills.for.combinar int 3 運(yùn)行Combinar所需要的最小溢出寫文件數(shù)
tasktracker.http.threads int 40 每個(gè)TaskTracker工作的線程數(shù)熬词,用于將Map輸出到Reduce這是集群范圍的設(shè)置旁钧,不能有單個(gè)作業(yè)來(lái)設(shè)置

Reduce端的調(diào)優(yōu)屬性
mapred.reduce.parallel.copies int 5 每個(gè)Reduce并行下載Map結(jié)果的最大線程數(shù)
mapred.reduce.copy.backoff int 300 Reduce下載線程最大等待時(shí)間(in sec)
io.sort.factor int 10 同上
mapred.job.shuffle.input.buffer.percent float 0.7 用來(lái)緩存Shuffle數(shù)據(jù)的reduce task heap百分比
mapred.job.shuffle.merge.percent float 0.66 緩存的內(nèi)存中多少百分比后開始做merge操作
mapred.job.reduce.input.buffer.percent float 0.0 sort完成后Reduce計(jì)算階段用來(lái)緩存數(shù)據(jù)的百分比

Shuffle調(diào)優(yōu)的總原則就是給Shuffle過(guò)程盡量多地提供內(nèi)存空間,然后有一個(gè)平衡的問(wèn)題吸重,要確保map函數(shù)和reduce函數(shù)能夠得到足夠的內(nèi)存來(lái)運(yùn)行
運(yùn)行Map任務(wù)和Reduce任務(wù)的JVM,其內(nèi)存大小由參數(shù)mapred.child.java.opts來(lái)設(shè)置歪今,任務(wù)節(jié)點(diǎn)上面的內(nèi)存大小應(yīng)盡量大

任務(wù)的執(zhí)行##

推測(cè)執(zhí)行
對(duì)于相同的輸入數(shù)據(jù)嚎幸,我們可以并行多次處理以利用不同的機(jī)器的負(fù)載能力
因?yàn)樽鳂I(yè)中大多數(shù)的任務(wù)都已經(jīng)完成了,Hadoop平臺(tái)會(huì)在幾個(gè)空閑的節(jié)點(diǎn)上調(diào)度執(zhí)行剩余任務(wù)的復(fù)制
當(dāng)任務(wù)完成時(shí)寄猩,它會(huì)向JobTracker通告嫉晶,任何一個(gè)首先完成的復(fù)制任務(wù)將成為權(quán)威復(fù)制,如果其他復(fù)制任務(wù)還在推測(cè)性執(zhí)行田篇,Hadoop會(huì)告訴TaskTracker去終止這些任務(wù)并丟棄它們的輸出车遂,接著Reduce會(huì)從首先完成的Mapper那里獲取輸入數(shù)據(jù)
推測(cè)性執(zhí)行默認(rèn)是啟用的,設(shè)置JobConf中的mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution為false斯辰,用來(lái)禁止map和Reduce的推測(cè)性執(zhí)行

>**任務(wù)JVM重用**
                      mapred.job.reuse.jvm.num.tasks的默認(rèn)值為1舶担,即每一個(gè)Task都新啟動(dòng)一個(gè)JVM來(lái)運(yùn)行,而當(dāng)值為-1時(shí)彬呻,表示JVM可以無(wú)限制重用
                      當(dāng)值為-1時(shí)衣陶,TaskTracker也是先判斷當(dāng)前節(jié)點(diǎn)是否有空閑的slot剩余,如果沒(méi)有空閑的slot槽位闸氮,才會(huì)判斷當(dāng)前分配的slot槽位中的JVM是否已經(jīng)將當(dāng)前的Task任務(wù)運(yùn)行完剪况,如果Task已經(jīng)運(yùn)行完,才會(huì)復(fù)用當(dāng)前JVM(當(dāng)前只針對(duì)同一個(gè)Job的Task才會(huì)進(jìn)入JVM的復(fù)用)
            
 >**跳過(guò)壞的記錄**
                      數(shù)據(jù)的一些記錄不符合規(guī)范蒲跨,處理時(shí)拋出異常译断,MapReduce可以將這次記錄標(biāo)為壞記錄,重啟任務(wù)時(shí)會(huì)跳過(guò)該記錄
                      默認(rèn)情況下該屬性是關(guān)閉的或悲,通過(guò)mapred.map.max.attemps和mapred.reduce.max.attemps兩個(gè)參數(shù)進(jìn)行設(shè)置

作業(yè)調(diào)度器

Hadoop作業(yè)調(diào)度器采用的是插件機(jī)制孙咪,即作業(yè)調(diào)度器是動(dòng)態(tài)加載的 、可插拔的巡语、同時(shí)第三方可以開發(fā)自己的作業(yè)調(diào)度器替代Hadoop默認(rèn)的調(diào)度器翎蹈。目前,Hadoop作業(yè)調(diào)度器主要有以下三個(gè):
1.先進(jìn)先出調(diào)度器(FIFO Scheduler)
默認(rèn)的調(diào)度器男公,所有用戶的作業(yè)都被提交到一個(gè)隊(duì)列中荤堪,然后由JobTracker先按照作業(yè)的優(yōu)先級(jí)高低,再按照作業(yè)提交時(shí)間的先后順序選擇將被執(zhí)行的作業(yè)
缺點(diǎn):忽略了不同作業(yè)的需求差異
2.容量調(diào)度器(Capacity Scheduler)
容量調(diào)度器的每個(gè)隊(duì)列中采用的調(diào)度策略是FIFO算法
容量調(diào)度器默認(rèn)情況下不支持優(yōu)先級(jí)枢赔,但是可以在配置文件中開啟此選項(xiàng) 澄阳,如果支持優(yōu)先級(jí),調(diào)度算法就是帶有優(yōu)先級(jí)的FIFO
容量調(diào)度器不支持優(yōu)先級(jí)搶占踏拜,一旦一個(gè)作業(yè)開始執(zhí)行碎赢,在執(zhí)行完成之前它的資源不會(huì)被高優(yōu)先級(jí)作業(yè)所搶占
容量調(diào)度器對(duì)隊(duì)列中同一用戶提交的作業(yè)能夠獲得的資源百分比進(jìn)行限制,以避免同屬于一個(gè)用戶的作業(yè)獨(dú)占資源的情況
3.公平調(diào)度器(Fair Scheduler)
公平調(diào)度器的設(shè)計(jì)思想是执隧,盡可能保證所有的作業(yè)都能夠獲得等量的資源份額揩抡。
系統(tǒng)中只有一個(gè)作業(yè)執(zhí)行時(shí)户侥,它將獨(dú)占集群所有的資源,有其他作業(yè)被提交時(shí)就會(huì)有TaskTracker被釋放并分配給新提交的作業(yè)峦嗤,以保證所有的作業(yè)都能夠獲得大體相同的計(jì)算資源
最低保障資源份額機(jī)制蕊唐?
用戶提交的作業(yè)將會(huì)放進(jìn)一個(gè)能夠公平共享資源的池中,每個(gè)作業(yè)池設(shè)定了一個(gè)最低資源保障烁设,當(dāng)一個(gè)池中包含Job時(shí)替梨,它至少可以獲得minimum share的資源
默認(rèn)情況下,每個(gè)作業(yè)池中選擇將要執(zhí)行作業(yè)的策略是FIFO策略装黑,先按照優(yōu)先級(jí)高低排序副瀑,然后按照提交時(shí)間排序
默認(rèn)情況下,公平調(diào)度器會(huì)為每個(gè)用戶建立一個(gè)單獨(dú)的pool恋谭,所有的用戶能夠獲得等量的資源份額而無(wú)論提交了多少作業(yè)糠睡,而每個(gè)pool中,各個(gè)作業(yè)將平分分配所在池的資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疚颊,一起剝皮案震驚了整個(gè)濱河市狈孔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌材义,老刑警劉巖均抽,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異其掂,居然都是意外死亡油挥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門款熬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)深寥,“玉大人,你說(shuō)我怎么就攤上這事华烟◆媛酰” “怎么了持灰?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵盔夜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我堤魁,道長(zhǎng)喂链,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任妥泉,我火速辦了婚禮椭微,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盲链。我一直安慰自己蝇率,他們只是感情好迟杂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本慕,像睡著了一般排拷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锅尘,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天监氢,我揣著相機(jī)與錄音,去河邊找鬼藤违。 笑死浪腐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的顿乒。 我是一名探鬼主播议街,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼璧榄!你這毒婦竟也來(lái)了傍睹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤犹菱,失蹤者是張志新(化名)和其女友劉穎拾稳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腊脱,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡访得,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陕凹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悍抑。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杜耙,靈堂內(nèi)的尸體忽然破棺而出搜骡,到底是詐尸還是另有隱情,我是刑警寧澤佑女,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布记靡,位于F島的核電站,受9級(jí)特大地震影響团驱,放射性物質(zhì)發(fā)生泄漏摸吠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一嚎花、第九天 我趴在偏房一處隱蔽的房頂上張望寸痢。 院中可真熱鬧,春花似錦紊选、人聲如沸啼止。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)献烦。三九已至憔辫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仿荆,已是汗流浹背贰您。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拢操,地道東北人锦亦。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像令境,于是被迫代替她去往敵國(guó)和親杠园。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容