Hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)(第2版)第4章 MapReduce編程入門_第1頁
Hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)(第2版)第4章 MapReduce編程入門_第2頁
Hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)(第2版)第4章 MapReduce編程入門_第3頁
Hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)(第2版)第4章 MapReduce編程入門_第4頁
Hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)(第2版)第4章 MapReduce編程入門_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MapReduce編程入門隨著互聯(lián)網(wǎng)的發(fā)展,加入互聯(lián)網(wǎng)的用戶越來越多,互聯(lián)網(wǎng)的用戶規(guī)模已不容小視。互聯(lián)網(wǎng)市場潛力巨大,各大網(wǎng)站的運(yùn)營商都在采取積極措施,分析用戶的特征,根據(jù)不同的客戶群向其提供差異化的服務(wù),進(jìn)而達(dá)到精準(zhǔn)營銷的目的。隨著一些網(wǎng)站用戶的增加,企業(yè)越來越難把握用戶的需求。為了能更好地滿足用戶需求,應(yīng)依據(jù)用戶的歷史瀏覽記錄研究用戶的興趣偏好,分析用戶的需求和行為,發(fā)現(xiàn)用戶的興趣點(diǎn),從而將用戶分成不同的群體。企業(yè)再根據(jù)不同的群體提供差異化的服務(wù),改善用戶體驗(yàn)。某競賽網(wǎng)站每年都會開展數(shù)據(jù)挖掘的競賽,在競賽期間網(wǎng)站會有大量的用戶訪問,當(dāng)用戶訪問網(wǎng)站頁面時,系統(tǒng)會記錄用戶訪問網(wǎng)站時的日志數(shù)據(jù),共有6個數(shù)據(jù)字段。任務(wù)背景字段名稱說明Id序號Content_id網(wǎng)頁IDUserid用戶IDSessionid緩存生成IDDate_time訪問時間

