第五章 MapReduce入門編程_第1頁
第五章 MapReduce入門編程_第2頁
第五章 MapReduce入門編程_第3頁
第五章 MapReduce入門編程_第4頁
第五章 MapReduce入門編程_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章MapReduce編程入門1MapReduce概述、編程模型目錄下載和安裝idea、maven2MapReduce代碼實現(xiàn)3下載和安裝idea在官網(wǎng)下載idea安裝包官網(wǎng):/idea/下載和安裝idea2.將idea安裝包解壓到本地的安裝目錄3.雙擊解壓文件下idea文件夾中的圖標打開idea添加maven插件ApacheMaven是一個(特別是Java編程)項目管理及自動構(gòu)建工具。maven三大功能:管理依賴、構(gòu)建項目、管理項目信息。1)項目的自動構(gòu)建,幫助開發(fā)人員做項目代碼的編譯、測試、打包、安裝、部署等。

2)管理依賴(管理項目中使用的各種jar包)。ProjectObjectModel項目對象模型,maven把項目當做模型處理。操作這個模型就是操作項目。maven通過pom.xml文件實現(xiàn)項目的構(gòu)建和依賴的管理。添加maven插件進入官網(wǎng):/解壓安裝包配置環(huán)境變量添加maven工程進入idea,新建一個項目。選擇maven,projectsdk選擇自己的java版本添加maven工程Name:推薦填寫跟項目相關(guān)的名字。Location:選擇路徑GroupId:填寫域名ArtifactId:填寫項目名Version:填寫版本添加maven工程工程添加完成:想要運行HDFSJavaApi或MR,則需要修改maven自帶的pom文件,進行包及包的依賴下載:添加maven工程添加內(nèi)容參考如下:<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.7.6</version></dependency></dependencies>1MapReduce概述、編程模型目錄下載和安裝idea、maven2MapReduce代碼實現(xiàn)3MapReduce概述

MapReduce是什么簡單地說,MapReduce是面向大數(shù)據(jù)并行處理的計算模型、框架和平臺。具體包含以下3層含義。MapReduce是一個并行程序的計算模型與方法MapReduce是一個并行程序運行的軟件框架MapReduce是一個基于集群的高性能并行計算平臺MapReduce概述

MapReduce基本設(shè)計思想面向大規(guī)模數(shù)據(jù)處理,MapReduce有以下三個層面上的基本設(shè)計思想。分而治之抽象成模型上升到構(gòu)架MapReduce概述

MapReduce優(yōu)缺點MapReduce優(yōu)點1)MapReduce易于編程。2)良好的擴展性。3)高容錯性。4)適合PB級以上海量數(shù)據(jù)的離線處理。MapReduce缺點1)不適合實時計算。2)不適合流式計算。3)不適合DAG(有向無環(huán)圖)計算MapReduce概述

MapReduce是Hadoop提供的一種處理海量數(shù)據(jù)的并行編程模型和計算框架,用于對大規(guī)模的數(shù)據(jù)進行并行計算。主要由ResourceManager和NodeManager兩類節(jié)點構(gòu)成。ResourceManager主要負責集群資源管理,NodeManager負責節(jié)點的資源管理。當運行MapReduce任務(wù)的時候,后產(chǎn)生ApplicationMaster和Container,其中ApplicationMaster負責向ResourceManager節(jié)點進行資源的申請并控制任務(wù)的執(zhí)行,Container是最基本的資源單位。MapReduce的Map和Reduce均是其之上進行運行的。MapReduce概述

MapReduce編程思想MapReduce采用“分而治之”的思想。對大規(guī)模的數(shù)據(jù)集的操作分配給各子節(jié)點進行操作,然后通過整合子節(jié)點的中間結(jié)果得到最終結(jié)果。即“任務(wù)的分解和結(jié)果的匯總”。Hadoop將這個工作高度抽象成為兩個函數(shù),分別為Map和Reduce。Map負責將任務(wù)分解為多個任務(wù)。Reduce負責將多個Map任務(wù)的中間結(jié)果合并為最終結(jié)果。在此過程中的其他步驟均由Hadoop的MapReduce框架自行負責處理,包括工作調(diào)度、任務(wù)分配和節(jié)點間通信等。MapReduce原理

(1)Mapper:映射器。(2)Mapper助理InputFormat:輸入文件讀取器。(3)Shuffle:運輸隊。(4)Shuffle助理Sorter:排序器。(5)Reducer:歸約器。(6)Reducer助理OutputFormat:輸出結(jié)果寫入器。MapReduce原理

