近來由于工作的需要,以前學(xué)過的Hadoop又重新回顧了一遍醋闭,為以后更好的了解窄驹,特寫下該文章,以留作筆記证逻,深知操作猛如虎乐埠,先從概念來講起。
流程簡介:
1.重寫?JobConfigurable.configure(JobConf)方法囚企,這個方法需要傳遞一個JobConf參數(shù)<JobConf 描述Map/Reduce如何執(zhí)行的主要接口>丈咐,目的是完成Mapper的任務(wù)初始化工作;
2.之后框架使用IputSplit對每個鍵值對調(diào)用一次?map(WritableComparable, Writable, OutputCollector, Reporter)操作;
3.因?yàn)閿?shù)據(jù)在hadoop上是以塊為單位存儲的龙宏,所以使用Partitioner控制map輸出結(jié)果key的分割棵逊,產(chǎn)生一個個分區(qū),分區(qū)的數(shù)目與一個作業(yè)的reduce任務(wù)的數(shù)目是一樣的银酗;
4.map已經(jīng)將數(shù)據(jù)分組排好之后辆影,shuffle為每個Reducer獲得所有Mapper輸出中與之相關(guān)的分塊;sort按照key的值對Reducer的輸入進(jìn)行分組 黍特;
Shuffle和Sort兩個階段是同時(shí)進(jìn)行的蛙讥,map的輸出也是一邊被取回一邊被合并的;
5.對每個輸入鍵值對調(diào)用一次?reduce(WritableComparable, Iterator, OutputCollector, Reporter)方法衅澈,Reduce任務(wù)的輸出通常是通過調(diào)用?OutputCollector.collect(WritableComparable, Writable)寫入?文件系統(tǒng)的键菱。
6.Reporter報(bào)告進(jìn)度谬墙,設(shè)定應(yīng)用程序級別的狀態(tài)消息今布,更新Counters(計(jì)數(shù)器)经备, 表明進(jìn)程正常;
總結(jié): map對數(shù)據(jù)組進(jìn)行分組排序部默,均勻分布到每個數(shù)據(jù)節(jié)點(diǎn)侵蒙,之后reducer調(diào)用計(jì)算任務(wù)程序,并將最終的計(jì)算結(jié)果輸出傅蹂;
各位看客纷闺,如果發(fā)現(xiàn)有何描述不準(zhǔn)確的,定要指出哦份蝴,相互學(xué)習(xí)犁功,個人博客https://www.onexing.cn