Page_path網(wǎng)址網(wǎng)站運(yùn)營方的工作重點(diǎn)之一,是向目標(biāo)用戶提供更優(yōu)質(zhì)的服務(wù)。要提高服務(wù)品質(zhì),必須根據(jù)服務(wù)對象的特點(diǎn)設(shè)計(jì)有針對性的服務(wù)方案。因此對用戶訪問網(wǎng)站的日志進(jìn)行數(shù)據(jù)分析,是一項(xiàng)非常重要的工作任務(wù)。網(wǎng)站的訪問次數(shù)分布情況對網(wǎng)站運(yùn)營商而言也是非常重要的指標(biāo)之一,網(wǎng)站運(yùn)營商從數(shù)據(jù)庫中抽取了網(wǎng)站2020年5月至2021年2月用戶登錄網(wǎng)站的行為日志數(shù)據(jù),針對用戶訪問網(wǎng)站的日志數(shù)據(jù),網(wǎng)站運(yùn)營方提出了兩個統(tǒng)計(jì)需求。根據(jù)訪問時間統(tǒng)計(jì)網(wǎng)站每日的總訪問次數(shù),按訪問日期輸出結(jié)果。對統(tǒng)計(jì)需求(1)的結(jié)果再進(jìn)行處理,將結(jié)果按訪問次數(shù)進(jìn)行升序排序。任務(wù)背景通常,網(wǎng)站的用戶訪問日志文件的數(shù)據(jù)量非常龐大,而且文件中的記錄數(shù)也較多,文件大多數(shù)為文本格式。為了保證較高的處理效率與靈活性,將選用MapReduce編程進(jìn)行數(shù)據(jù)處理。本章將詳細(xì)講解使用MapReduce編程解決實(shí)際問題。首先介紹MapReduce開發(fā)環(huán)境的搭建過程。接著介紹MapReduce編程原理與執(zhí)行流程。結(jié)合Hadoop官方的示例源碼WordCount介紹MapReduce編程的基本思路與處理邏輯。最后通過編寫MapReduce程序?qū)崿F(xiàn)競賽網(wǎng)站每日訪問次數(shù)的統(tǒng)計(jì),并對統(tǒng)計(jì)的結(jié)果根據(jù)訪問次數(shù)進(jìn)行升序排序。任務(wù)背景1通過源碼初識MapReduce編程目錄在IDEA中搭建MapReduce開發(fā)環(huán)境2統(tǒng)計(jì)網(wǎng)站的訪問次數(shù)3網(wǎng)站每日訪問量按訪問次數(shù)升序排序4Hadoop框架是基于Java語言開發(fā)的,而IntelliJIDEA是一個常用的Java集成開發(fā)工具,因此通常選用IntelliJIDEA作為MapReduce的編程工具。為了能夠成功地進(jìn)行MapReduce編程,本小節(jié)的任務(wù)如下。在本機(jī)系統(tǒng)(通常是Windows系統(tǒng))安裝Java。安裝IntelliJIDEA工具。在IntelliJIDEA中創(chuàng)建一個MapReduce工程,并配置MapReduce集成環(huán)境。任務(wù)描述JDK是Java語言的軟件開發(fā)工具包,主要用于移動設(shè)備、嵌入式設(shè)備上的Java應(yīng)用程序。JDK是整個Java開發(fā)的核心,包含了Java的運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)的類庫。本書后續(xù)章節(jié)的Hadoop開發(fā)是基于Java語言的,因此需要在Windows下安裝JDK,本書使用的JDK版本為JDK1.8,具體安裝步驟如下。雙擊JDK安裝包jdk-8u281-windows-x64.exe,進(jìn)入“JavaSE開發(fā)工具包”安裝向?qū)υ捒?,單擊“下一步”按鈕進(jìn)入安裝。在Windows下安裝Java單擊“更改”按鈕,選擇JDK的安裝目錄,用戶可以根據(jù)本機(jī)系統(tǒng)的磁盤空間自定義安裝目錄,單擊“下一步”按鈕,等待JDK安裝完成。在Windows下安裝Java安裝JDK后,系統(tǒng)將彈出一個提示對話框,,需選擇JRE的安裝位置。單擊“更改”按鈕,用戶可以根據(jù)本機(jī)系統(tǒng)的磁盤空間自定義JRE的安裝目錄。需要注意,JDK和JRE的安裝目錄最好在同一個文件夾下,如均安裝在“C:\ProgramFiles\java\”目錄下。單擊“下一步”按鈕進(jìn)行JRE的安裝。JRE安裝完成后單擊“關(guān)閉”按鈕即可完成JDK的安裝。在Windows下安裝Java安裝完Java后,需要在Windows系統(tǒng)配置環(huán)境變量,只有配置了環(huán)境變量,Java編譯環(huán)境才可以正常使用。在Windows系統(tǒng)配置環(huán)境變量的操作步驟如下。右鍵單擊“此電腦”桌面快捷方式,選擇“屬性”選項(xiàng),在出現(xiàn)的系統(tǒng)設(shè)置窗口中選擇“高級系統(tǒng)設(shè)置”選項(xiàng),進(jìn)入到“系統(tǒng)屬性”對話框,單擊“環(huán)境變量”按鈕,彈出“環(huán)境變量”對話框。在Windows下安裝Java單擊“系統(tǒng)變量”組中的“新建”按鈕,新建一個變量,變量名為“JAVA_HOME”,變量的值為JDK實(shí)際的安裝目錄。在Windows下安裝Java在“環(huán)境變量”對話框中,選擇“系統(tǒng)變量”組中的“Path”變量,并單擊“編輯”按鈕,在彈出的“編輯環(huán)境變量”對話框中,單擊右側(cè)的“新建”按鈕,輸入“%JAVA_HOME%\bin”的值,再次單擊“新建”按鈕,輸入“%JAVA_HOME%\jre\bin”的值。最后單擊“確定”按鈕完成Path變量編輯,返回“環(huán)境變量”對話框。在Windows下安裝Java在“環(huán)境變量”對話框中,單擊“系統(tǒng)變量”組中的“新建”按鈕,新建一個變量,輸入變量名“ClassPath”,輸入變量值“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”,單擊“確定”按鈕完成變量設(shè)置。測試環(huán)境變量是否配置成功。在個人計(jì)算機(jī)的開始菜單的搜索文本框中搜索“cmd”關(guān)鍵字,查詢并打開cmd命令提示符交互式界面,輸入“java-version”目錄,若出現(xiàn)下圖所示的信息,則說明安裝配置成功。在Windows下安裝Java在IDEA官網(wǎng)中下載IntelliJIDEA的安裝包,安裝包名稱為ideaIC-2018.3.6.exe(Community版),Community版即社區(qū)版,是免費(fèi)開源的,讀者也可以自行購買發(fā)行版。雙擊下載好的IDEA安裝包,在彈出的安裝向?qū)Ы缑嬷袉螕簟癗ext”按鈕,并設(shè)置IDEA的安裝目錄,用戶可根據(jù)本機(jī)系統(tǒng)的磁盤空間自定義IDEA的安裝目錄,并單擊“Next”按鈕。單擊“Finish”按鈕完成IDEA的安裝。下載與安裝IntelliJIDEA1.下載與安裝IDEA雙擊桌面生成的IDEA工具圖標(biāo),或從個人計(jì)算機(jī)的開始菜單中,依次選擇“JetBrains”→“IntelliJIDEACommunityEdition2018.3.6”選項(xiàng),運(yùn)行IntelliJIDEA。啟動過程中將詢問是否導(dǎo)入以前的設(shè)定,選擇“Donotimportsettings”單選按鈕,表示不導(dǎo)入,并單擊“OK”按鈕進(jìn)入下一步。下載與安裝IntelliJIDEA2.啟動IntelliJ

