Hadoop大數(shù)據(jù)處理技術基礎與實踐(第3版)課件 第5章-MapReduce 技術_第1頁
Hadoop大數(shù)據(jù)處理技術基礎與實踐(第3版)課件 第5章-MapReduce 技術_第2頁
Hadoop大數(shù)據(jù)處理技術基礎與實踐(第3版)課件 第5章-MapReduce 技術_第3頁
Hadoop大數(shù)據(jù)處理技術基礎與實踐(第3版)課件 第5章-MapReduce 技術_第4頁
Hadoop大數(shù)據(jù)處理技術基礎與實踐(第3版)課件 第5章-MapReduce 技術_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5章MapReduce學習目標

·了解MapReduce技術

·掌握MapReduce的編程模型

·了解MapReduce數(shù)據(jù)流

·了解MapReduce的任務流程

1.什么是MapReduce

簡單來說,MapReduce是一種思想,或是一種編程模型。對Hadoop來說,MapReduce是一個分布式計算框架,是它的一個基礎組件,當配置好Hadoop集群時,MapReduce已包含在內(nèi)。下面先舉個簡單的例子來幫助大家理解一下什么是MapReduce。假設有一個大型的文學作品集合,我們想要統(tǒng)計每個作者寫了多少篇文章。傳統(tǒng)的方式是讀取每篇文章,逐個搜索作者信息,然后逐個累加。這個過程需要消耗大量的時間和計算資源。利用MapReduce技術,我們可以將這個過程分為兩個步驟。第一步是Map過程,即將每篇文章中的作者信息提取出來,形成一個鍵值對。鍵是作者名,值是1。第二步是Reduce過程,即將相同作者的鍵值對聚合起來,將對應值相加,得到每個作者寫作的文章數(shù)目。在這個過程中,我們可以運用中國文化中的“協(xié)作精神”,將Map和Reduce過程分別交給不同的“部門”進行處理,最終達到共同完成任務的目標。同時,我們還可以通過對Map和Reduce過程的調(diào)優(yōu),體現(xiàn)中國的“精益求精”和“大同小異”思想,不斷提高MapReduce的處理效率和性能。1.什么是MapReduce

MapReduce是一種“分而治之“的思想,即把一個大而重的任務拆解開來,分成一系列小而輕的任務并行處理,這樣就使得任務可以快速解決。從業(yè)界使用分布式系統(tǒng)的變化趨勢和Hadoop框架的長遠發(fā)展來看,MapReduce的JobTracker/TaskTracker機制需要大規(guī)模的調(diào)整來修復它在可擴展性,內(nèi)存消耗,線程模型,可靠性和性能上的缺陷。在過去的幾年中,Hadoop開發(fā)團隊做了一些bug的修復,但是最近這些修復的成本越來越高,這表明對原框架做出改變的難度越來越大。為了從根本上解決舊MapReduce框架的性能瓶頸,促進Hadoop框架的更長遠發(fā)展,從0.23.0版本開始,Hadoop的MapReduce框架完全重構,發(fā)生了根本的變化。新的HadoopMapReduce框架出現(xiàn)了,從初期的MapReduceV1(MRv1)到MapReduceV2(MRv2),MRv2增加了YARN,YARN是資源管理和任務調(diào)度的框架,很好地減輕了MRv1的JobTracker的壓力。1.什么是MapReduceMapReduce程序轉(zhuǎn)變輸入數(shù)據(jù)元素列表成輸出數(shù)據(jù)元素列表。1.什么是MapReduceMapReduce程序的第一步叫做mapping1.什么是MapReduceReducing把數(shù)據(jù)聚集在一起。reducer函數(shù)接收來自輸入列表的迭代器2.MapReduce編程模型簡單模型HadoopMapReduce編程模型主要由兩個抽象類構成,即Mapper和Reducer。Mapper用以對切分過的原始數(shù)據(jù)進行處理,Reducer對Mapper的結果進行匯總,得到最后的輸出,2.MapReduce編程模型復雜模型對于大部分任務來說,都是需要Reduce過程的,并且由于任務繁重,會啟動多個Reducer(默認為1,根據(jù)任務量可由用戶自己設定合適的Reducer數(shù)量)來進行匯總,如圖5-4所示。如果只用一個Reducer計算所有Mapper的結果,會導致單個Reducer負載過于繁重,形成性能瓶頸,大大增加任務的運行周期。2.MapReduce編程模型Key值歸并

