大數(shù)據(jù)Hadoop之MapReduce認(rèn)識(shí)

MapReduce

源自Google的MapReduce計(jì)算模型娘摔。MapReduce是一種集群數(shù)據(jù)并行計(jì)算的編程模型瓷叫,它并不提供數(shù)據(jù)處理的工作谎砾,具體的任務(wù)還需編碼實(shí)現(xiàn)樟插,開發(fā)需要具備一門程序語(yǔ)言如:java韵洋、python、ruby等)黄锤。MapReduce編程模型有Map(映射)和Reduce(規(guī)約)兩個(gè)階段搪缨。

MapReduce分布式計(jì)算模型,分而自治的理念,兩層含義1).大而化小。2).異化而同秒拔《幢海可以應(yīng)對(duì)了大數(shù)據(jù)的數(shù)據(jù)量巨大(Valume)和數(shù)據(jù)種類多樣(Variety)挑戰(zhàn)借宵。

假設(shè)我們手上有很多復(fù)雜的數(shù)據(jù)惠窄,那么怎樣來(lái)處理呢武花?1.把數(shù)據(jù)分類凄吏,分類后的數(shù)據(jù)就不復(fù)雜了短纵,這就是異化為同带污。2.分割,分割就是把數(shù)據(jù)切分為小塊香到,這樣就可以并發(fā)或則批量處理了鱼冀,這既是大而化小。

MapReduce當(dāng)時(shí)作為Google的三大法寶之一悠就,在處理大數(shù)據(jù)上面巨大的優(yōu)勢(shì)千绪,那么MapReduce是怎樣實(shí)現(xiàn)這樣高效的呢?

1.MapReduce工作原理講解


MapReduce原理圖

MapReduce分為Map階段和Reduce階段梗脾,下面這個(gè)例子可以很好的解釋荸型。

假如我們要制作蘋果醬,通常我們先將蘋果切塊炸茧,放入攪拌機(jī)中進(jìn)行攪拌就制作出了我們的蘋果醬瑞妇。將MapReduce應(yīng)用到這個(gè)操作上。

Map(映射):將蘋果切碎梭冠,是作用在蘋果上的一個(gè)Map操作辕狰。所以Map一個(gè)蘋果,Map就會(huì)將蘋果切碎控漠。Map過(guò)程中可能出現(xiàn)蘋果壞掉的情況蔓倍,你只要將壞掉的蘋果扔掉即可,Map可以將壞掉的蘋果過(guò)濾掉盐捷,Map出來(lái)的數(shù)據(jù)就是好的沒(méi)有壞掉的蘋果偶翅。

Reduce(規(guī)約):你將蘋果放入攪拌機(jī)進(jìn)行攪拌得到蘋果醬。你在攪拌之前需要切好原料碉渡,所以Reduce一般是和Map在一起的倒堕,但是Map可以獨(dú)立存在。

當(dāng)蘋果醬推向市面獲得市場(chǎng)的認(rèn)可爆价,接到了大量的訂單。此時(shí)就需要雇傭很多人來(lái)切蘋果媳搪,購(gòu)買大量的攪拌機(jī)用來(lái)生產(chǎn)蘋果醬铭段。并行工作生產(chǎn)蘋果醬滿足訂單需求。同理MapReduce在計(jì)算資源不足的情況下可以增加計(jì)算單元秦爆,提高數(shù)據(jù)處理能力序愚,滿足業(yè)務(wù)需求。

MapReduce是一款強(qiáng)大的分布式的計(jì)算框架等限。分布式計(jì)算的原理就是分而自治爸吮,假如我們需要統(tǒng)計(jì)出一大摞牌中紅桃牌的數(shù)量芬膝,最快速的方法就是給在座的每一位分一摞紙牌進(jìn)行統(tǒng)計(jì),然后他們將統(tǒng)計(jì)結(jié)果匯報(bào)到我這里來(lái)進(jìn)行匯總得到結(jié)論形娇。分布式計(jì)算一方面是將結(jié)果化繁為簡(jiǎn)锰霜,比如這個(gè)例子中每一位成員不會(huì)將紅桃的紙牌傳給我而只是化簡(jiǎn)為一個(gè)統(tǒng)計(jì)數(shù)值。另外有一個(gè)隱含之意就是牌需要分配均勻桐早,這一摞撲克牌預(yù)先是被充分洗過(guò)癣缅,就可以避免如果紅桃集中分配到某一個(gè)人手上,而導(dǎo)致他的速度要比其他人慢很多哄酝。

