徐 巖, 周 圍
(北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院, 北京 100044)
?
面向計(jì)算機(jī)基礎(chǔ)教學(xué)的Hadoop實(shí)驗(yàn)設(shè)計(jì)
徐 巖, 周 圍
(北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院, 北京 100044)
隨著互聯(lián)網(wǎng)和Web技術(shù)的飛速發(fā)展,現(xiàn)代社會的信息量迅速增長,中國已經(jīng)步入“大數(shù)據(jù)”時(shí)代。Hadoop作為Apache基金會的開源項(xiàng)目,是一個分布式計(jì)算框架,主要處理大量數(shù)據(jù),在業(yè)界和應(yīng)用行業(yè)尤其是互聯(lián)網(wǎng)行業(yè)得到了廣泛應(yīng)用。因此,研究它非常必要。本文對Hadoop的特點(diǎn)及其子項(xiàng)目進(jìn)行深入探討,以Hadoop1.1.0為基礎(chǔ),設(shè)計(jì)面向計(jì)算機(jī)基礎(chǔ)教學(xué)的系列實(shí)驗(yàn),從環(huán)境搭建、并行編程到數(shù)據(jù)遷移等七個方面,它涉及到Hadoop的多個子項(xiàng)目,形成一定的深度和廣度。使學(xué)生能夠更加深入了解和學(xué)習(xí)Hadoop,為今后的學(xué)習(xí)奠定扎實(shí)的基礎(chǔ),以便培養(yǎng)更好的Hadoop人才。
Hadoop; 計(jì)算機(jī)基礎(chǔ)教學(xué); 實(shí)驗(yàn)設(shè)計(jì)
隨著互聯(lián)網(wǎng)和Web技術(shù)的飛速發(fā)展,現(xiàn)代社會的信息量迅速增長,中國已經(jīng)步入了“大數(shù)據(jù)”時(shí)代。根據(jù)摩爾定律,約每隔18個月,CPU性能會提高一倍。然而,由于晶體管電路已經(jīng)逐漸接近其物理上的性能極限,摩爾定律在 2005 年左右開始失效。CPU的速度不可能再大幅度提升了,人們開始設(shè)計(jì)分布式系統(tǒng),把眾多的計(jì)算機(jī)通過集群方式并行同時(shí)運(yùn)行,來提高處理的速度。Hadoop作為一個分布式計(jì)算框架,主要處理大量數(shù)據(jù),因此,研究它非常必要[1-2]。
實(shí)驗(yàn)教學(xué)可以使學(xué)生更形象生動地掌握了原來枯燥無味的理論知識,又鍛煉了學(xué)生的動手能力和創(chuàng)造能力,從而最大限度地激發(fā)了學(xué)生的學(xué)習(xí)興趣。因此,重視和加強(qiáng)實(shí)驗(yàn)教學(xué),是激發(fā)學(xué)生學(xué)習(xí)興趣的關(guān)鍵。Hadoop作為Apache基金會的開源項(xiàng)目,模仿Google的核心技術(shù),是一個分布式系統(tǒng)的基礎(chǔ),是最典型和最常見的云計(jì)算平臺[3-4]。本文針對Hadoop的特點(diǎn)及其子項(xiàng)目進(jìn)行深入探討,設(shè)計(jì)系列實(shí)驗(yàn),使同學(xué)們能夠更加深入了解和學(xué)習(xí)Hadoop。為今后的學(xué)習(xí)奠定扎實(shí)的基礎(chǔ),以便培養(yǎng)更好的Hadoop人才。
1.1 Hadoop框架
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理。Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce為海量的數(shù)據(jù)提供了計(jì)算。但是在Hadoop下的Common、HBase、Zookeeper、Avro等子項(xiàng)目也是不可或缺的,它們在提供了互補(bǔ)性服務(wù)或在核心層上提供了更高層的服務(wù)[5]。
Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計(jì)算平臺。用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。Hadoop家族由以下幾個子項(xiàng)目組成(見圖1)。
圖1 Hadoop家族圖
Hadoop Common:支持其他模塊的常用工具集,主要包括系統(tǒng)配置工具、序列化機(jī)制、遠(yuǎn)程過程調(diào)用、數(shù)據(jù)壓縮與解壓縮、Hadoop抽象文件系統(tǒng),為在通用硬件上搭建云計(jì)算環(huán)境提供基礎(chǔ)服務(wù),并為運(yùn)行在該平臺上的軟件開發(fā)提供了所需的API。
HDFS:一個高擴(kuò)展、高容錯、高可靠、高吞吐量,運(yùn)行在低成本的通用計(jì)算機(jī)上的分布式文件系統(tǒng)。
MapReduce:一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。
HBase:一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用這項(xiàng)技術(shù)可在廉價(jià)服務(wù)器上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。
Zookeeper: 一個為分布式應(yīng)用所設(shè)計(jì)的分布的、開源的協(xié)調(diào)服務(wù),主要用來解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問題,簡化分布式應(yīng)用協(xié)調(diào)及其管理的難度,提供高性能的分布式服務(wù)。
Avro:一個數(shù)據(jù)序列化系統(tǒng),用于支持?jǐn)?shù)據(jù)密集型,大批量數(shù)據(jù)交換的應(yīng)用[6]。
1.2 面向計(jì)算機(jī)基礎(chǔ)教學(xué)的系列實(shí)驗(yàn)設(shè)計(jì)
計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)驗(yàn)的特點(diǎn)有:①與時(shí)俱進(jìn),發(fā)展迅速,內(nèi)容更新快;②實(shí)踐性強(qiáng),需要動手操作;③要求有一定的教學(xué)條件[7]。計(jì)算機(jī)是一門實(shí)踐性很強(qiáng)的課程,如果實(shí)驗(yàn)課沒有安排好,是不能有效掌握計(jì)算機(jī)的。而選取或設(shè)計(jì)一系列的實(shí)驗(yàn),是至關(guān)重要的[8]。為了使學(xué)生能夠更加深入了解和學(xué)習(xí)Hadoop,本文針對Hadoop的特點(diǎn),以Hadoop1.1.0為基礎(chǔ),設(shè)計(jì)了一系列的實(shí)驗(yàn)(見表1),它涉及到Hadoop的多個子項(xiàng)目,形成一定的深度和廣度。通過學(xué)習(xí)這些實(shí)驗(yàn),可以使學(xué)生有效地掌握理論知識,在實(shí)踐中獲得鞏固和提高。實(shí)驗(yàn)環(huán)境集群拓?fù)鋱D如圖2所示,實(shí)驗(yàn)所需軟件環(huán)境如表2所示。
表1 面向計(jì)算機(jī)基礎(chǔ)教學(xué)的系列實(shí)驗(yàn)
圖2 實(shí)驗(yàn)環(huán)境集群拓?fù)鋱D
表2 實(shí)驗(yàn)軟件環(huán)境
2.1 實(shí)驗(yàn)1:Hadoop集群環(huán)境搭建實(shí)驗(yàn)
本實(shí)驗(yàn)幫助學(xué)生掌握Hadoop所需軟硬件環(huán)境。首先給主從節(jié)點(diǎn)機(jī)器配置網(wǎng)絡(luò),安裝SSH、JDK,配置環(huán)境變量,安裝Hadoop,分別設(shè)置主從節(jié)點(diǎn)的配置文件。啟動前先格式化名字節(jié)點(diǎn),最后通過查看各節(jié)點(diǎn)進(jìn)程狀態(tài),確認(rèn)進(jìn)程正常啟動,至此Hadoop集群環(huán)境搭建完畢。通過搭建實(shí)驗(yàn),使學(xué)生學(xué)習(xí)Hadoop和Linux常用命令、熟悉Hadoop管理方式[9]。
2.2 實(shí)驗(yàn)2:分布式并行編程實(shí)驗(yàn)
本實(shí)驗(yàn)幫助學(xué)生理解MapeReduce的分布式并行計(jì)算工作原理。在此通過一個應(yīng)用實(shí)例(單詞計(jì)數(shù))的運(yùn)行過程來實(shí)現(xiàn)。單詞計(jì)數(shù)程序的完整代碼可以在Hadoop安裝包的相應(yīng)目錄下找到,主要完成的功能是:統(tǒng)計(jì)一系列文本文件中每個單詞出現(xiàn)的次數(shù)[10-11]。通過分析源代碼幫助學(xué)生理解程序基本結(jié)構(gòu)和執(zhí)行過程,如圖3所示。通過此實(shí)驗(yàn),幫助學(xué)生學(xué)習(xí)Hadoop分布式文件系統(tǒng)、MapReduce編程模型,理解MapReduce的思想。
圖3 MapReduce處理大數(shù)據(jù)集的過程
2.3 實(shí)驗(yàn)3:破壞試驗(yàn)可靠性驗(yàn)證實(shí)驗(yàn)
本實(shí)驗(yàn)?zāi)MHadoop集群中其中一臺數(shù)據(jù)節(jié)點(diǎn)宕機(jī)故障,驗(yàn)證是否影響HDFS的使用?①設(shè)置副本數(shù)為3,本地上傳一個大小為30 MB的文件到集群文件系統(tǒng)。②查看哪三臺機(jī)器上面有Block塊的新增。③在其中一臺有數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)執(zhí)行關(guān)機(jī)操作。④觀察集群的狀態(tài),宕機(jī)的節(jié)點(diǎn)已經(jīng)被自動從集群中踢除了。⑤名字節(jié)點(diǎn)會檢查每個正常工作數(shù)據(jù)節(jié)點(diǎn)的文件塊是否都為3份,如果不是則會備份成3份放到正常工作的數(shù)據(jù)節(jié)點(diǎn)中。⑥驗(yàn)證能否從文件系統(tǒng)下載此文件?結(jié)果表明Hadoop集群中任何一臺數(shù)據(jù)節(jié)點(diǎn)意外宕機(jī),不會影響文件系統(tǒng)。通過此實(shí)驗(yàn),使學(xué)生了解HDFS的工作原理及其高容錯性的優(yōu)點(diǎn)。
2.4 實(shí)驗(yàn)4:性能分析實(shí)驗(yàn)
本實(shí)驗(yàn)測試Map和Reduce任務(wù)數(shù)量對Hadoop性能的影響。通過Hadoop自帶的Terasort排序程序,測試不同的Map任務(wù)和Reduce任務(wù)數(shù)量,對Hadoop性能的影響。實(shí)驗(yàn)數(shù)據(jù)由程序中的teragen程序生成,數(shù)據(jù)量為1GB和10GB。通過更改配置文件,從而調(diào)節(jié)Map任務(wù)和Reduce任務(wù)的數(shù)量;副本數(shù)設(shè)為3,其它參數(shù)默認(rèn)[12]。結(jié)果表明:當(dāng)數(shù)據(jù)量為1GB和10GB時(shí),把輸入分片設(shè)置為128MB(此時(shí),1GB數(shù)據(jù)Map任務(wù)=8, 10GB數(shù)據(jù)Map任務(wù)=76),系統(tǒng)性能最佳(見圖4、圖5);Reduce任務(wù)的數(shù)量應(yīng)該設(shè)置為接近從節(jié)點(diǎn)數(shù)量,或者適當(dāng)大于節(jié)點(diǎn)數(shù),不宜設(shè)置為比節(jié)點(diǎn)數(shù)量小太多。 通過此實(shí)驗(yàn),使學(xué)生學(xué)習(xí)如何調(diào)整參數(shù)來提高Hadoop的性能,對Hadoop有更加深入的了解。
圖4 1GB數(shù)據(jù)性能對比
圖5 10GB數(shù)據(jù)性能對比
2.5 實(shí)驗(yàn)5:大量小文件處理實(shí)驗(yàn)
本實(shí)驗(yàn)通過學(xué)習(xí)Avro工作過程理解大量小文件處理方式。如果采用MapReduce進(jìn)行小文件的處理,那么Mapper的個數(shù)就會跟小文件的個數(shù)成線性相關(guān)。如果小文件特別多,MapReduce就會在消耗大量的時(shí)間進(jìn)行Map進(jìn)程的創(chuàng)建和銷毀。為了解決大量小文件帶來的問題,可以將HDFS中的小文件打包到一個大的文件容器中。將本地磁盤中所有的目標(biāo)文件存儲到HDFS中的一個單獨(dú)的Avro文件,然后在MapReduce中處理Avro文件和其中的小文件。通過此實(shí)驗(yàn),使學(xué)生學(xué)習(xí)如何處理大量小文件。
2.6 實(shí)驗(yàn)6:數(shù)據(jù)庫編程實(shí)驗(yàn)
本實(shí)驗(yàn)針對HBase進(jìn)行相關(guān)操作,了解數(shù)據(jù)庫管理知識。過程如下:①插入數(shù)據(jù):創(chuàng)建一個Put對象,在這個Put對象里可以指定要給哪個列增加數(shù)據(jù),以及當(dāng)前的時(shí)間戳等值,然后通過調(diào)用HTable.put(PUT)來提交操作。注意:在創(chuàng)建Put對象的時(shí)候,必須指定一個行(Row)值,在構(gòu)造Put對象的時(shí)候作為參數(shù)傳入。②獲取數(shù)據(jù):獲取數(shù)據(jù),使用Get對象,Get對象同Put對象一樣有好幾個構(gòu)造函數(shù),通常在構(gòu)造的時(shí)候傳入行值,表示取第幾行的數(shù)據(jù),通過HTable.get(Get)來調(diào)用。③刪除:使用Delete來刪除記錄,通過調(diào)用HTable.delete(Delete)來執(zhí)行刪除操作[13]。通過此實(shí)驗(yàn),使學(xué)生了解對HBase中表的管理、數(shù)據(jù)的操作等。
2.7 實(shí)驗(yàn)7:數(shù)據(jù)遷移實(shí)驗(yàn)
本實(shí)驗(yàn)實(shí)現(xiàn)Hadoop向HBase的數(shù)據(jù)遷移。通過使用MapReduce的方法,使用Hadoop的標(biāo)準(zhǔn)Map方法讀取并分析HDFS文件,然后使用HBase提供TableReducer來實(shí)現(xiàn)Reduce,在TableReducer中調(diào)用Put對象,并構(gòu)建行數(shù)據(jù),直接插入到HBase中。所有的數(shù)據(jù)維護(hù)動作均由HBase自己來完成,數(shù)據(jù)插入的過程是追加過程,不會對已經(jīng)存在的數(shù)據(jù)造成影響[14-15]。在測試時(shí),需要輸入一個HDFS文件的路徑。通過此實(shí)驗(yàn),使學(xué)生了解如何從Hadoop向HBase進(jìn)行數(shù)據(jù)遷移。
Hadoop因其在大數(shù)據(jù)處理領(lǐng)域具有廣泛的實(shí)用性以及良好的易用性,自2007年推出后,很快在工業(yè)界得到普及應(yīng)用,同時(shí)得到了學(xué)術(shù)界的廣泛關(guān)注和研究,Hadoop必將成為研發(fā)和應(yīng)用大數(shù)據(jù)的理想選擇。本文對Hadoop的特點(diǎn)及其子項(xiàng)目進(jìn)行深入探討,設(shè)計(jì)系列實(shí)驗(yàn),能滿足學(xué)生從事大數(shù)據(jù)應(yīng)用和研發(fā)的現(xiàn)實(shí)需要,使用實(shí)例搭建并經(jīng)實(shí)證的云平臺,能實(shí)現(xiàn)海量數(shù)據(jù)的分布式計(jì)算和處理,可為計(jì)算機(jī)基礎(chǔ)相關(guān)課程提供實(shí)驗(yàn)技能訓(xùn)練,如“大學(xué)計(jì)算基礎(chǔ)”、“Linux操作系統(tǒng)基礎(chǔ)”等,具有一定的理論及實(shí)用價(jià)值。本實(shí)驗(yàn)設(shè)計(jì)會隨著系統(tǒng)升級、大數(shù)據(jù)主流開源產(chǎn)品的發(fā)展而不斷改進(jìn)。
[1] 中國電子科學(xué)研究院學(xué)報(bào)編輯部.大數(shù)據(jù)時(shí)代[J].中國電子科學(xué)研究院學(xué)報(bào),2013(1):27-31.
[2] 王 珊,王會舉,覃雄派,等.架構(gòu)大數(shù)據(jù):挑戰(zhàn)、現(xiàn)狀與展望[J].計(jì)算機(jī)學(xué)報(bào),2011(10):1741-1752.
[3] Tom White. Hadoop 權(quán)威指南[M].北京:清華大學(xué)出版社,2013(11):391-426.
[4] 劉 剛,候 賓,翟周偉.Hadoop開源云計(jì)算平臺[M].北京:北京郵電大學(xué)出版社,2011:10-13.
[5] Hadoop官方網(wǎng)站,http://hadoop.apache.org/.
[6] Hadoop中國網(wǎng)站,http://www.hadooper.cn/dct/page/1.
[7] 何怡璇. 論高校計(jì)算機(jī)基礎(chǔ)教學(xué)的思路和方法[J]. 計(jì)算機(jī)學(xué)報(bào),2011(12):106-106.
[8] 崔 成.《計(jì)算機(jī)基礎(chǔ)》教學(xué)及改革思考[J]. 福建電腦,2011(1):209-210.
[9] (美)拉姆.Hadoop實(shí)戰(zhàn)[M].韓冀中譯,北京:人民郵電出版社,2011:3-4.
[10] 董西城.Hadoop 技術(shù)內(nèi)幕:深入解析 MapReduce 架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M].北京:機(jī)械工業(yè)出版社,2011:13-18.
[11] 許舟平.云深不知處——大規(guī)模分布式云計(jì)算方案詳解[J].程序員,2008(11):58-61.
[12] 欒亞建,黃翀民,龔高晟,趙鐵柱.Hadoop平臺的性能優(yōu)化研究[J].計(jì)算機(jī)工程,2010(14):263.
[13] George L.HBase權(quán)威指南(影印版)[M].南京:東南大學(xué)出版社,2012.
[14] http://www.itpub.net/thread-1588509-1-1.html.
[15] Konstantin Shvachko, Hairing Kuang, Sanyjy Radia,etal. The Hadoop Distributed File System [C]//Proceedings of the 2010 IEEE 26thSymposium on Mass Storage Systems and Technologies(MSST),May 03-07,2010:1-10.
Design of Hadoop Experiment for Computer Fundamental Teaching
XUYan,ZHOUWei
(School of Computer and Information Technology, Beijing Jiaotong University, Beijing 100044, China)
With the rapid development of the Internet and Web technology, the information is growing rapidly in modern society, China has entered the era of "big data". As the Apache foundation's open source project, Hadoop is a distributed computing framework, processes large amounts of data mainly, and it is widely used in industry and application industry especially the Internet industry. Therefore, it is very necessary to research it. In this paper, we study Hadoop in-depth according to the characteristics of it and its subprojects, and base on Hadoop 1.1.0 to design series of experiments oriented computer fundamental teaching. The contents include the environment to build, Parallel programming, and data migration among seven aspects. It involves multiple subprojects of Hadoop, holds a certain depth and breadth, enables students to understand and study Hadoop further, and provides them a solid foundation for the future development, and cultivates them to be Hadoop talents.
Hadoop; computer fundamental teaching; experiment design
2015-01-13
北京市哲學(xué)社會科學(xué)規(guī)劃項(xiàng)目(12JYB010)
徐 巖(1991-),女,山東濟(jì)寧人,在讀碩士,研究方向計(jì)算機(jī)科學(xué)與技術(shù)。
Tel.:18813099341;E-mail: haprnxu@163.com
周 圍(1973-),女,河北石家莊人,博士,高級工程師,碩士生導(dǎo)師,研究方向計(jì)算機(jī)科學(xué)與技術(shù)。
Tel.:15201319577;E-mail: wzhou@bjtu.edu.cn
TP 39
A
1006-7167(2016)01-0169-04