數(shù)據(jù)分片。假設(shè)原始文件中8000萬行記錄被系統(tǒng)分配給100個Mapper來處理,那么每個Mapper處理80萬行數(shù)據(jù)。相當于MapReduce通過數(shù)據(jù)分片的方式,把數(shù)據(jù)分發(fā)給多個單元來進行處理,這就是分布式計算的第一步。數(shù)據(jù)映射。在數(shù)據(jù)分片完成后,由Mapper助理InputFormat從文件的輸入目錄中讀取這些記錄,然后由Mapper負責對記錄進行解析,并重新組織成新的格式。然后Mapper把自己的處理結(jié)果輸出,等待Shuffle運輸隊取走結(jié)果。數(shù)據(jù)混洗。由Shuffle運輸隊把獲取的結(jié)果按照相同的鍵(Key)進行匯集,再把結(jié)果送到Shuffle助理Sorter,由Sorter負責對這些結(jié)果排好序,然后提交給Reducer。數(shù)據(jù)歸約。Reducer收到傳輸過來的結(jié)果后,接著進行匯總與映射工作,得到最終計算結(jié)果。最后由Reducer助理OutputFormat把結(jié)果輸出到指定位置。MapReduce應(yīng)用示例

背景分析WordCount主要完成的功能是:統(tǒng)計一系列文本文件中每個單詞出現(xiàn)的次數(shù)MapReduce應(yīng)用示例

解決問題的思路業(yè)務(wù)場景:有大量的文件,每個文件里面存儲的都是單詞。我們的任務(wù):統(tǒng)計所有文件中每個單詞出現(xiàn)的次數(shù)。解決思路:先分別統(tǒng)計出每個文件中各個單詞出現(xiàn)的次數(shù);然后,再累加不同文件中同一個單詞出現(xiàn)次數(shù)。MapReduce應(yīng)用示例

數(shù)據(jù)處理流程分析把數(shù)據(jù)源轉(zhuǎn)化為<key,value>對MapReduce應(yīng)用示例

數(shù)據(jù)處理流程分析自定義map()方法處理Mapper任務(wù)輸入的<key,value>對MapReduce應(yīng)用示例

數(shù)據(jù)處理流程分析Map端的shuffle過程MapReduce應(yīng)用示例

數(shù)據(jù)處理流程分析自定義reduce()方法處理Reduce任務(wù)輸入的<key,value>對1MapReduce概述、編程模型目錄下載和安裝idea、maven2MapReduce代碼實現(xiàn)3WordCount代碼實現(xiàn)Mapper類//Map階段

publicstaticclassMyMapperextendsMapper<LongWritable,Text,Text,IntWritable>{/***@paramkey*@paramvalue*@paramcontext*@throwsIOException*@throwsInterruptedException*/protectedvoidmap(LongWritablekey,Textvalue,Mapper<LongWritable,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{//實現(xiàn)自己的map端邏輯

StringvStr=value.toString();//按照空格切分,將每個單詞切分出來

String[]words=vStr.split("");//遍歷每一個單詞,構(gòu)造k——v格式

for(Stringword:words){TextkeyOut=newText(word);IntWritablevalueOut=newIntWritable(1);//通過context將構(gòu)建好的k-v發(fā)送出去

context.write(keyOut,valueOut);}}}WordCount代碼實現(xiàn)

Reducer類//Reduce階段

publicstaticclassMyReducerextendsReducer<Text,IntWritable,Text,IntWritable>{/***@paramkey*@paramvalues*@paramcontext*@throwsIOException*@throwsInterruptedException*/@Overrideprotectedvoidreduce(Textkey,Iterable<IntWritable>values,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{//實現(xiàn)自己的Reduce邏輯

intsum=0;//保存每個單詞的數(shù)量

for(IntWritablevalue:values){//遍歷values迭代器

sum+=value.get();}//將Reduce統(tǒng)計得到的結(jié)果輸出到HDFScontext.write(key,newIntWritable(sum));}}WordCount代碼實現(xiàn)

Driver類//Driver端(將Map、Reduce進行組裝)

publicstaticvoidmain(String[]args)throwsIOException,InterruptedException,ClassNotFoundException{//創(chuàng)建配置文件

Configurationconf=newConfiguration();//創(chuàng)建一個Job實例

Jobjob=Job.getInstance(conf);//對Job進行一些簡單的配置

job.setJobName("demo1WordCount");//設(shè)置運行Job時該執(zhí)行哪一個類

job.setJarByClass(demo1WordCount.class);//對Map端進行配置

job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setMapperClass(MyMapper

溫馨提示

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

評論

0/150

提交評論