ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制_第1頁(yè)
ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制_第2頁(yè)
ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制_第3頁(yè)
ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制_第4頁(yè)
ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

ha架構(gòu)的mapreule實(shí)現(xiàn)機(jī)制

隨著磁盤(pán)存儲(chǔ)容量的快速增加,訪(fǎng)問(wèn)速度無(wú)法迅速提高。20年前,普通硬盤(pán)驅(qū)動(dòng)器可以存儲(chǔ)17070個(gè)數(shù)據(jù),并具有4.4ms的寫(xiě)入速度。僅以5分鐘的速度從磁盤(pán)上讀取數(shù)據(jù)。20年后,由于磁盤(pán)上磁盤(pán)容量的大量出現(xiàn),使用1tb存儲(chǔ)容量的磁盤(pán)驅(qū)動(dòng)器非常正常。數(shù)據(jù)傳輸約為100ms,因此需要2.5小時(shí)以上才能讀取整個(gè)處理器的數(shù)據(jù)。如果你可以同時(shí)讀取多個(gè)磁盤(pán)上的數(shù)據(jù),數(shù)據(jù)訪(fǎng)問(wèn)效率將顯著提高。當(dāng)擁有100個(gè)磁盤(pán)時(shí),每個(gè)磁盤(pán)存儲(chǔ)1%的數(shù)據(jù)時(shí),并且可以一起工作,并且不到2分鐘就可以讀取所有磁盤(pán)數(shù)據(jù)。引入ha框架概念,可以建立一個(gè)大型商業(yè)集群,解決大量數(shù)據(jù)處理的問(wèn)題,從而提高傳統(tǒng)大量數(shù)據(jù)訪(fǎng)問(wèn)的訪(fǎng)問(wèn)效率低下的局面。本文以哈希結(jié)構(gòu)為基礎(chǔ),描述了就業(yè)工人的工資統(tǒng)計(jì)樣本,并分析和比較了單節(jié)點(diǎn)模式中假分布模式和完全分布模式的運(yùn)行速度。1基于hdfs的應(yīng)用程序存儲(chǔ)框架Hadoop是Apache軟件基金會(huì)所研發(fā)的分布式基礎(chǔ)架構(gòu),于2005年推出,它使用分布式文件系統(tǒng)(HadoopDistributedFileSystem,HDFS)作為低層存儲(chǔ)支持.HDFS有著高容錯(cuò)性的特點(diǎn),并將其設(shè)計(jì)部署在低廉的硬件設(shè)備上,以提供高傳輸率來(lái)訪(fǎng)問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序.目前國(guó)內(nèi)外著名的公司如Yahoo,阿里巴巴,百度,Facebook等都建立了基于Hadoop的應(yīng)用.下面分別從Hadoop的MapRe-duce實(shí)現(xiàn)機(jī)制和HDFS低層存儲(chǔ)來(lái)說(shuō)明如何構(gòu)建基于Hadoop的分布式應(yīng)用.1.1關(guān)鍵信息輸出Hadoop是MapReduce的實(shí)現(xiàn),而MapRe-duce的工作過(guò)程一般分為兩個(gè)階段:map階段和reduce階段.每個(gè)階段都有一批關(guān)鍵值對(duì)<key,value>作為輸入,而另一批關(guān)鍵值對(duì)<key,value>作為輸出.關(guān)鍵字的類(lèi)型可以由程序員選擇設(shè)定.程序員可以根據(jù)實(shí)際應(yīng)用具體設(shè)計(jì)兩個(gè)函數(shù)的實(shí)現(xiàn)體,在map階段輸入的是原始數(shù)據(jù),可以選擇文本文件作為輸入.1.1.1dh氣象數(shù)據(jù)的分析分布在全球各地的氣象傳感器每隔1h便收集當(dāng)?shù)氐臍庀髷?shù)據(jù),從而累積了大量的日志數(shù)據(jù),這些數(shù)據(jù)是可以用MapReduce來(lái)分析的最佳數(shù)據(jù).1.1.2數(shù)據(jù)文件的組織假設(shè)數(shù)據(jù)是以面向行的ASCII格式存儲(chǔ),每一行是一條記錄.該格式支持許多氣象元素,其中許多數(shù)據(jù)的長(zhǎng)度可選或可變.為簡(jiǎn)化起見(jiàn),我們將選擇始終都有固定寬度的數(shù)據(jù)(如溫度)進(jìn)行討論.數(shù)據(jù)文件按照日期和氣象站進(jìn)行組織,從1901~2010年,每一年都有一個(gè)目錄,每一個(gè)目錄都包含一個(gè)打包文件,文件中的每一個(gè)氣象站都帶有當(dāng)年的數(shù)據(jù).實(shí)際生活中有上萬(wàn)個(gè)氣象臺(tái),所以整個(gè)數(shù)據(jù)集由大量較小的文件組成.通常情況下,我們更容易、更有效地處理數(shù)量較少的大型文件.因此,數(shù)據(jù)會(huì)被預(yù)先處理,并將每年記錄的讀數(shù)連接到一個(gè)單獨(dú)的文件中.1.1.3map函數(shù)的輸出使用map函數(shù)找出年份和氣溫,在這種情況下,map函數(shù)處理過(guò)程僅是數(shù)據(jù)的一個(gè)準(zhǔn)備階段,map函數(shù)輸出的是能讓reduce函數(shù)在其中工作的數(shù)據(jù).map函數(shù)也可以很好地去除損壞的記錄,即在map函數(shù)中過(guò)濾掉丟失、不可靠或錯(cuò)誤的氣象數(shù)據(jù).以下面的幾行示例作為輸入數(shù)據(jù)(一些未使用的列已經(jīng)去除,為了符合頁(yè)面寬度,用省略號(hào)表示):(0,0067011990999991950051507004…9999999N9+00001+99999999999…)(106,0043011990999991950051512004…9999999N9+00221+99999999999…)(212,0043011990999991950051518004…9999999N9-00111+99999999999…)(318,0043012650999991949032412004…0500001N9+01111+99999999999…)(424,0043012650999991949032418004…0500001N9+00781+99999999999…)關(guān)鍵值是文件中的行偏移,而這往往是map函數(shù)中所忽視的.map函數(shù)的功能僅僅提取年份和空氣溫度(用黑體表示),并作為它的輸出發(fā)送出去.溫度值已被轉(zhuǎn)換成整數(shù):1950,0;1950,22;1950,-11;1949,111;1949,78.map函數(shù)的輸出先由MapReduce中的shuffle來(lái)處理,然后再被發(fā)送到reduce函數(shù).這種數(shù)據(jù)是一個(gè)一個(gè)鍵值對(duì).因此,reduce函數(shù)有以下輸入,每年的年份后面都有一系列溫度的數(shù)據(jù).所有的reduce函數(shù)現(xiàn)在必須重復(fù)這個(gè)列表并從中找出最大的讀數(shù):1949,(111,78);1950,(0,22,-11).最后輸出的全球氣溫中,每年的最高溫度為:1949,111;1950,22.整個(gè)數(shù)據(jù)流向如圖1所示.在圖1的底部是Unix的管道,以模擬整個(gè)MapReduce流程.1.2平臺(tái)存儲(chǔ),存儲(chǔ)分布式文件資料HDFS分為3個(gè)部分:客戶(hù)端(client);名稱(chēng)節(jié)點(diǎn)(NameNode);數(shù)據(jù)節(jié)點(diǎn)(DataNode).Client是基于HDFS的應(yīng)用程序;NameNode是分布式文件系統(tǒng)的管理者,主要負(fù)責(zé)文件系統(tǒng)的命名空間,集群的配置信息和數(shù)據(jù)塊的復(fù)制信息等,并將文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)在內(nèi)存中;DataNode是文件實(shí)際存儲(chǔ)的位置,它將塊(Block)的元數(shù)據(jù)信息,存儲(chǔ)在本地文件系統(tǒng)中,周期性地將所有的Block信息發(fā)給NameNode.HDFS的構(gòu)成如圖2所示.NameNode上的文件名稱(chēng)空間信息存儲(chǔ)在FsImage文件中,NameNode上還有一個(gè)事務(wù)日志文件EditLog.這兩個(gè)文件要有備份,以防文件損壞或者NameNode宕機(jī)導(dǎo)致系統(tǒng)不可恢復(fù).NameNode的作用主要有以下3個(gè):一是文件映射,把一個(gè)文件映射到一批數(shù)據(jù)block,把文件數(shù)據(jù)映射到DataNode上;二是集群的配置管理,數(shù)據(jù)塊的管理和復(fù)制;三是日志處理.2s生存率計(jì)算根據(jù)前面的Hadoop架構(gòu)及其MapReduce實(shí)現(xiàn)機(jī)制和HDFS低層存儲(chǔ),我們將一個(gè)公司所有員工的工資按照員工姓名、月工資存放于不同的文本文件中,并通過(guò)編寫(xiě)統(tǒng)計(jì)工資的map和reduce函數(shù),將計(jì)算輸出的員工姓名、員工年工資存放在結(jié)果文件中,如圖3所示.2.1代碼和分析由TokenizerMapper類(lèi)和IntSumReducer類(lèi)分析工資統(tǒng)計(jì)功能的MapReduce實(shí)現(xiàn).2.1.1tokenity涯安全類(lèi)定義TokenizerMapper類(lèi),繼承Hadoop提供的Mapper類(lèi)來(lái)實(shí)現(xiàn)個(gè)性化的map函數(shù).map函數(shù)中,由于輸入的文本內(nèi)容格式固定,故將文本文件中一行數(shù)據(jù)(value)提取出name和monthSalary后,寫(xiě)入context.其中用到的IntWritable類(lèi)是Hadoop為了統(tǒng)一格式所自帶的封裝類(lèi),與Integer無(wú)異.此類(lèi)map方法將分析后的結(jié)果寫(xiě)入context,作為IntSumReducer類(lèi)reduce方法的輸入.TokenizerMapper類(lèi)中map函數(shù)的基本算法思想為:(1)讀取文本文件中的一行數(shù)據(jù)String-Tokenizeritr=newStringTokenizer(value.toString());(2)獲取姓名Stringname=itr.nextToken();(3)獲取月薪IntWritablemonthSalary=newIntWritable(Integer.parseInt(itr.nextToken()));(4)計(jì)算結(jié)果輸出將結(jié)果寫(xiě)入context,作為reduce方法的輸入context.write(word,monthSalary).2.1.2年工資的計(jì)算方法定義IntSumReducer類(lèi),繼承Hadoop提供的Reducer類(lèi)來(lái)實(shí)現(xiàn)個(gè)性化的reduce函數(shù).reduce函數(shù)中,key為map提取出的姓名作為輸出參數(shù),values為map之后通過(guò)combiner歸并該名員工工資的集合,對(duì)每一名員工,假設(shè)其姓名是唯一的,那么可以作為主鍵區(qū)別.計(jì)算其對(duì)應(yīng)的月工資的總和(年工資),context輸出年工資.IntSumReducer類(lèi)中reduce函數(shù)的基本算法思想:(1)計(jì)算年工資總和根據(jù)key和values計(jì)算每個(gè)員工的年工資總和for(IntWritableval:values){sum+=val.get();};(2)計(jì)算結(jié)果輸出將結(jié)果寫(xiě)入context,并顯示輸出context.write(key,result).在完成了用于map的TokenizerMapper類(lèi)和用于reduce的IntSumReducer類(lèi)之后,通過(guò)Hadoop所提供的應(yīng)用類(lèi)去設(shè)置運(yùn)行時(shí)的一些參數(shù),最主要的是Job類(lèi),其中有許多設(shè)置,包括Jar類(lèi)、Mapper類(lèi)、Combiner類(lèi)、Reducer類(lèi),以及輸入輸出路徑等,通過(guò)waitForCompletion方法執(zhí)行任務(wù),直至完成.2.2map法運(yùn)行完成后輸出的文本文件的內(nèi)容格式為員工姓名、年工資,符合預(yù)期的運(yùn)行結(jié)果.程序的TokenizerMapper類(lèi)實(shí)現(xiàn)了Mapper接口的map方法,將輸入的文本文件逐行讀取,并以“空格”來(lái)劃分,將員工姓名作為key,其月工資作為value.map的結(jié)果集再由combiner歸并后輸出到reducer,對(duì)相同key的結(jié)果,求其value的和,并將其輸出到對(duì)應(yīng)目錄下.3工人年平均工資統(tǒng)計(jì)效率測(cè)試分布式計(jì)算法適合于大數(shù)據(jù)量的計(jì)算,大集群的效率無(wú)可置疑,但由于實(shí)驗(yàn)條件的限制,只能測(cè)試雙機(jī)集群的效率.3.1主要配置參數(shù)兩臺(tái)主機(jī)的主要軟硬件配置見(jiàn)表1.3.2a公司的主要運(yùn)行設(shè)備單節(jié)點(diǎn)模式:不涉及分布式文件系統(tǒng),在Eclipse中運(yùn)行(需配置Hadoop插件和運(yùn)行參數(shù)).偽分布模式:運(yùn)行于A機(jī).分布式模式(A-B):A作為master,B作為slave;下傳速度平均為2MB左右.分布式模式(B-A):B作為master,A作為slave;下傳速度平均為3.6MB左右.3.3測(cè)試結(jié)果由1MB數(shù)據(jù)量至1GB數(shù)據(jù)量進(jìn)行測(cè)試效率的比較,運(yùn)行時(shí)間結(jié)果記錄見(jiàn)表2.4算法的實(shí)現(xiàn)效果基于Hadoop架構(gòu)計(jì)算模式的出現(xiàn),突破了傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)對(duì)海量數(shù)據(jù)處理的速度限制,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論