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