★MapReduce

1.MapReduce是什么试浙?

--Hadoop MapReduce是一個(gè)軟件框架佳恬,基于該框架能夠容易地編寫應(yīng)用程序,這些應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大集群上孽尽,并以一種可靠的窖壕,具有容錯能力的方式并行地處理上TB級別的海量數(shù)據(jù)集。

2.MapReduce的特點(diǎn):

? ?軟件框架

? ?并行處理

? ?可靠且容錯

? 大規(guī)模集群

? ?海量數(shù)據(jù)集

3.MapReduce的思想:“分而治之”

(1)Mapper負(fù)責(zé)“分”

把簡單的任務(wù)分解為若干個(gè)“簡單的任務(wù)”來處理:

數(shù)據(jù)或計(jì)算的規(guī)模相對原任務(wù)要大大縮猩寂瞻讽;

就近計(jì)算原則,任務(wù)會分配到存放著所需數(shù)據(jù)的節(jié)點(diǎn)上進(jìn)行計(jì)算熏挎;

這些小任務(wù)可以并行計(jì)算彼此間幾乎沒有依賴關(guān)系速勇。

(2)Reduce負(fù)責(zé)對map階段的結(jié)果進(jìn)行匯總

至于需要多少個(gè)Reducer,可以根據(jù)具體問題坎拐,通過在mapred-site.xml配置文件里設(shè)置參數(shù)mapred.reduce.tasks的值烦磁,缺省值為1养匈。

4.MapReduce工作機(jī)制

MapReduce工作機(jī)制


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


MapReduce作業(yè)工作流程圖

★★作業(yè)執(zhí)行涉及4個(gè)獨(dú)立的實(shí)體:★★

(1)客戶端,用來提交MapReduce的作業(yè)

(編寫MapReduce程序都伪,配置作業(yè)呕乎,提交作業(yè),這就是程序員完成的工作)

(2)JobTracker陨晶,用來協(xié)調(diào)作業(yè)的運(yùn)行

(初始化作業(yè)猬仁,分配作業(yè),與TaskTracker通信先誉,協(xié)調(diào)整個(gè)作業(yè)的執(zhí)行)

(3)TaskTracker湿刽,用來處理作業(yè)劃分后的任務(wù)

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

(4)HDFS叭爱,用來在其他實(shí)體間共享作業(yè)文件

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

JobTracker VS TaskTracker:

JobTracker只能有一個(gè)买雾,就和hdfs里的namenode一樣存在單點(diǎn)故障;

TaskTracker可以有多個(gè)杨帽。

5.mapreduce運(yùn)行步驟

? ? ?在hadoop中漓穿,一個(gè)mapreduce作業(yè)會把輸入的數(shù)據(jù)集分為若干獨(dú)立的數(shù)據(jù)塊,由Map任務(wù)以完全并行地方式處理注盈。

框架會對Map的輸出先進(jìn)行排序晃危,然后把結(jié)果輸入給Reduce任務(wù)。

作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)中老客,整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控僚饭,以及重新執(zhí)行已經(jīng)關(guān)閉的任務(wù)。

MapReduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn)胧砰,計(jì)算節(jié)點(diǎn)和存儲節(jié)點(diǎn)都是在一起的鳍鸵。

? ? ?詳細(xì)步驟:

首先是客戶端要編寫好mapreduce程序,配置好mapreduce的作業(yè)也就是job尉间,

接下來就是提交job了偿乖,提交job是提交到JobTracker上的,這個(gè)時(shí)候JobTracker就會構(gòu)建這個(gè)job哲嘲,具體就是分配一個(gè)新的job任務(wù)的ID值

接下來它會做檢查操作贪薪,這個(gè)檢查就是確定輸出目錄是否存在,如果存在那么job就不能正常運(yùn)行下去眠副,JobTracker會拋出錯誤給客戶端河绽,接下來還要檢查輸入目錄是否存在霜旧,如果不存在同樣拋出錯誤试吁,如果存在JobTracker會根據(jù)輸入計(jì)算輸入分片(Input Split),如果分片計(jì)算不出來也會拋出錯誤毫别,這些都做好了JobTracker就會配置Job需要的資源了。

分配好資源后庞萍,JobTracker就會初始化作業(yè)拧烦,初始化主要做的是將Job放入一個(gè)內(nèi)部的隊(duì)列忘闻,讓配置好的作業(yè)調(diào)度器能調(diào)度到這個(gè)作業(yè)钝计,作業(yè)調(diào)度器會初始化這個(gè)job,初始化就是創(chuàng)建一個(gè)正在運(yùn)行的job對象(封裝任務(wù)和記錄信息)齐佳,以便JobTracker跟蹤job的狀態(tài)和進(jìn)程私恬。

