楊 丹,張 晶,趙 驥,王 剛
“分布式計算與開發(fā)模式”綜合設計性實驗案例
楊 丹,張 晶,趙 驥,王 剛
(遼寧科技大學 軟件學院,遼寧 鞍山 114051)
針對面向計算機專業(yè)本科生開設的“分布式計算與開發(fā)模式”專業(yè)課的特點和大綱要求,設計了該綜合設計性實驗。該實驗在Windows系統(tǒng)下,使用Hadoop分布框架和Eclipse快速開發(fā)平臺,實現(xiàn)了地震數(shù)據(jù)集的統(tǒng)計任務。對實驗目的、任務要求、實驗方法和步驟、算法流程等進行了細介紹。實踐結果表明,通過此綜合設計性實驗,學生的實驗積極性和對分布式計算的掌握程度大大提高。
分布式計算;綜合設計性實驗;Hadoop;MapReduce
“分布式計算與開發(fā)模式”實驗課程是針對我校計算機專業(yè)本科生開設的一門專業(yè)課。該課程涵蓋分布式計算模型與原理、分布式開發(fā)模式。培養(yǎng)學生的分布式程序設計能力,是分布式計算與開發(fā)模式課程的一個重要目的。通過該課程實驗,學生可以驗證分布式計算的原理基礎,提高編制清晰、合理、可讀性好的分布式程序的能力,更好地掌握基本分布式計算模型MapReduce原理,獲得實際開發(fā)分布式程序的能力。
近年來,分布式計算與分布式應用在IT領域中占據(jù)重要地位。開源框架Hadoop分布式計算平臺[1]已經(jīng)成為眾多電子商務網(wǎng)站的基礎應用平臺,是一種高效處理極大規(guī)模數(shù)據(jù)的平臺[2-3]。Hadoop是一個實現(xiàn)了MapReduce[4]和GFS[5]技術的開源平臺,它可以在由低成本硬件組成的集群上處理極大規(guī)模的數(shù)據(jù)集。Hadoop項目中最主要的2個子項目分別是Hadoop分布式文件系統(tǒng)(HDFS)和MapReduce。HDFS[6-7]是一個可以存儲大數(shù)據(jù)集的文件系統(tǒng),它是通過向外擴展方式構建的主機集群,以時延為代價對吞吐量進行優(yōu)化,并且通過副本替換冗余達到高可靠性。HDFS的體系結構如圖1所示。MapRedue[8-9]是一個數(shù)據(jù)處理范式,規(guī)范了數(shù)據(jù)在2個處理階段(被稱為Map和Reduce)的輸入和輸出,并將其應用于任意規(guī)模的大數(shù)據(jù)集。
圖1 HDFS體系結構圖
MapReduce編程模型的設計理念源自2004年谷歌公司發(fā)表的一篇論文[10]。MapReduce采用“分而治之”的思想,把對大規(guī)模數(shù)據(jù)集的操作,分發(fā)給主節(jié)點管理下的各個分節(jié)點共同完成,然后通過整合各節(jié)點的中間結果,得到最終結果[11]。簡單地說,MapReduce就是“任務的分解與結果的匯總”。這種分布式計算模型,主要用于解決海量數(shù)據(jù)的計算問題,具有易編程、擴展性好、容錯性高等[12-13]等特點。常見的MapReduce應用場景包括數(shù)據(jù)統(tǒng)計、搜索引擎建索引、海量數(shù)據(jù)查找、復雜數(shù)據(jù)分析算法實現(xiàn),如分類算法、聚類算法、推薦算法和圖算法等[14]。
MapReduce計算模型主要由3部分構成:Map、Shuffle和Reduce。Map是映射,負責數(shù)據(jù)的過濾分類,將原始數(shù)據(jù)轉化為鍵值對;Reduce是合并,將具有相同key值的value進行處理后,再輸出新的鍵值對作為最終結果。為了讓Reduce可以并行處理Map的結果,必須對Map的輸出進行一定的排序與分割,再交給對應的Reduce,即Shuffle過程。Shuffle過程包含Map Shuffle和Reduce Shuffle[15]。
MapReduce工作原理模型如圖2所示。
圖2 MapReduce工作原理模型圖
其中,Map任務處理包括如下步驟:
步驟1:讀取HDFS中的文件。每一行解析成一個
步驟2:覆蓋Map(),接收步驟1產(chǎn)生的
步驟3:對步驟2輸出的
步驟4:對不同分區(qū)中的數(shù)據(jù)進行排序(按照key)、分組。分組是將相同key的value放到一個集合中;
步驟5:(可選)對分組后的數(shù)據(jù)進行歸約。
Reduce任務處理包括如下步驟:
步驟1:將多個Map任務的輸出,按照不同的分區(qū),通過網(wǎng)絡復制到不同的reduce節(jié)點上;
步驟2:對多個Map的輸出進行合并、排序。覆蓋reduce函數(shù),接收的是分組后的數(shù)據(jù),實現(xiàn)自己的業(yè)務邏輯,然后產(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)計任務為例,介紹綜合設計性實驗案例的設計。
實驗目的:(1)理解和掌握MapReduce執(zhí)行原理;(2)理解并掌握Map、reduce階段的任務與步驟;(3)熟悉并掌握Map、reduce方法的代碼編寫。
實驗任務要求:設計并編寫MapReduce分布式程序,實現(xiàn)從地震數(shù)據(jù)集中獲取每年最大震級、每月最大震級以及所有記錄中的最大震級3個子任務,要求實驗輸出結果按時間升序排列。
地震數(shù)據(jù)集:1999年1月至2016年8月之間由國家地震臺網(wǎng)速報目錄提供的地震發(fā)生時間、發(fā)生地點以及震級等情況。具體包括:發(fā)生地震的日期信息、時間點信息、緯度信息、經(jīng)度信息、深度信息、震級及地點信息。所有記錄信息存儲在名為earthquake_info.txt的文本文件中。部分數(shù)據(jù)集的統(tǒng)計信息如圖4所示。然后讀取earthquake_info.txt文本文件中的內容,遍歷逐條信息,以日志的方式保存到HDFS分布式系統(tǒng)上。
圖4 部分地震數(shù)據(jù)信息圖
實驗所使用的計算機為Inter(R) Core(TM) i5- 3337U、1.80 GHz CPU、4 GB內存、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工程目錄結構圖
(4)運行MapReduce程序,MyMagnitude是main函數(shù)運行類,執(zhí)行時需要調整運行參數(shù)。如圖8(a)—(c)所示。
(a) (b) (c)
以獲取每年最大震級的任務為例,MapReduce程序MaxMagnitudeByYear的偽代碼如表1所示。
表1 偽代碼
最終計算出1999年1月至2006年8月每年最大震級實驗結果、每月最大震級實驗結果和全時段最大震級實驗結果,如圖9所示。
圖9 程序運行實現(xiàn)圖
針對分布式計算與開發(fā)模式實驗教學的特點,針對課程實驗中存在的問題,通過設計MapReduce編程實例“計算不同時間條件下的最大震級”的綜合設計性實驗,不僅考查了學生的編程能力,也檢驗了學生對分布式計算知識的掌握和理解,調動了學生的實驗積極性,提高了學生綜合運用所學知識的能力。
[1] 秦杰儀,曾志,孫蕾,等.基于Hadoop的大數(shù)據(jù)平臺架設探討[J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2018(5): 47–49.
[2] 范素娟,田軍鋒.基于Hadoop的云計算平臺研究與實現(xiàn)[J]. 計算機技術與發(fā)展,2016, 26(7): 127–132.
[3] 馬瑞敏,卞藝杰,陳超,等.基于Hadoop的電子商務個性化推薦算法:以電影推薦為例[J].計算機系統(tǒng)應用,2015, 24(5): 111–117.
[4] 梁芷梧.云計算中MapReduce分布式并行處理框架的研究[D].武漢:湖北工業(yè)大學,2017.
[5] 陳晨,陳達麗.谷歌大數(shù)據(jù)技術的研究及開源實現(xiàn)[J].軟件產(chǎn)業(yè)與工程,2015(5): 31–36.
[6] 付東華.基于HDFS的海量分布式文件系統(tǒng)的研究與優(yōu)化[D].北京:北京郵電大學,2012.
[7] 易理林. HDFS文件系統(tǒng)中元數(shù)據(jù)的高可用性管理方法研究[D].廣州:華南理工大學,2013.
[8] 鄭瑛.分布式并行編程模型MapReduce及其應用研究[J].西南民族大學學報(自然科學版),2017, 43(2): 161–166.
[9] 盤隆.基于MapReduce的分布式編程框架的設計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學,2011.
[10] 武鑫.基于MapReduce的協(xié)同過濾算法并行化研究[D].天津:河北工業(yè)大學,2014.
[11] 付啟沐.基于可重構硬件架構的MapReduce計算方法研究與實現(xiàn)[D].北京:北京交通大學,2016.
[12] 王剛. MapReduce計算模型性能優(yōu)化的研究[D].濟南:山東建筑大學,2016.
[13] 宋杰,郝文寧,陳剛,等.基于MapReduce的分布式ETL多維數(shù)據(jù)模型研究[J].計算機科學,2013, 40(增刊2): 263–266.
[14] 吳崇正.基于MapReduce的分布式搜索引擎研究[D].蘭州:蘭州理工大學,2013.
[15] 張家錄,陸汝華.基于MapReduce模型的電子商務欺詐信息挖掘方法[J].湘南學院學報,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)學合作協(xié)同育人項目(201702124017,201702124008);遼寧省創(chuàng)新創(chuàng)業(yè)教育改革試點專業(yè)項目(遼教函[2017]838號);遼寧省普通本科高等學校向應用型轉變示范專業(yè)項目(遼教函[2017]779號);遼寧省普通高等教育本科教學改革研究項目(遼教函[2018]471號);遼寧科技大學研究生教育改革與創(chuàng)新項目(2016YJSCX20)
楊丹(1978—),女,遼寧鞍山,博士,副教授,研究方向為分布式計算、大數(shù)據(jù)管理等。E-mail: asyangdan@163.com