2.錯(cuò)誤處理


MapReduce 運(yùn)行節(jié)點(diǎn)

MapReduce有3類錯(cuò)誤如下:

1).JobTracker錯(cuò)誤友存,應(yīng)該說(shuō)是最嚴(yán)重的一種錯(cuò)誤,任務(wù)完全無(wú)法在集群上執(zhí)行陶衅。盡管這種錯(cuò)誤發(fā)生概率極小但是還是可以避免屡立。啟動(dòng)多個(gè)JobTracker,通過(guò)選舉機(jī)制確定那一個(gè)是主JobTracker搀军,主JobTracker負(fù)責(zé)任務(wù)的執(zhí)行膨俐,如果主JobTracker發(fā)生錯(cuò)誤,其等待的JobTracker通過(guò)選舉機(jī)制產(chǎn)生一個(gè)新的主JobTracker重新執(zhí)行任務(wù)奕巍。

2).TaskTracker錯(cuò)誤吟策,TaskTracker通過(guò)心跳機(jī)制不斷的與JobTracker通信,如果某一個(gè)TaskTracker停止或很少向JobTracker發(fā)送心跳的止,JobTracker會(huì)監(jiān)控TaskTracker發(fā)送心跳的情況檩坚,從而將此TaskTracker從等待任務(wù)調(diào)度池中移除。此TaskTracker將不會(huì)執(zhí)行集群的任務(wù)诅福,直到此TaskTracker節(jié)點(diǎn)的故障排除匾委。

3).子任務(wù)失敗,TaskTracker將子任務(wù)的執(zhí)行情況發(fā)送給JobTracker氓润,如果子任務(wù)執(zhí)行失敗赂乐,JobTracker將重新加入到調(diào)度隊(duì)列中重新分配給其他的TaskTracker執(zhí)行,如果嘗試4次任務(wù)仍然沒(méi)有完成咖气,此時(shí)整個(gè)作業(yè)就失敗了挨措。

這三類錯(cuò)誤的嚴(yán)重程度,JobTracker錯(cuò)誤>TaskTracker錯(cuò)誤>子任務(wù)(Task)錯(cuò)誤崩溪。

3.作業(yè)調(diào)度

MapReduce為用戶提供了以下三種作業(yè)調(diào)度機(jī)制浅役,用戶可以按照自己的需求任意選擇調(diào)度算法。

1).先入先出FIFOFirst in First out伶唯,它先按照作業(yè)的優(yōu)先級(jí)高低觉既,再按照到達(dá)時(shí)間的先后選擇被執(zhí)行的作業(yè)

2).公平調(diào)度器,每一個(gè)任務(wù)都會(huì)被分配相等的時(shí)間處理任務(wù)。

3).容量調(diào)度器瞪讼,該調(diào)度器會(huì)對(duì)同一用戶提交的作業(yè)所占資源量進(jìn)行限定钧椰,比如限定每一個(gè)作業(yè)只能占用1G的內(nèi)存,如果整個(gè)內(nèi)存有10G可以允許10個(gè)任務(wù)被加載到內(nèi)存中執(zhí)行符欠。

MapReduce的作業(yè)調(diào)度并沒(méi)有很高的實(shí)時(shí)性的要求嫡霞,它是本著最大吞吐的原則去設(shè)計(jì)的,所以MapReduce默認(rèn)采用的調(diào)度策略是FIFOFirst in First out先進(jìn)先出的原則)背亥。

4.Shuffle與排序

