了解MapReduce

MapReduce是面向大數(shù)據(jù)并行處理的計(jì)算模型、框架和平臺(tái)惕稻。MapReduce是一個(gè)基于集群的高性能并行計(jì)算平臺(tái)(Cluster Infrastructure)竖共。MapReduce是一個(gè)并行計(jì)算與運(yùn)行軟件框架,很多系統(tǒng)底層的復(fù)雜細(xì)節(jié)交由系統(tǒng)負(fù)責(zé)處理俺祠,大大減少了軟件開(kāi)發(fā)人員的負(fù)擔(dān)公给〗枇保【自動(dòng)完成計(jì)算任務(wù)的并行化處理,自動(dòng)劃分計(jì)算數(shù)據(jù)和計(jì)算任務(wù)淌铐,在集群節(jié)點(diǎn)上自動(dòng)分配和執(zhí)行任務(wù)以及收集計(jì)算結(jié)果】MapReduce是一個(gè)并行程序設(shè)計(jì)模型與方法(Programming Model & Methodology)姻蚓。用Map和Reduce兩個(gè)函數(shù)編程實(shí)現(xiàn)基本的并行計(jì)算任務(wù),提供了抽象的操作和并行編程接口匣沼,以簡(jiǎn)單方便地完成大規(guī)模數(shù)據(jù)的編程和計(jì)算處理。

Mapreduce的特點(diǎn):

軟件框架
并行處理
可靠且容錯(cuò)
大規(guī)模集群
海量數(shù)據(jù)集
MapReduce的思想就是“分而治之”

MapReduce工作機(jī)制:

image.png

作業(yè)執(zhí)行涉及4個(gè)獨(dú)立的實(shí)體(對(duì)象)

客戶端(client):編寫(xiě)mapreduce程序捂龄,配置作業(yè)释涛,提交作業(yè),這就是程序員完成的

工作倦沧;

JobTracker:初始化作業(yè)唇撬,分配作業(yè),與TaskTracker通信展融,協(xié)調(diào)整個(gè)作業(yè)的執(zhí)行窖认;

TaskTracker:保持與JobTracker的通信,在分配的數(shù)據(jù)片段上執(zhí)行Map或Reduce任務(wù)告希,

TaskTracker和JobTracker的不同有個(gè)很重要的方面扑浸,就是在執(zhí)行任務(wù)時(shí)候TaskTracker可以

有n多個(gè),JobTracker則只會(huì)有一個(gè)(JobTracker只能有一個(gè)就和hdfs里namenode一樣存在

單點(diǎn)故障)

Hdfs:保存作業(yè)的數(shù)據(jù)燕偶、配置信息等等喝噪,最后的結(jié)果也是保存在hdfs上面

作業(yè)工作流程圖

image.png

mapreduce運(yùn)行步驟:

1.客戶端要編寫(xiě)好mapreduce程序,配置好mapreduce的作業(yè)也就是job

2.提交job了指么,提交job是提交到JobTracker上的酝惧,這個(gè)時(shí)候JobTracker就會(huì)構(gòu)建這個(gè)job,具體就是分配一個(gè)新的job任務(wù)的ID值

3.JobTracker做檢查操作伯诬,檢查確定輸出目錄是否存在晚唇,檢查輸入目錄是否存在,如果不存在那么job就不能正常運(yùn)行下去,JobTracker會(huì)拋出錯(cuò)誤給客戶端盗似,

4.如果存在JobTracker會(huì)根據(jù)輸入計(jì)算輸入分片(Input Split)哩陕,如果分片計(jì)算不出來(lái)也會(huì)拋出錯(cuò)誤,這些都做好了JobTracker就會(huì)配置Job需要的資源了赫舒。

5.分配好資源后萌踱,JobTracker就會(huì)初始化作業(yè),初始化主要做的是將Job放入一個(gè)內(nèi)部的隊(duì)列号阿,讓配置好的作業(yè)調(diào)度器能調(diào)度到這個(gè)作業(yè)并鸵,作業(yè)調(diào)度器會(huì)初始化這個(gè)job,初始化就是創(chuàng)建一個(gè)正在運(yùn)行的job對(duì)象(封裝任務(wù)和記錄信息)扔涧,以便JobTracker跟蹤job的狀態(tài)和進(jìn)程园担。

6.初始化完畢后届谈,作業(yè)調(diào)度器會(huì)獲取輸入分片信息(input split),每個(gè)分片創(chuàng)建一個(gè)map任務(wù)弯汰。

7.任務(wù)分配艰山,這個(gè)時(shí)候tasktracker會(huì)運(yùn)行一個(gè)簡(jiǎn)單的循環(huán)機(jī)制定期發(fā)送心跳給jobtracker,心跳間隔是5秒咏闪,程序員可以配置這個(gè)時(shí)間曙搬,心跳就是jobtracker和tasktracker溝通的橋梁,通過(guò)心跳鸽嫂,jobtracker可以監(jiān)控tasktracker是否存活纵装,也可以獲取tasktracker處理的狀態(tài)和問(wèn)題,同時(shí)tasktracker也可以通過(guò)心跳里的返回值獲取jobtracker給它的操作指令据某。

