資源描述:
《Hadoop應(yīng)用實(shí)例:基于Hadoop的大規(guī)模數(shù)據(jù)排序算法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于Hadoop的大規(guī)模數(shù)據(jù)排序算法網(wǎng)絡(luò)工程——終期報(bào)告基于Hadoop的大規(guī)模數(shù)據(jù)排序小組成員:組長:韓旭紅1091000161組員:李巍1091000167組員:李越1091000169組員:閆悅1091000178組員:焦天禹1091000163目錄一、前言4二、Hadoop及Mapreduce的相關(guān)介紹41.Hadoop4(1)Hadoop簡介4(2)Hadoop架構(gòu)5(3)分布式計(jì)算模型52.Mapreduce5(1)mapreduce和hadoop起源5(2)mapreduce工作流程6(3)運(yùn)行環(huán)境7(4)輸入與輸出7(5)Map/Reduce-用戶界面7三、大規(guī)模數(shù)據(jù)
2、排序81.簡介82.Nutch9四、算法分析101.Sort算法分析10(1)排序?qū)嵗?0(2)運(yùn)行排序基準(zhǔn)測試10(3)代碼分析102.Secondsort算法分析12(1)工作原理12(2)具體步驟12(3)SecondarySort.java的部分代碼133.Terasort算法分析15(1)概述15(2)算法思想15(3)Terasort算法17五、參考資料19六、小組成員個(gè)人總結(jié)201.1091000161韓旭紅202.1091000167李巍213.1091000169李越214.1091000178閆悅215.1091000163焦天禹22一、前言我們小組主要對基于[h
3、adoop的大規(guī)模數(shù)據(jù)排序算法、海量數(shù)據(jù)的生成做了一定的研究。我們首先對于hadoop做了初步了解,其次,mapreduce是hadoop的很重要的算法,我們在第二階段對mapreduce以及一些代碼做了分析。第三階段,我們安裝虛擬機(jī)和Linux以及hadoop的軟件,配置運(yùn)行環(huán)境。第四階段,我們對大規(guī)模數(shù)據(jù)排序進(jìn)行深入的研究,對nutch進(jìn)行了簡單的了解。第五階段,對一些源代碼進(jìn)行分析,主要是排序算法中的sort.java,secondsort.java,terasort。下面的正文中將作出具體的介紹。二、Hadoop及Mapreduce的相關(guān)介紹1.Hadoop(1)Hadoop
4、簡介Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng),簡稱HDFS。HDFS有著高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的硬件上。而且它提供高傳輸率來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。(1)Hadoop架構(gòu)圖表1hadoop架構(gòu)Hadoop有許多元素構(gòu)成。其最底部是HDFS,它存儲(chǔ)Hadoop集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS的上一層是MapReduce引擎,該引擎由JobTrackers和TaskTrackers組成。(2
5、)分布式計(jì)算模型一個(gè)hadoop集群往往有幾十臺(tái)甚至成百上千臺(tái)lowcost的計(jì)算機(jī)組成,我們運(yùn)行的每一個(gè)任務(wù)都要在這些計(jì)算機(jī)上做任務(wù)的分發(fā),執(zhí)行中間數(shù)據(jù)排序以及最后的匯總,期間還包含節(jié)點(diǎn)發(fā)現(xiàn),任務(wù)的重試,故障節(jié)點(diǎn)替換等等等等的維護(hù)以及異常情況處理。所以說hadoop就是一個(gè)計(jì)算模型。一個(gè)分布式的計(jì)算模型。1.Mapreduce(1)mapreduce和hadoop起源MapReduce借用了函數(shù)式編程的概念,是Google發(fā)明的一種數(shù)據(jù)處理模型。因?yàn)镚oogle幾乎爬了互聯(lián)網(wǎng)上的所有網(wǎng)頁,要為處理這些網(wǎng)頁并為搜索引擎建立索引是一項(xiàng)非常艱巨的任務(wù),必須借助成千上萬臺(tái)機(jī)器同時(shí)工作(也就
6、是分布式并行處理),才有可能完成建立索引的任務(wù)。所以,Google發(fā)明了MapReduce數(shù)據(jù)處理模型,而且他們還就此發(fā)表了相關(guān)論文。后來,DougCutting老大就根據(jù)這篇論文硬生生的復(fù)制了一個(gè)MapReduce出來,也就是今天的Hadoop。(1)mapreduce工作流程MapReduce處理數(shù)據(jù)過程主要分成2個(gè)階段:map階段和reduce階段。先執(zhí)行map階段,再執(zhí)行reduce階段。①在正式執(zhí)行map函數(shù)前,需要對輸入進(jìn)行“分片”(就是將海量數(shù)據(jù)分成大概相等的“塊”,hadoop的一個(gè)分片默認(rèn)是64M),以便于多個(gè)map同時(shí)工作,每一個(gè)map任務(wù)處理一個(gè)“分片”。②分片
7、完畢后,多臺(tái)機(jī)器就可以同時(shí)進(jìn)行map工作了。map函數(shù)要做的事情,相當(dāng)于對數(shù)據(jù)進(jìn)行“預(yù)處理”,輸出所要的“關(guān)切”。map對每條記錄的輸出以pair的形式輸出。③在進(jìn)入reduce階段之前,要將各個(gè)map中相關(guān)的數(shù)據(jù)(key相同的數(shù)據(jù))歸結(jié)到一起,發(fā)往一個(gè)reducer。這里面就涉及到多個(gè)map的輸出“混合地”對應(yīng)多個(gè)reducer的情況,這個(gè)過程叫做“洗牌”。④接下來進(jìn)入reduce階段。相同的key的map輸出會(huì)到達(dá)同一個(gè)reduc