楊 丹,張 晶,趙 驥,王 剛
“分布式計算與開發(fā)模式”綜合設(shè)計性實驗案例
楊 丹,張 晶,趙 驥,王 剛
(遼寧科技大學(xué) 軟件學(xué)院,遼寧 鞍山 114051)
針對面向計算機專業(yè)本科生開設(shè)的“分布式計算與開發(fā)模式”專業(yè)課的特點和大綱要求,設(shè)計了該綜合設(shè)計性實驗。該實驗在Windows系統(tǒng)下,使用Hadoop分布框架和Eclipse快速開發(fā)平臺,實現(xiàn)了地震數(shù)據(jù)集的統(tǒng)計任務(wù)。對實驗?zāi)康摹⑷蝿?wù)要求、實驗方法和步驟、算法流程等進行了細介紹。實踐結(jié)果表明,通過此綜合設(shè)計性實驗,學(xué)生的實驗積極性和對分布式計算的掌握程度大大提高。
分布式計算;綜合設(shè)計性實驗;Hadoop;MapReduce
“分布式計算與開發(fā)模式”實驗課程是針對我校計算機專業(yè)本科生開設(shè)的一門專業(yè)課。該課程涵蓋分布式計算模型與原理、分布式開發(fā)模式。培養(yǎng)學(xué)生的分布式程序設(shè)計能力,是分布式計算與開發(fā)模式課程的一個重要目的。通過該課程實驗,學(xué)生可以驗證分布式計算的原理基礎(chǔ),提高編制清晰、合理、可讀性好的分布式程序的能力,更好地掌握基本分布式計算模型MapReduce原理,獲得實際開發(fā)分布式程序的能力。
近年來,分布式計算與分布式應(yīng)用在IT領(lǐng)域中占據(jù)重要地位。開源框架Hadoop分布式計算平臺[1]已經(jīng)成為眾多電子商務(wù)網(wǎng)站的基礎(chǔ)應(yīng)用平臺,是一種高效處理極大規(guī)模數(shù)據(jù)的平臺[2-3]。Hadoop是一個實現(xiàn)了MapReduce[4]和GFS[5]技術(shù)的開源平臺,它可以在由低成本硬件組成的集群上處理極大規(guī)模的數(shù)據(jù)集。Hadoop項目中最主要的2個子項目分別是Hadoop分布式文件系統(tǒng)(HDFS)和MapReduce。HDFS[6-7]是一個可以存儲大數(shù)據(jù)集的文件系統(tǒng),它是通過向外擴展方式構(gòu)建的主機集群,以時延為代價對吞吐量進行優(yōu)化,并且通過副本替換冗余達到高可靠性。HDFS的體系結(jié)構(gòu)如圖1所示。MapRedue[8-9]是一個數(shù)據(jù)處理范式,規(guī)范了數(shù)據(jù)在2個處理階段(被稱為Map和Reduce)的輸入和輸出,并將其應(yīng)用于任意規(guī)模的大數(shù)據(jù)集。

圖1 HDFS體系結(jié)構(gòu)圖
MapReduce編程模型的設(shè)計理念源自2004年谷歌公司發(fā)表的一篇論文[10]。MapReduce采用“分而治之”的思想,把對大規(guī)模數(shù)據(jù)集的操作,分發(fā)給主節(jié)點管理下的各個分節(jié)點共同完成,然后通過整合各節(jié)點的中間結(jié)果,得到最終結(jié)果[11]。簡單地說,MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。這種分布式計算模型,主要用于解決海量數(shù)據(jù)的計算問題,具有易編程、擴展性好、容錯性高等[12-13]等特點。常見的MapReduce應(yīng)用場景包括數(shù)據(jù)統(tǒng)計、搜索引擎建索引、海量數(shù)據(jù)查找、復(fù)雜數(shù)據(jù)分析算法實現(xiàn),如分類算法、聚類算法、推薦算法和圖算法等[14]。
MapReduce計算模型主要由3部分構(gòu)成:Map、Shuffle和Reduce。Map是映射,負責(zé)數(shù)據(jù)的過濾分類,將原始數(shù)據(jù)轉(zhuǎn)化為鍵值對;Reduce是合并,將具有相同key值的value進行處理后,再輸出新的鍵值對作為最終結(jié)果。為了讓Reduce可以并行處理Map的結(jié)果,必須對Map的輸出進行一定的排序與分割,再交給對應(yīng)的Reduce,即Shuffle過程。Shuffle過程包含Map Shuffle和Reduce Shuffle[15]。
MapReduce工作原理模型如圖2所示。