3.MapReduce數(shù)據(jù)流mapping任務平等,Mapper無特定標識,處理任意輸入每個mapper本地進行中間值交換,同鍵值送到同一個reducer。唯一的結點通信數(shù)據(jù)傳送由平臺處理高層MapReduce工作流水線3.MapReduce數(shù)據(jù)流

3.MapReduce數(shù)據(jù)流

輸入文件:任務的初始存儲地輸入格式:inputFormat定義了如何分割和讀取輸入文件。選擇對象劃分為inputSplits每個InputSplit一個map任務為RecordReader讀取文件提供一個工廠方法輸入格式描述鍵值TextInputFormat默認格式,讀取文件的行行的字節(jié)偏移量行的內(nèi)容KeyValueInputFormat把行解析為鍵值對第一個tab字符前的所有字符行剩下的內(nèi)容SequenceFileInputFormatHadoop定義的高性能二進制格式用戶自定義用戶自定義3.MapReduce數(shù)據(jù)流輸入塊InputSplit:文件拆分成塊Mapred-default.xml設置塊大小輸入格式定義了組成mapping階段的map任務列表,每個任務對應一個輸入塊。據(jù)InputSplit地址分配任務(最大任務數(shù)mapred.tasktracker.map.tasks.maximum)3.MapReduce數(shù)據(jù)流RecordReader訪問InputSplit轉(zhuǎn)換為適合mapper讀取的kv對RecordReader實例由輸入格式定義的默認的輸入格式TextInputFormat提供LineRecordReader偏移量-鍵;行-值RecordReader會在輸入塊上被重復的調(diào)用直到整個輸入塊被處理完畢,每一次調(diào)用RecordReader都會調(diào)用Mapper的map()方法。3.MapReduce數(shù)據(jù)流TextInputFormat演示3.MapReduce數(shù)據(jù)流給定一個鍵值對,map()方法會生成一個或多個鍵值對OutputCollector對象collect()的方法,利用該方法把鍵值對送到作業(yè)的reduce階段。3.MapReduce數(shù)據(jù)流WordCountMapperMap過程3.MapReduce數(shù)據(jù)流Shuffle:移動map輸出到reducer的過程叫做Partitons:每一個reduce節(jié)點會分派到中間輸出的鍵集合中的一個不同的子集合Partitioner類決定鍵值對去向,默認分類器計算鍵哈希值3.MapReduce數(shù)據(jù)流Mapper端shuffle–spill操作3.MapReduce數(shù)據(jù)流Mapper端shuffle–partition操作Partiton&Shuffle3.MapReduce數(shù)據(jù)流Mapper端shuffle演示(本演示內(nèi)容很少,只有一個Reducer,沒必要進行Partition操作)3.MapReduce數(shù)據(jù)流Reducer端shuffle3.MapReduce數(shù)據(jù)流Reducer端shuffle演示(如果設置了combine,在mergesort時會進行相應操作)3.MapReduce數(shù)據(jù)流每個reduce任務都會創(chuàng)建一個Reducer實例reducer的reduce()方法只會調(diào)用一次,它會接收一個鍵和關聯(lián)到鍵的所有值的一個迭代器,迭代器會以一個未定義的順序返回關聯(lián)到同一個鍵的值。3.MapReduce數(shù)據(jù)流WordCountReducer3.MapReduce數(shù)據(jù)流鍵值對通過OutputCollector被寫到輸出文件中,寫入的方式由輸出格式控制。每一個reducer會把結果輸出寫在公共文件夾中一個單獨的文件內(nèi),這些文件的命名一般是part-nnnnn,nnnnn是關聯(lián)到某個reduce任務的partition的id輸出格式描述TextOutputFormat默認的輸出格式,以"key\tvalue"的方式輸出行SequenceFileOutputFormat輸出二進制文件,適合于讀取為子MapReduce作業(yè)的輸入NullOutputFormat忽略收到的數(shù)據(jù),即不做輸出