8.任務(wù)分配好后就是執(zhí)行任務(wù)了橡娄。在任務(wù)執(zhí)行時(shí)候jobtracker可以通過(guò)心跳機(jī)制監(jiān)控tasktracker的狀態(tài)和進(jìn)度,同時(shí)也能計(jì)算出整個(gè)job的狀態(tài)和進(jìn)度癣籽,而tasktracker也可以本地監(jiān)控自己的狀態(tài)和進(jìn)度挽唉。

9.當(dāng)jobtracker獲得了最后一個(gè)完成指定任務(wù)的tasktracker操作成功的通知時(shí)候,jobtracker會(huì)把整個(gè)job狀態(tài)置為成功.

10.然后當(dāng)客戶端查詢job運(yùn)行狀態(tài)時(shí)候(注意:這個(gè)是異步操作)筷狼,客戶端會(huì)查到j(luò)ob完成的通知的瓶籽。如果job中途失敗,mapreduce也會(huì)有相應(yīng)機(jī)制處理埂材,一般而言如果不是程序員程序本身有bug栖疑,mapreduce錯(cuò)誤處理機(jī)制都能保證提交的job能正常完成垦沉。


mapreduce運(yùn)行機(jī)制

image.png

1.在Hadoop中,一個(gè)MapReduce作業(yè)會(huì)把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由Map任務(wù)以完全并行的方式處理

2.框架會(huì)對(duì)Map的輸出先進(jìn)行排序皮服,然后把結(jié)果輸入給Reduce任務(wù)褒脯。

3.作業(yè)的輸入和輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中拯田,整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控绷杜,以及重新執(zhí)行已經(jīng)關(guān)閉的任務(wù)
 
4.MapReduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)都是在一起的

一個(gè)MapReduce作業(yè)的輸入和輸出類型:會(huì)有三組<key,value>鍵值對(duì)類型的存在

image.png

Mapreduce作業(yè)的處理流程【important】

image.png

輸入分片(input split):在進(jìn)行map計(jì)算之前预鬓,mapreduce會(huì)根據(jù)輸入文件計(jì)算輸入分片(input split)巧骚,每個(gè)輸入分片(input split)針對(duì)一個(gè)map任務(wù)。輸入分片(input split)存儲(chǔ)的并非數(shù)據(jù)本身格二,而是一個(gè)分片長(zhǎng)度和一個(gè)記錄數(shù)據(jù)的位置的數(shù)組劈彪,輸入分片(input split)往往和hdfs的block(塊)關(guān)系很密切。

假如我們?cè)O(shè)定hdfs的塊的大小是64mb顶猜,如果我們輸入有三個(gè)文件沧奴,大小分別是3mb、65mb和127mb长窄,那么mapreduce會(huì)把3mb文件分為一個(gè)輸入分片(input split)滔吠,65mb則是兩個(gè)輸入分片(input split)而127mb也是兩個(gè)輸入分片(input split)即我們?nèi)绻趍ap計(jì)算前做輸入分片調(diào)整纲菌,例如合并小文件,那么就會(huì)有5個(gè)map任務(wù)將執(zhí)行疮绷,而且每個(gè)map執(zhí)行的數(shù)據(jù)大小不均翰舌,這個(gè)也是mapreduce優(yōu)化計(jì)算的一個(gè)關(guān)鍵點(diǎn)。

map階段:程序員編寫(xiě)好的map函數(shù)了冬骚,因此map函數(shù)效率相對(duì)好控制椅贱,而且一般map操作都是本地化操作也就是在數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上進(jìn)行。

combiner階段:
combiner階段是程序員可以選擇的只冻,combiner其實(shí)也是一種reduce操作庇麦,因此我們看見(jiàn)WordCount類里是用reduce進(jìn)行加載的。

Combiner是一個(gè)本地化的reduce操作属愤,它是map運(yùn)算的后續(xù)操作,主要是在map計(jì)算出中間文件前做一個(gè)簡(jiǎn)單的合并重復(fù)key值的操作酸役,例如我們對(duì)文件里的單詞頻率做統(tǒng)計(jì)住诸,map計(jì)算時(shí)候如果碰到一個(gè)hadoop的單詞就會(huì)記錄為1,但是這篇文章里hadoop可能會(huì)出現(xiàn)n多次涣澡,那么map輸出文件冗余就會(huì)很多贱呐,因此在reduce計(jì)算前對(duì)相同的key做一個(gè)合并操作,那么文件會(huì)變小入桂,這樣就提高了寬帶的傳輸效率奄薇,畢竟hadoop計(jì)算力寬帶資源往往是計(jì)算的瓶頸也是最為寶貴的資源,但是combiner操作是有風(fēng)險(xiǎn)的抗愁,使用它的原則是combiner的輸入不會(huì)影響到reduce計(jì)算的最終輸入馁蒂,例如:如果計(jì)算只是求總數(shù),最大值蜘腌,最小值可以使用combiner沫屡,但是做平均值計(jì)算使用combiner的話,最終的reduce計(jì)算結(jié)果就會(huì)出錯(cuò)撮珠。