IDEA進(jìn)入下圖所示的界面,選擇IDEA設(shè)計(jì)界面的主題,可以選擇白色或黑色背景。考慮代碼和結(jié)果展示的清晰度,單擊“Light”單選按鈕,并單擊界面左下角的“SkipRemainingandSetDefaults”按鈕,跳過其他設(shè)置并采用默認(rèn)設(shè)置。設(shè)置完成后,即可進(jìn)入IDEA的運(yùn)行界面。下載與安裝IntelliJIDEA安裝好IntelliJIDEA開發(fā)工具后,即可在IDEA中創(chuàng)建MapReduce工程。在進(jìn)入IDEA后,單擊“CreateNewProfile”選項(xiàng),彈出“NewProject”對話框,在左側(cè)列表欄中選擇“Maven”選項(xiàng),并單擊界面右上方的“New…”按鈕,在彈出的對話框中選擇JDK的安裝目錄,單擊“OK”按鈕后,再單擊“Next”按鈕。新建MapReduce工程進(jìn)入左圖所示的對話框,“GroupId”是項(xiàng)目組織唯一的標(biāo)識符,實(shí)際對應(yīng)JAVA的包的結(jié)構(gòu),設(shè)置為“”;ArtifactId是項(xiàng)目的唯一的標(biāo)識符,實(shí)際對應(yīng)項(xiàng)目的名稱,設(shè)置為“Hadoop”;“Version”是項(xiàng)目的版本號,設(shè)置為“1.0-SNAPSHOT”,其中1.0是版本號,SNAPSHOT代表不穩(wěn)定、尚處于開發(fā)中的版本。單擊“Next”按鈕后進(jìn)入頭禿所示的對話框,填寫工程的名稱并選擇工程保存的位置,單擊“Finish”按鈕完成創(chuàng)建。新建MapReduce工程MapReduce工程創(chuàng)建完成后,在IDEA的主界面中可以查看該工程的目錄結(jié)構(gòu)。新建MapReduce工程雖然創(chuàng)建了MapReduce工程,但是該工程并不能運(yùn)行MapReduce程序,因?yàn)闆]有配置MapReduce環(huán)境,所以程序找不到Hadoop相關(guān)的JAR包。因此,在IDEA創(chuàng)建工程后,需要配置MapReduce環(huán)境,配置步驟如下。在Hadoop工程界面中,選擇菜單欄中的“File”→“ProjectStructure”命令,也可以直接使用“Ctrl+Alt+Shift+S”快捷鍵,打開“ProjectStructure”的對話框。配置MapReduce環(huán)境單擊“ProjectStructure”的對話框左側(cè)的“Libraries”選項(xiàng),再右側(cè)單擊“+”選項(xiàng),在彈出的選項(xiàng)欄中單擊“Java”選項(xiàng)。在彈出的對話框,選擇要添加的jar包,這里需要將Hadoop安裝目錄的/share/hadoop目錄下的全部JAR包導(dǎo)入,單擊“OK”按鈕進(jìn)入下一步。全部JAR包導(dǎo)入后,單擊“Apply”按鈕,再單擊“OK”按鈕,即可完成MapReduce環(huán)境配置。配置MapReduce環(huán)境Hadoop安裝包需要在本地先解壓1通過源碼初識MapReduce編程目錄在IDEA中搭建MapReduce開發(fā)環(huán)境2統(tǒng)計(jì)網(wǎng)站的訪問次數(shù)3將網(wǎng)站每日訪問量根據(jù)訪問次數(shù)進(jìn)行升序排序4進(jìn)行MapReduce編程前,需要先掌握MapReduce的基本原理,對MapReduce的核心模塊Mapper與Reducer的執(zhí)行流程有一定的認(rèn)識。Hadoop官方提供了一些示例源碼,十分適合初學(xué)者學(xué)習(xí)。本小節(jié)的任務(wù)如下。先理解MapReduce的工作原理、核心組成和MapReduce的執(zhí)行流程。再通過Hadoop官方示例源碼WordCount(詞頻統(tǒng)計(jì))掌握MapReduce的編程方法。任務(wù)描述MapReduce在名稱上即體現(xiàn)出了它的核心原理,即由Map和Reduce兩個階段組成。MapReduce通常也被簡稱為MR。了解MapReduce工作原理及核心組成Map“映射”,在Map階段進(jìn)行的一系列數(shù)據(jù)處理任務(wù)被稱為Mapper模塊。Reduce“歸約”,在Reduce階段進(jìn)行的一系列數(shù)據(jù)處理任務(wù)被稱為Reducer模塊。用比喻的方式解讀MapReduce的核心組成,MapReduce可以被視為一個專業(yè)處理大數(shù)據(jù)的工程隊(duì),主要成員如下。了解MapReduce工作原理及核心組成Mapper·映射器Mapper助理InputFormat·輸入文件讀取器Shuffle·運(yùn)輸隊(duì)Shuffle助理Sorter·排序器Reducer·歸約器Reducer助理OutputFormat·輸出結(jié)果寫入器一個基本完整的MapReduce程序了解MapReduce工作原理及核心組成了解MapReduce工作原理及核心組成數(shù)據(jù)分片數(shù)據(jù)映射MapReduce通過數(shù)據(jù)分片的方式切分?jǐn)?shù)據(jù),將數(shù)據(jù)分發(fā)給多個單元進(jìn)行處理,這也是分布式計(jì)算的第一步。在數(shù)據(jù)分片完成后,由Mapper助理InputFormat從文件的輸入目錄中讀取數(shù)據(jù),再由Mapper中的map()方法對文件的數(shù)據(jù)進(jìn)行解析,并重新組織成新的格式,Mapper會將數(shù)據(jù)轉(zhuǎn)換為<鍵,值>的鍵值對形式,再進(jìn)行處理。最后Mapper將處理結(jié)果輸出,等待Shuffle運(yùn)輸隊(duì)取走結(jié)果。了解MapReduce工作原理及核心組成數(shù)據(jù)歸約Reducer接收已排序的結(jié)果后,由Reducer中的reduce()方法對結(jié)果進(jìn)行匯總與計(jì)算,得到最終結(jié)果。最后由Reducer助理OutputFormat將結(jié)果輸出至指定位置。數(shù)據(jù)輸出Reduce階段處理完數(shù)據(jù)后即可將數(shù)據(jù)文件輸出到HDFS,輸出的存儲數(shù)據(jù)文件個數(shù)和Reduce的個數(shù)一致。數(shù)據(jù)混洗由Shuffle運(yùn)輸隊(duì)將獲取的結(jié)果按照相同的鍵(Key)進(jìn)行匯集,再將結(jié)果發(fā)送至Shuffle助理Sorter,由Sorter負(fù)責(zé)對匯集的結(jié)果進(jìn)行排序,并且Sorter是根據(jù)鍵(Key)進(jìn)行排序的,再將排序后的結(jié)果提交給Reducer。了解MR實(shí)現(xiàn)詞頻統(tǒng)計(jì)的執(zhí)行流程理解MapReduce的基本原理和核心組成后,以詞頻統(tǒng)計(jì)為例,進(jìn)一步了解MapReduce各階段的執(zhí)行流程。單詞的輸入與詞頻統(tǒng)計(jì)輸出內(nèi)容輸入輸出HelloWorldOurWorldHelloBigDataRealBigDataHelloHadoopGreatHadoopHadoopMapReduceBigData 2Great 1Hadoop 3Hello 3MapReduce 1Our 1Real 1World 2鍵值對(Key-ValuePair)是一種數(shù)據(jù)格式,每個鍵都有一個對應(yīng)的值。輸入文件的每一行記錄經(jīng)過映射處理后輸出為若干組鍵值對。Map階段生成鍵值對后,提交中間輸出結(jié)果進(jìn)入Reduce階段。了解MR實(shí)現(xiàn)詞頻統(tǒng)計(jì)的執(zhí)行流程1.Map階段的處理過程在Map階段輸出與Reduce階段輸入之間有一個Shuffle過程。Shuffle過程也被稱為數(shù)據(jù)混洗過程,作用是將鍵相同的鍵值對進(jìn)行匯集,并將鍵相同的值存入同一列表中。了解MR實(shí)現(xiàn)詞頻統(tǒng)計(jì)的執(zhí)行流程2.Reduce階段的處理過程本小節(jié)的任務(wù)是以Hadoop官方提供的示例源碼中的WordCount程序?yàn)槔?,進(jìn)行代碼級別的分析和說明。首先獲取WordCount的源代碼。在Hadoop3.1.4的安裝目錄中,進(jìn)入\share\hadoop\mapreduce\sources目錄,該目錄下面有一個hadoop-mapreduce-examples-3.1.4-sources.jar文件,解壓該縮文件。在org/apache/hadoop/examples子目錄中即可找到一個WordCount.java的文件,即為WordCount程序的源代碼。讀懂官方提供的WordCount源碼Driver程序主要指的是main方法,即MapReduce程序的入口,在main方法里面進(jìn)行MapReduce程序的一些初始化設(shè)置,并提交任務(wù),等待程序運(yùn)行完成。讀懂官方提供的WordCount源碼1.應(yīng)用程序Driver模塊讀懂官方提供的WordCount源碼第1部分(代碼第69行)初始化相關(guān)Hadoop配置,通過new關(guān)鍵字創(chuàng)建一個實(shí)例即可。第2部分(代碼第75行)新建Job并設(shè)置主類。Job實(shí)例化需要兩個參數(shù),第一個參數(shù)conf是Configuration的實(shí)例對象,第二個參數(shù)word

