2023學(xué)年完整公開課版MapReduce_第1頁
2023學(xué)年完整公開課版MapReduce_第2頁
2023學(xué)年完整公開課版MapReduce_第3頁
2023學(xué)年完整公開課版MapReduce_第4頁
2023學(xué)年完整公開課版MapReduce_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

邵思思MapReduce-簡(jiǎn)介MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。概念"Map"和"Reduce",是它的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會(huì)分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。MapReduce最早是由Google公司研究提出的一種面向大規(guī)模數(shù)據(jù)處理的并行計(jì)算模型和方法。Google公司設(shè)計(jì)MapReduce的初衷主要是為了解決其搜索引擎中大規(guī)模網(wǎng)頁數(shù)據(jù)的并行化處理。Google公司發(fā)明了MapReduce之后首先用其重新改寫了其搜索引擎中的Web文檔索引處理系統(tǒng)。但由于MapReduce可以普遍應(yīng)用于很多大規(guī)模數(shù)據(jù)的計(jì)算問題,因此自發(fā)明MapReduce以后,Google公司內(nèi)部進(jìn)一步將其廣泛應(yīng)用于很多大規(guī)模數(shù)據(jù)處理問題。Google公司內(nèi)有上萬個(gè)各種不同的算法問題和程序都使用MapReduce進(jìn)行處理。2003年和2004年,Google公司在國際會(huì)議上分別發(fā)表了兩篇關(guān)于Google分布式文件系統(tǒng)和MapReduce的論文,公布了Google的GFS和MapReduce的基本原理和主要設(shè)計(jì)思想。MapReduce-優(yōu)缺點(diǎn)優(yōu)點(diǎn)缺點(diǎn)Mapreduce易于編程。它簡(jiǎn)單的實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序,這個(gè)程序可以分布到大量的廉價(jià)的pc機(jī)器上運(yùn)行。也就是說你寫一個(gè)分布式程序,跟寫一個(gè)簡(jiǎn)單的串行程序是一模一樣的。就是因?yàn)檫@個(gè)特性使的Mapreduce編程變得非常流行。良好的擴(kuò)展性。當(dāng)你的計(jì)算資源得不到滿足的時(shí)候,你可以通過簡(jiǎn)單的通過增加機(jī)器來擴(kuò)展它的計(jì)算能力。高容錯(cuò)性。Mapreduce的設(shè)計(jì)初衷就是使程序能夠部署在廉價(jià)的pc機(jī)器上,這就要求它具有很高的容錯(cuò)性。比如一個(gè)機(jī)器掛了,它可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn)上運(yùn)行,不至于這個(gè)任務(wù)運(yùn)行失敗,而且這個(gè)過程不需要人工參與,而完全是由hadoop內(nèi)部完成的。適合PB級(jí)以上海量數(shù)據(jù)的離線處理??梢詫?shí)現(xiàn)上千臺(tái)服務(wù)器集群并發(fā)工作,提供數(shù)據(jù)處理能力。不擅長(zhǎng)實(shí)時(shí)計(jì)算。Mapreduce無法做到像Mysql那樣做到毫秒或者秒級(jí)的返回結(jié)果不擅長(zhǎng)流式計(jì)算。流式計(jì)算的輸入數(shù)據(jù)是動(dòng)態(tài)的,而Mapreduce的輸入數(shù)據(jù)集是靜態(tài)的,不能流態(tài)變化。這是Mapreduce自身的設(shè)計(jì)特點(diǎn)決定了數(shù)據(jù)源必須是靜態(tài)的。不擅長(zhǎng)DAG(有向圖)計(jì)算。多個(gè)應(yīng)用程序存在依賴關(guān)系,后一個(gè)應(yīng)用程序的輸入為前一個(gè)應(yīng)用程序的輸出,在這種情況下,Mapreduce并不是不能做,而是使用后每個(gè)Mapreduce作業(yè)的輸出結(jié)果都會(huì)寫入到磁盤,會(huì)造成大量的磁盤IO,導(dǎo)致性能非常低下。MapReduce-核心編程思想一個(gè)完整的MapReduce程序在分布式運(yùn)行時(shí)有MrAppMaster、MapTask和ReduceTask三類實(shí)例進(jìn)程。其中MrAppMaster負(fù)責(zé)整個(gè)程序的過程調(diào)度及狀態(tài)協(xié)調(diào);MapTask負(fù)責(zé)Map階段的整個(gè)數(shù)據(jù)處理流程;ReduceTask負(fù)責(zé)Reduce階段的整個(gè)數(shù)據(jù)處理流程。分布式的運(yùn)算程序往往需要分成至少2個(gè)階段,第一個(gè)階段的MapTask并發(fā)實(shí)例,完全并行運(yùn)行,互不相干。第二個(gè)階段的ReduceTask并發(fā)實(shí)例互不相干,但是他們的數(shù)據(jù)依賴于上一個(gè)階段的所有MapTask并發(fā)實(shí)例的輸出。另外MapReduce編程模型只能包含一個(gè)Map階段和一個(gè)Reduce階段,如果用戶的業(yè)務(wù)邏輯非常復(fù)雜,那就只能多個(gè)MapReduce程序,串行運(yùn)行。MapReduce-shuffer機(jī)制Map方法之后,Reduce方法之前的數(shù)據(jù)處理過程稱之為Shuffle。如圖所示:MapReduce-MapTask機(jī)制MapReduce-ReduceTask機(jī)制(1)Copy階段:ReduceTask從各個(gè)MapTask上遠(yuǎn)程拷貝一片數(shù)據(jù),并針對(duì)某一片數(shù)據(jù),如果其大小超過一定閾值,則寫到磁盤上,否則直接放到內(nèi)存中。(2)Merge階段:在遠(yuǎn)程拷貝數(shù)據(jù)的同時(shí),ReduceTask啟動(dòng)了兩個(gè)后臺(tái)線程對(duì)內(nèi)存和磁盤上的文件進(jìn)行合并,以防止內(nèi)存使用過多或磁盤上文件過多。(3)Sort階段:按照MapReduce語義,用戶編寫reduce()函數(shù)輸入數(shù)據(jù)是按key進(jìn)行聚集的一組數(shù)據(jù)。為了將key相同的數(shù)據(jù)聚在一起,Hadoop采用了基于排序的策略。由于各

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論