圖2 MapReduce工作原理模型圖
其中,Map任務(wù)處理包括如下步驟:
步驟1:讀取HDFS中的文件。每一行解析成一個
步驟2:覆蓋Map(),接收步驟1產(chǎn)生的
步驟3:對步驟2輸出的
步驟4:對不同分區(qū)中的數(shù)據(jù)進行排序(按照key)、分組。分組是將相同key的value放到一個集合中;
步驟5:(可選)對分組后的數(shù)據(jù)進行歸約。
Reduce任務(wù)處理包括如下步驟:
步驟1:將多個Map任務(wù)的輸出,按照不同的分區(qū),通過網(wǎng)絡(luò)復(fù)制到不同的reduce節(jié)點上;
步驟2:對多個Map的輸出進行合并、排序。覆蓋reduce函數(shù),接收的是分組后的數(shù)據(jù),實現(xiàn)自己的業(yè)務(wù)邏輯,然后產(chǎn)生新的
步驟3:將reduce輸出的
以Hadoop經(jīng)典的單詞統(tǒng)計程序(wordcount)為例的MapReduce執(zhí)行流程如圖3所示。

圖3 單詞統(tǒng)計的MapReduce執(zhí)行流程圖
下面以Windows系統(tǒng)下,使用Hadoop分布式框架與Eclipse快速開發(fā)平臺實現(xiàn)地震數(shù)據(jù)集的各種統(tǒng)計任務(wù)為例,介紹綜合設(shè)計性實驗案例的設(shè)計。
實驗?zāi)康模海?)理解和掌握MapReduce執(zhí)行原理;(2)理解并掌握Map、reduce階段的任務(wù)與步驟;(3)熟悉并掌握Map、reduce方法的代碼編寫。
實驗任務(wù)要求:設(shè)計并編寫MapReduce分布式程序,實現(xiàn)從地震數(shù)據(jù)集中獲取每年最大震級、每月最大震級以及所有記錄中的最大震級3個子任務(wù),要求實驗輸出結(jié)果按時間升序排列。
地震數(shù)據(jù)集:1999年1月至2016年8月之間由國家地震臺網(wǎng)速報目錄提供的地震發(fā)生時間、發(fā)生地點以及震級等情況。具體包括:發(fā)生地震的日期信息、時間點信息、緯度信息、經(jīng)度信息、深度信息、震級及地點信息。所有記錄信息存儲在名為earthquake_info.txt的文本文件中。部分?jǐn)?shù)據(jù)集的統(tǒng)計信息如圖4所示。然后讀取earthquake_info.txt文本文件中的內(nèi)容,遍歷逐條信息,以日志的方式保存到HDFS分布式系統(tǒng)上。

圖4 部分地震數(shù)據(jù)信息圖
實驗所使用的計算機為Inter(R) Core(TM) i5- 3337U、1.80 GHz CPU、4 GB內(nèi)存、Windows 7操作系統(tǒng),使用JDK1.8、Eclipse 4.4.1、Hadoop2.8.5開發(fā)環(huán)境。
(1)在Eclipse下,配置Hadoop路徑如圖5所示。

圖5 配置Hadoop路徑圖
(2)在Eclipse下,找到File-new-other-Map/ Reduce,如圖6(a)所示,新建Map/Reduce工程myDemo,如圖6(b)所示。

(a)(b)
(3)在工程myDemom的src目錄下創(chuàng)建com.pzr. mapreduce包,包中創(chuàng)建MyMapper類、MyReduce類和MyMagnitude主類,然后創(chuàng)建org.apache.hadoop.io. native包,包下建NativeIO類。并將D:hadoophadoop- 2.8.5etchadoop下的log4j.properties文件拷貝到src目錄下面。創(chuàng)建目錄如圖7所示。

圖7 Map/Reduce工程目錄結(jié)構(gòu)圖
(4)運行MapReduce程序,MyMagnitude是main函數(shù)運行類,執(zhí)行時需要調(diào)整運行參數(shù)。如圖8(a)—(c)所示。

(a) (b) (c)
以獲取每年最大震級的任務(wù)為例,MapReduce程序MaxMagnitudeByYear的偽代碼如表1所示。

表1 偽代碼
最終計算出1999年1月至2006年8月每年最大震級實驗結(jié)果、每月最大震級實驗結(jié)果和全時段最大震級實驗結(jié)果,如圖9所示。