3.MapReduce數(shù)據(jù)流TextOutputFormat演示4.MapReduce任務流程整體流程圖MRV2YARNMRV2+YARN4.MapReduce任務流程客戶端用于向Yarn集群提交任務MRAppMaster為ApplicationMaster的一個實現(xiàn),它監(jiān)控和調(diào)度一整套MR任務流程,每個MR任務只產(chǎn)生一個MRAppMaster。MRAppMaster只負責任務管理,并不負責資源的調(diào)配。用戶定義的Map函數(shù)和Reduce函數(shù)的實例化,在MRv2中,它們只能運行在Yarn給定的資源限制下,由MRAppMaster和NodeManage協(xié)同管理和調(diào)度。MRv2基本組成:4.MapReduce任務流程Yarn基本組成:RM:為整個集群的資源調(diào)度器ResourceSchedule:當有應用程序已經(jīng)注冊需要運行時,ApplicationMaster會向它申請資源,而它會根據(jù)當時的資源和限制進行資源分配,它會產(chǎn)生一個container資源描述。ApplicationsManager:它負責管理整個集群運行的所有任務,包括應用程序的提交、ResourceSchedule協(xié)商啟動和監(jiān)控ApplicationMaster,并在ApplicationMaster任務失敗時在其他節(jié)點重啟它4.MapReduce任務流程Yarn基本組成:負責對一個任務流程的調(diào)度、管理,包括任務注冊、資源申請以及和NodeManage通信以開啟和殺死任務等。運行于datanode,監(jiān)控并管理單個節(jié)點的計算資源,并定時向RM匯報節(jié)點的資源使用情況,當節(jié)點上有任務時,還負責對container進行創(chuàng)建、運行狀態(tài)的監(jiān)控及最終銷毀。Yarn架構下對運算資源的一種描述,它封裝了某個節(jié)點的多維度資源,包括cpu、ram、disk、network等。當AM向RM申請資源時,RM分配的資源就是以container表示的,Maptask和ReduceTask只能在所分配的container描述限制中運行。4.MapReduce任務流程client向ResourceManager提交任務ResourceManager分配該任務的第一個container,并通知相應的NodeManager啟動MRAppMaster。4.MapReduce任務流程NodeManager接受命令后,開辟一個container資源空間,并在container中啟動相應的MRAppMaster。4.MapReduce任務流程MRAppMaster啟動之后,第一步會向ResourceManager注冊,這樣用戶可以直接通過MRAppMaster監(jiān)控任務的運行狀態(tài);之后則直接由MRAppMaster調(diào)度任務運行,重復5~8,直到任務結束。4.MapReduce任務流程MRAppMaster以輪詢的方式向ResourceManager申請任務運行所需的資源。4.MapReduce任務流程一旦ResourceManager配給了資源,MRAppMaster便會與相應的NodeManager通信,讓它劃分Container并啟動相應的任務(MapTask或ReduceTask)。4.MapReduce任務流程NodeManager準備好運行環(huán)境,啟動任務。4.MapReduce任務流程各任務運行,并定時通過RPC協(xié)議向MRAppMaster匯報自己的運行狀態(tài)和進度。MRAppMaster也會實時地監(jiān)控任務的運行,當發(fā)現(xiàn)某個Task假死或失敗時,便殺死它重新啟動任務。4.MapReduce任務流程任務完成,MRAppMaster向ResourceManager通信,注銷并關閉自己。5.MapReduce的Streaming和PipeHadoopStreamingHadoopStreaming可以將任何可執(zhí)行的腳本或二進制文件封裝成Mapper或Reducer,可以大大提高MapReduce程序的開發(fā)效率。Streaming啟動的MR作業(yè)使用標準輸入輸出與用戶的MapReduce進行數(shù)據(jù)傳遞,所以要求用戶編寫的程序必須以標準輸入作為數(shù)據(jù)入口,標準輸出作為數(shù)據(jù)出口。

使用Streaming時,用戶需要提供兩個可執(zhí)行文件,一個用于Mappper,一個用于Reducer,當一個可執(zhí)行文件被用于Mapper或Reducer時,在初始化時,它們會作為一個單獨的進程啟動,而Mappper和Reducer則充當封裝傳遞角色,把輸入切分成行,傳給相應的可執(zhí)行文件

溫馨提示

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

評論

0/150

提交評論