count指的是MapReduce任務(wù)的任務(wù)名稱。第3部分(代碼第77~79行)設(shè)置Mapper、Combiner、Reducer。讀懂官方提供的WordCount源碼第4部分(代碼第80~81行)設(shè)置輸出鍵值對格式。第5部分(代碼第82~86行)設(shè)置輸入與輸出路徑。若有必要,則可以增加對文件輸入與輸出格式的設(shè)置。最后部分(代碼第87行)提交任務(wù)等待運(yùn)行。在MapReduce程序中,主要的代碼實(shí)現(xiàn)包括了Mapper模塊中的map()方法以及Reducer模塊中的reduce()方法。在WordCount源碼中,Mapper模塊對應(yīng)源碼中的TokenizerMapper類。自定義TokenizerMapper(代碼第36~37行),需要繼承Mapper父類,同時需要設(shè)置輸入/輸出鍵值對格式,其中輸入鍵值對格式要和輸入格式設(shè)置的類需要讀取生成的鍵值對格式匹配

,而輸出鍵值對格式需要和Driver中設(shè)置的Mapper輸出的鍵值對格式匹配。讀懂官方提供的WordCount源碼2.Mapper模塊Mapper類共有3個方法,分別是setup()、map()、cleanup()。若TokenizerMapper類要使用Mapper類的方法,則需要重寫Mapper類里面的方法。Mapper任務(wù)啟動后首先執(zhí)行setup()方法,該方法主要用于初始化工作。map()方法針對每條輸入鍵值對執(zhí)行方法中定義的邏輯處理,并按規(guī)定的鍵值對格式輸出。在所有鍵值對處理完成后,再調(diào)用cleanup()方法,cleanup方法主要用于關(guān)閉資源等操作。map()方法的代碼實(shí)現(xiàn)要與實(shí)際業(yè)務(wù)邏輯掛鉤,由開發(fā)者自行編寫。讀懂官方提供的WordCount源碼在WordCount源碼中,Reducer模塊對應(yīng)源碼中的IntSumReducer類。自定義IntSumReducer類(代碼第52~53行),需要繼承Reducer父類,和Mapper一樣,需要設(shè)置輸入/輸出鍵值對格式。其中輸入鍵值對格式需要和Mapper的輸出鍵值對格式保持一致,輸出鍵值對格式需要和Driver中設(shè)置的輸出鍵值對格式保持一致。讀懂官方提供的WordCount源碼3.Reduce模塊Reducer也有3個方法:setup()、cleanup()、reduce()。且IntSumReducer類如果需要使用Reducer類中的方法,那么所使用的Reducer類中的方法需要重寫。setup()、cleanup()方法和Mapper的同名方法功能一致。setup()方法也是在最開始執(zhí)行一次。cleanup()方法在最后執(zhí)行一次。核心部分是reduce()方法的實(shí)現(xiàn),reduce()方法需要實(shí)現(xiàn)實(shí)際業(yè)務(wù)相關(guān)的處理邏輯。進(jìn)行MapReduce編程時,開發(fā)者主要實(shí)現(xiàn)Mapper與Reducer這兩個模塊,其中包括定義輸入/輸出的鍵值對格式、編寫map()與reduce()方法中定義的處理邏輯等。讀懂官方提供的WordCount源碼1通過源碼初識MapReduce編程目錄在IDEA中搭建MapReduce開發(fā)環(huán)境2統(tǒng)計(jì)網(wǎng)站的訪問次數(shù)3將網(wǎng)站每日訪問量根據(jù)訪問次數(shù)進(jìn)行升序排序4網(wǎng)站的訪問次數(shù)分布情況對網(wǎng)站運(yùn)營商而言是十分重要的指標(biāo),網(wǎng)站運(yùn)營商可以根據(jù)實(shí)際的訪問情況總結(jié)用戶可能感興趣的內(nèi)容,調(diào)整網(wǎng)站的版塊和內(nèi)容設(shè)計(jì)。本小節(jié)的任務(wù)是通過MapReduce編程實(shí)現(xiàn)網(wǎng)站每日的訪問量統(tǒng)計(jì)。編寫MapReduce程序首先需要考慮Map階段和Reduce階段各自的處理邏輯。再根據(jù)處理邏輯編寫Mapper模塊與Reducer模塊的代碼。最后將完整代碼編譯打包后提交至Hadoop集群運(yùn)行。任務(wù)描述根據(jù)Map階段的處理邏輯編寫Mapper模塊的代碼,Mapper模塊中主要實(shí)現(xiàn)的部分為map()方法。map()方法的主要任務(wù)是讀取用戶訪問文件中的數(shù)據(jù),輸出所有訪問日期與初始次數(shù)的鍵值對。訪問日期是數(shù)據(jù)文件中的第5列,因此先定義一個數(shù)組,再提取第5個元素的前9個字符,與初始次數(shù)1一起構(gòu)成輸出鍵值對,即<訪問日期,1>。分析思路與處理邏輯2.Mapper模塊的邏輯實(shí)現(xiàn)根據(jù)Reduce階段的處理邏輯編寫Reducer模塊的代碼,Reducer模塊中主要實(shí)現(xiàn)的部分為reduce()方法。reduce()方法的主要任務(wù)就是讀取Map階段的輸出鍵值對,即<訪問日期,1>。Reduce階段的處理邏輯與官方示例WordCount中Reduce階段的處理邏輯完全相同,因此Reducer類的主要代碼也相同,在此不再詳述。分析思路與處理邏輯3.Reducer模塊的邏輯實(shí)現(xiàn)編寫核心模塊代碼編寫Mapper模塊讀取日志數(shù)據(jù)并按“,”分隔符分割數(shù)據(jù),以日期作為鍵,以1作為值。編寫Reducer模塊讀取Mapper模塊的輸出鍵值對,并將相同鍵的值進(jìn)行累加,即可統(tǒng)計(jì)出網(wǎng)站每日的訪問次數(shù)。編寫Driver模塊設(shè)置Hadoop集群的初始化配置。第一部分,根據(jù)網(wǎng)站每日訪問次數(shù)的統(tǒng)計(jì)需求,分析Map階段和Reduce階段的處理邏輯,編寫Mapper模塊、Reducer模塊和Driver模塊的代碼。定義一個dailyAccessCount類,封裝Mapper模塊、Reducer模塊和Driver模塊的實(shí)現(xiàn)。任務(wù)實(shí)現(xiàn)第二部分,編譯生成JAR包文件,并提交至Hadoop集群執(zhí)行,操作步驟如下?!?/p>