圖9 程序運行實現(xiàn)圖
針對分布式計算與開發(fā)模式實驗教學(xué)的特點,針對課程實驗中存在的問題,通過設(shè)計MapReduce編程實例“計算不同時間條件下的最大震級”的綜合設(shè)計性實驗,不僅考查了學(xué)生的編程能力,也檢驗了學(xué)生對分布式計算知識的掌握和理解,調(diào)動了學(xué)生的實驗積極性,提高了學(xué)生綜合運用所學(xué)知識的能力。
[1] 秦杰儀,曾志,孫蕾,等.基于Hadoop的大數(shù)據(jù)平臺架設(shè)探討[J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2018(5): 47–49.
[2] 范素娟,田軍鋒.基于Hadoop的云計算平臺研究與實現(xiàn)[J]. 計算機技術(shù)與發(fā)展,2016, 26(7): 127–132.
[3] 馬瑞敏,卞藝杰,陳超,等.基于Hadoop的電子商務(wù)個性化推薦算法:以電影推薦為例[J].計算機系統(tǒng)應(yīng)用,2015, 24(5): 111–117.
[4] 梁芷梧.云計算中MapReduce分布式并行處理框架的研究[D].武漢:湖北工業(yè)大學(xué),2017.
[5] 陳晨,陳達麗.谷歌大數(shù)據(jù)技術(shù)的研究及開源實現(xiàn)[J].軟件產(chǎn)業(yè)與工程,2015(5): 31–36.
[6] 付東華.基于HDFS的海量分布式文件系統(tǒng)的研究與優(yōu)化[D].北京:北京郵電大學(xué),2012.
[7] 易理林. HDFS文件系統(tǒng)中元數(shù)據(jù)的高可用性管理方法研究[D].廣州:華南理工大學(xué),2013.
[8] 鄭瑛.分布式并行編程模型MapReduce及其應(yīng)用研究[J].西南民族大學(xué)學(xué)報(自然科學(xué)版),2017, 43(2): 161–166.
[9] 盤隆.基于MapReduce的分布式編程框架的設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[10] 武鑫.基于MapReduce的協(xié)同過濾算法并行化研究[D].天津:河北工業(yè)大學(xué),2014.
[11] 付啟沐.基于可重構(gòu)硬件架構(gòu)的MapReduce計算方法研究與實現(xiàn)[D].北京:北京交通大學(xué),2016.
[12] 王剛. MapReduce計算模型性能優(yōu)化的研究[D].濟南:山東建筑大學(xué),2016.
[13] 宋杰,郝文寧,陳剛,等.基于MapReduce的分布式ETL多維數(shù)據(jù)模型研究[J].計算機科學(xué),2013, 40(增刊2): 263–266.
[14] 吳崇正.基于MapReduce的分布式搜索引擎研究[D].蘭州:蘭州理工大學(xué),2013.
[15] 張家錄,陸汝華.基于MapReduce模型的電子商務(wù)欺詐信息挖掘方法[J].湘南學(xué)院學(xué)報,2018(5): 43–47.
Case of comprehensive design experiment for “Distributed computing and development model”
YANG Dan, ZHANG Jing, ZHAO JI, WANG Gang
(SchoolofSoftware, University ofScienceandTechnology Liaoning, Anshan 114051, China)
In view of the characteristics and outline requirements of the “Distributed computing and development model” course for undergraduates majoring in computer science, this comprehensive design experiment is designed. This experiment realizes the statistical task of seismic data set under Windows system by using the Hadoop distribution framework and Eclipse rapid development platform. The experimental purpose, task requirements, experimental methods and procedures and algorithm flow are introduced in detail. Practical results show that through this comprehensive design experiment, students’ experimental enthusiasm and mastery of distributed computing are greatly improved.
distributed computing;comprehensive design experiment; Hadoop; MapReduce
G642.423
A
1002-4956(2019)10-0197-04
10.16791/j.cnki.sjg.2019.10.047
2019-03-02
教育部“數(shù)啟科教 智見未來”產(chǎn)教聯(lián)合基金項目(2017B00007);教育部產(chǎn)學(xué)合作協(xié)同育人項目(201702124017,201702124008);遼寧省創(chuàng)新創(chuàng)業(yè)教育改革試點專業(yè)項目(遼教函[2017]838號);遼寧省普通本科高等學(xué)校向應(yīng)用型轉(zhuǎn)變示范專業(yè)項目(遼教函[2017]779號);遼寧省普通高等教育本科教學(xué)改革研究項目(遼教函[2018]471號);遼寧科技大學(xué)研究生教育改革與創(chuàng)新項目(2016YJSCX20)
楊丹(1978—),女,遼寧鞍山,博士,副教授,研究方向為分布式計算、大數(shù)據(jù)管理等。E-mail: asyangdan@163.com