初始化完畢后,作業(yè)調(diào)度器會獲取輸入分片信息(input split)炼吴,每個(gè)分片創(chuàng)建一個(gè)map任務(wù)本鸣。

接下來就是任務(wù)分配了,這個(gè)時(shí)候tasktracker會運(yùn)行一個(gè)簡單的循環(huán)機(jī)制定期發(fā)送心跳給jobtracker硅蹦,心跳間隔是5秒荣德,程序員可以配置這個(gè)時(shí)間,心跳就是jobtracker和tasktracker溝通的橋梁童芹,通過心跳涮瞻,jobtracker可以監(jiān)控tasktracker是否存活,也可以獲取tasktracker處理的狀態(tài)和問題假褪,同時(shí)tasktracker也可以通過心跳里的返回值獲取jobtracker給它的操作指令署咽。

任務(wù)分配好后就是執(zhí)行任務(wù)了。在任務(wù)執(zhí)行時(shí)候jobtracker可以通過心跳機(jī)制監(jiān)控tasktracker的狀態(tài)和進(jìn)度生音,同時(shí)也能計(jì)算出整個(gè)job的狀態(tài)和進(jìn)度宁否,而tasktracker也可以本地監(jiān)控自己的狀態(tài)和進(jìn)度。當(dāng)jobtracker獲得了最后一個(gè)完成指定任務(wù)的tasktracker操作成功的通知時(shí)候缀遍,jobtracker會把整個(gè)job狀態(tài)置為成功慕匠,然后當(dāng)客戶端查詢job運(yùn)行狀態(tài)時(shí)候(注意:這個(gè)是異步操作),客戶端會查到j(luò)ob完成的通知的域醇。如果job中途失敗絮重,mapreduce也會有相應(yīng)機(jī)制處理,一般而言如果不是程序員程序本身有bug歹苦,mapreduce錯誤處理機(jī)制都能保證提交的job能正常完成青伤。

Job job;

if(job.waitForComplete(true)?0:1? ? //等待job的完成

{

System.out.println("ok")

else

System.out.println("failure")

}

6.MapReduce的輸入輸出

一個(gè)MapReduce作業(yè)的輸入和輸出類型:

會有三組<key,value>鍵值對類型的存在


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殴瘦,隨后出現(xiàn)的幾起案子狠角,更是在濱河造成了極大的恐慌,老刑警劉巖蚪腋,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丰歌,死亡現(xiàn)場離奇詭異姨蟋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)立帖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門眼溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晓勇,你說我怎么就攤上這事堂飞。” “怎么了绑咱?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵绰筛,是天一觀的道長。 經(jīng)常有香客問我描融,道長铝噩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任窿克,我火速辦了婚禮骏庸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘年叮。我一直安慰自己具被,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布谋右。 她就那樣靜靜地躺著硬猫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪改执。 梳的紋絲不亂的頭發(fā)上啸蜜,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音辈挂,去河邊找鬼衬横。 笑死,一個(gè)胖子當(dāng)著我的面吹牛终蒂,可吹牛的內(nèi)容都是我干的蜂林。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼拇泣,長吁一口氣:“原來是場噩夢啊……” “哼噪叙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起霉翔,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤睁蕾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體子眶,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瀑凝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臭杰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粤咪。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖渴杆,靈堂內(nèi)的尸體忽然破棺而出寥枝,到底是詐尸還是另有隱情,我是刑警寧澤将塑,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布脉顿,位于F島的核電站蝌麸,受9級特大地震影響点寥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜来吩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一敢辩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弟疆,春花似錦戚长、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柑司,卻和暖如春迫肖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背攒驰。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工蟆湖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玻粪。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓隅津,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劲室。 傳聞我的和親對象是個(gè)殘疾皇子伦仍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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

  • MapReduce框架結(jié)構(gòu)## MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)處理的分布式計(jì)算模型MapReduce模型主...
    Bloo_m閱讀 3,763評論 0 4
  • MapReduce是面向大數(shù)據(jù)并行處理的計(jì)算模型、框架和平臺很洋。MapReduce是一個(gè)基于集群的高性能并行計(jì)算平臺...
    VVictoriaLee閱讀 427評論 0 1
  • mapreduce角色: Mapreduce 作業(yè)(我們稱為job)是客戶端需要執(zhí)行的一個(gè)工作單元它包括 輸入數(shù)據(jù)...
    經(jīng)綸先生閱讀 1,392評論 0 1
  • 課程地址:MapReduce官方文檔:MapReduce Tutorial參考文獻(xiàn):MapReduce原理與設(shè)計(jì)思...
    拾壹北閱讀 931評論 0 12
  • 現(xiàn)在的大學(xué)生一抓一大把 現(xiàn)在的土豪也是十個(gè)有七八個(gè) 而我們這些窮人 整日為了錢發(fā)愁 喜歡的衣服太貴不能買...
    文九兒閱讀 136評論 0 0