編譯生成dailyAccessCount.jar?!ど蟼鱠ailyAccessCount.jar至master節(jié)點(diǎn)?!ぴ趍aster節(jié)點(diǎn)中,通過hadoop

jar命令提交MapReduce任務(wù)?!ぴ贖DFS中的服務(wù)監(jiān)控端口中,進(jìn)入HDFS的/Tipdm/Hadoop/MapReduce/Result/dailyAccessCount目錄下查看輸出結(jié)果。結(jié)果包含兩列數(shù)據(jù),第一列是訪問日期,已自動按日期的值進(jìn)行排序;第二列是每個日期對應(yīng)的總訪問次數(shù)。任務(wù)實(shí)現(xiàn)1通過源碼初識MapReduce編程目錄在IDEA中搭建MapReduce開發(fā)環(huán)境2統(tǒng)計(jì)網(wǎng)站的訪問次數(shù)3將網(wǎng)站每日訪問量根據(jù)訪問次數(shù)進(jìn)行升序排序4在上一小節(jié)中雖然已實(shí)現(xiàn)了網(wǎng)站每日訪問次數(shù)的統(tǒng)計(jì),并將輸出結(jié)果保存至HDFS,但是網(wǎng)站每日的訪問次數(shù)是根據(jù)日期進(jìn)行升序排序的,不能直觀地看出訪問次數(shù)大致的分布情況。本小節(jié)的任務(wù)如下。讀取/Tipdm/Hadoop/MapReduce/Result/dailyAccessCount目錄中的輸出結(jié)果。按照訪問次數(shù)進(jìn)行升序排序。將排序后的結(jié)果存儲至HDFS。任務(wù)描述首先,對需要處理的數(shù)據(jù)文件進(jìn)行分析,網(wǎng)站每日訪問次數(shù)的數(shù)據(jù)有兩個字段,訪問日期與訪問次數(shù)?,F(xiàn)需要根據(jù)第2列即訪問次數(shù)對文件中的數(shù)據(jù)進(jìn)行升序排序。分析思路與處理邏輯2020/10/1 180162020/10/2 186542020/10/3 26692020/10/4 12122020/10/5 1426

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論