shuffle階段:將map的輸出作為reduce的輸入的過(guò)程就是shuffle了

reduce階段:和map函數(shù)一樣也是程序員編寫(xiě)的沮脖,最終結(jié)果是存儲(chǔ)在hdfs上的。

單點(diǎn)故障

jobtracker和hdfs的namenode一樣也存在單點(diǎn)故障芯急,
單點(diǎn)故障一直是hadoop被人詬病的大問(wèn)題勺届,
為什么hadoop的做的文件系統(tǒng)和mapreduce計(jì)算框架都是高容錯(cuò)的,但是最重要的管理節(jié)點(diǎn)的故障機(jī)制卻如此不好娶耍,我認(rèn)為主要是namenode和jobtracker在實(shí)際運(yùn)行中都是在內(nèi)存操作免姿,而做到內(nèi)存的容錯(cuò)就比較復(fù)雜了,只有當(dāng)內(nèi)存數(shù)據(jù)被持久化后容錯(cuò)才好做榕酒,namenode和jobtracker都可以備份自己持久化的文件养泡,但是這個(gè)持久化都會(huì)有延遲嗜湃,因此真的出故障,任然不能整體恢復(fù)澜掩,另外hadoop框架里包含zookeeper框架购披,zookeeper可以結(jié)合jobtracker,用幾臺(tái)機(jī)器同時(shí)部署jobtracker肩榕,保證一臺(tái)出故障刚陡,有一臺(tái)馬上能補(bǔ)充上,不過(guò)這種方式也沒(méi)法恢復(fù)正在跑的mapreduce任務(wù)株汉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筐乳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乔妈,更是在濱河造成了極大的恐慌蝙云,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件路召,死亡現(xiàn)場(chǎng)離奇詭異勃刨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)股淡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)身隐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人唯灵,你說(shuō)我怎么就攤上這事贾铝。” “怎么了埠帕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵垢揩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我敛瓷,道長(zhǎng)水孩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任琐驴,我火速辦了婚禮俘种,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绝淡。我一直安慰自己宙刘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布牢酵。 她就那樣靜靜地躺著悬包,像睡著了一般。 火紅的嫁衣襯著肌膚如雪馍乙。 梳的紋絲不亂的頭發(fā)上布近,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天垫释,我揣著相機(jī)與錄音,去河邊找鬼撑瞧。 笑死棵譬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的预伺。 我是一名探鬼主播订咸,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼酬诀!你這毒婦竟也來(lái)了脏嚷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞒御,失蹤者是張志新(化名)和其女友劉穎父叙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肴裙,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趾唱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了践宴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲸匿。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爷怀,死狀恐怖阻肩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情运授,我是刑警寧澤烤惊,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站吁朦,受9級(jí)特大地震影響柒室,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逗宜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一雄右、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺讲,春花似錦擂仍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至乡括,卻和暖如春肃廓,著一層夾襖步出監(jiān)牢的瞬間智厌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工盲赊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铣鹏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓角钩,卻偏偏與公主長(zhǎng)得像吝沫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子递礼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • MapReduce框架結(jié)構(gòu)## MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)處理的分布式計(jì)算模型MapReduce模型主...
    Bloo_m閱讀 3,763評(píng)論 0 4
  • 思考問(wèn)題 MapReduce總結(jié) MapReduce MapReduce的定義MapReduce是一種編程模型惨险, ...
    Sakura_P閱讀 944評(píng)論 0 1
  • 目的這篇教程從用戶的角度出發(fā),全面地介紹了Hadoop Map/Reduce框架的各個(gè)方面脊髓。先決條件請(qǐng)先確認(rèn)Had...
    SeanC52111閱讀 1,734評(píng)論 0 1
  • 這一篇文章記錄一下hadoop中的分布式運(yùn)算MapReduce的過(guò)程辫愉,作為《深入理解大數(shù)據(jù)》的學(xué)習(xí)筆記。 上一篇看...
    七號(hào)蘿卜閱讀 2,134評(píng)論 0 7
  • 07/3/2017《超級(jí)個(gè)體》吾愛(ài)廬 知識(shí)概述 一将硝、職業(yè)2種策略 1恭朗、資源策略:已有能力資源來(lái)做好手邊的事,能做什...
    吾愛(ài)廬閱讀 221評(píng)論 0 0