Shuffle過(guò)程是MapReduce的核心秒际,也被稱為奇跡發(fā)生的地方。要想理解MapReduce狡汉,Shuffle是必須要了解的娄徊。從最基本的要求來(lái)說(shuō),我們對(duì)Shuffle過(guò)程的期望可以有:

1).完整地從map端拉取數(shù)據(jù)到reduce端盾戴。

2).在跨節(jié)點(diǎn)拉取數(shù)據(jù)時(shí)寄锐,盡可能地減少對(duì)帶寬的不必要消耗。

3).減少磁盤IO對(duì)task執(zhí)行的影響尖啡。

洗牌和排序非常消耗集群資源橄仆,Shuffle階段在Map階段和Reduce階段之間。Shuffle階段并不是簡(jiǎn)單的將Map端結(jié)果直接發(fā)送給Reduce端衅斩,因?yàn)镾huffle階段的好壞直接影響整個(gè)MapReduce的性能盆顾。在實(shí)際情況下我們?cè)趫?zhí)行任務(wù)可能是10個(gè)Map的節(jié)點(diǎn),卻只有2個(gè)Reduce節(jié)點(diǎn)畏梆,Reduce過(guò)程會(huì)出現(xiàn)大量數(shù)據(jù)通過(guò)集群網(wǎng)絡(luò)進(jìn)行傳輸您宪,同理Reduce階段中占據(jù)大量時(shí)間也是數(shù)據(jù)拉取耗時(shí),較好Shuffle過(guò)程就需要將Map結(jié)果數(shù)據(jù)放到Reduce很容易得到的服務(wù)器上面奠涌。

Shuffle是一個(gè)非常復(fù)雜的過(guò)程宪巨,我這里只是簡(jiǎn)單的進(jìn)行了講解,有興趣可以去深入理解溜畅。

小結(jié)

MapReduce作為Hadoop主要的核心內(nèi)容捏卓,在數(shù)據(jù)處理方面為我們提供了方法。通過(guò)對(duì)原理慈格、錯(cuò)誤怠晴、作業(yè)調(diào)度和Shuffle的閱讀我們能夠清晰的理解MapReduce。

MapReduce在大數(shù)據(jù)中解決數(shù)據(jù)計(jì)算處理問(wèn)題浴捆,但是MapReduce是Hadoop最早出現(xiàn)的技術(shù)蒜田,在Hadoop生態(tài)圈成長(zhǎng)的過(guò)程中已有很多更好的替代方案,我們將下一回分享汤功。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溜哮,隨后出現(xiàn)的幾起案子滔金,更是在濱河造成了極大的恐慌色解,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件餐茵,死亡現(xiàn)場(chǎng)離奇詭異科阎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)忿族,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門锣笨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人道批,你說(shuō)我怎么就攤上這事错英。” “怎么了隆豹?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵椭岩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我璃赡,道長(zhǎng)判哥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任碉考,我火速辦了婚禮塌计,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侯谁。我一直安慰自己锌仅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布良蒸。 她就那樣靜靜地躺著技扼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫩痰。 梳的紋絲不亂的頭發(fā)上剿吻,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音串纺,去河邊找鬼丽旅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纺棺,可吹牛的內(nèi)容都是我干的榄笙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼祷蝌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茅撞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤米丘,失蹤者是張志新(化名)和其女友劉穎剑令,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拄查,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吁津,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堕扶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍脏。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖稍算,靈堂內(nèi)的尸體忽然破棺而出典尾,到底是詐尸還是另有隱情,我是刑警寧澤邪蛔,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布急黎,位于F島的核電站,受9級(jí)特大地震影響侧到,放射性物質(zhì)發(fā)生泄漏勃教。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一匠抗、第九天 我趴在偏房一處隱蔽的房頂上張望故源。 院中可真熱鬧,春花似錦汞贸、人聲如沸绳军。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)门驾。三九已至,卻和暖如春多柑,著一層夾襖步出監(jiān)牢的瞬間奶是,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工竣灌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留聂沙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓初嘹,卻偏偏與公主長(zhǎng)得像及汉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屯烦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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