徐 巖, 周 圍
(北京交通大學 計算機與信息技術學院, 北京 100044)
?
面向計算機基礎教學的Hadoop實驗設計
徐 巖, 周 圍
(北京交通大學 計算機與信息技術學院, 北京 100044)

隨著互聯網和Web技術的飛速發展,現代社會的信息量迅速增長,中國已經步入“大數據”時代。Hadoop作為Apache基金會的開源項目,是一個分布式計算框架,主要處理大量數據,在業界和應用行業尤其是互聯網行業得到了廣泛應用。因此,研究它非常必要。本文對Hadoop的特點及其子項目進行深入探討,以Hadoop1.1.0為基礎,設計面向計算機基礎教學的系列實驗,從環境搭建、并行編程到數據遷移等七個方面,它涉及到Hadoop的多個子項目,形成一定的深度和廣度。使學生能夠更加深入了解和學習Hadoop,為今后的學習奠定扎實的基礎,以便培養更好的Hadoop人才。
Hadoop; 計算機基礎教學; 實驗設計
隨著互聯網和Web技術的飛速發展,現代社會的信息量迅速增長,中國已經步入了“大數據”時代。根據摩爾定律,約每隔18個月,CPU性能會提高一倍。然而,由于晶體管電路已經逐漸接近其物理上的性能極限,摩爾定律在 2005 年左右開始失效。CPU的速度不可能再大幅度提升了,人們開始設計分布式系統,把眾多的計算機通過集群方式并行同時運行,來提高處理的速度。Hadoop作為一個分布式計算框架,主要處理大量數據,因此,研究它非常必要[1-2]。
實驗教學可以使學生更形象生動地掌握了原來枯燥無味的理論知識,又鍛煉了學生的動手能力和創造能力,從而最大限度地激發了學生的學習興趣。因此,重視和加強實驗教學,是激發學生學習興趣的關鍵。Hadoop作為Apache基金會的開源項目,模仿Google的核心技術,是一個分布式系統的基礎,是最典型和最常見的云計算平臺[3-4]。本文針對Hadoop的特點及其子項目進行深入探討,設計系列實驗,使同學們能夠更加深入了解和學習Hadoop。為今后的學習奠定扎實的基礎,以便培養更好的Hadoop人才。
1.1 Hadoop框架
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。Hadoop以一種可靠、高效、可伸縮的方式進行數據處理。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce為海量的數據提供了計算。但是在Hadoop下的Common、HBase、Zookeeper、Avro等子項目也是不可或缺的,它們在提供了互補性服務或在核心層上提供了更高層的服務[5]。
Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發和運行處理海量數據的應用程序。Hadoop家族由以下幾個子項目組成(見圖1)。

圖1 Hadoop家族圖
Hadoop Common:支持其他模塊的常用工具集,主要包括系統配置工具、序列化機制、遠程過程調用、數據壓縮與解壓縮、Hadoop抽象文件系統,為在通用硬件上搭建云計算環境提供基礎服務,并為運行在該平臺上的軟件開發提供了所需的API。
HDFS:一個高擴展、高容錯、高可靠、高吞吐量,運行在低成本的通用計算機上的分布式文件系統。
MapReduce:一種編程模型,用于大規模數據集的并行運算。
HBase:一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用這項技術可在廉價服務器上搭建起大規模結構化存儲集群。
Zookeeper: 一個為分布式應用所設計的分布的、開源的協調服務,主要用來解決分布式應用中經常遇到的一些數據管理問題,簡化分布式應用協調及其管理的難度,提供高性能的分布式服務。
Avro:一個數據序列化系統,用于支持數據密集型,大批量數據交換的應用[6]。
1.2 面向計算機基礎教學的系列實驗設計
計算機基礎教學實驗的特點有:①與時俱進,發展迅速,內容更新快;②實踐性強,需要動手操作;③要求有一定的教學條件[7]。計算機是一門實踐性很強的課程,如果實驗課沒有安排好,是不能有效掌握計算機的。而選取或設計一系列的實驗,是至關重要的[8]。為了使學生能夠更加深入了解和學習Hadoop,本文針對Hadoop的特點,以Hadoop1.1.0為基礎,設計了一系列的實驗(見表1),它涉及到Hadoop的多個子項目,形成一定的深度和廣度。通過學習這些實驗,可以使學生有效地掌握理論知識,在實踐中獲得鞏固和提高。實驗環境集群拓撲圖如圖2所示,實驗所需軟件環境如表2所示。

表1 面向計算機基礎教學的系列實驗

圖2 實驗環境集群拓撲圖

表2 實驗軟件環境
2.1 實驗1:Hadoop集群環境搭建實驗
本實驗幫助學生掌握Hadoop所需軟硬件環境。首先給主從節點機器配置網絡,安裝SSH、JDK,配置環境變量,安裝Hadoop,分別設置主從節點的配置文件。啟動前先格式化名字節點,最后通過查看各節點進程狀態,確認進程正常啟動,至此Hadoop集群環境搭建完畢。通過搭建實驗,使學生學習Hadoop和Linux常用命令、熟悉Hadoop管理方式[9]。
2.2 實驗2:分布式并行編程實驗
本實驗幫助學生理解MapeReduce的分布式并行計算工作原理。在此通過一個應用實例(單詞計數)的運行過程來實現。單詞計數程序的完整代碼可以在Hadoop安裝包的相應目錄下找到,主要完成的功能是:統計一系列文本文件中每個單詞出現的次數[10-11]。通過分析源代碼幫助學生理解程序基本結構和執行過程,如圖3所示。通過此實驗,幫助學生學習Hadoop分布式文件系統、MapReduce編程模型,理解MapReduce的思想。

圖3 MapReduce處理大數據集的過程
2.3 實驗3:破壞試驗可靠性驗證實驗
本實驗模擬Hadoop集群中其中一臺數據節點宕機故障,驗證是否影響HDFS的使用?①設置副本數為3,本地上傳一個大小為30 MB的文件到集群文件系統。②查看哪三臺機器上面有Block塊的新增。③在其中一臺有數據塊的數據節點執行關機操作。④觀察集群的狀態,宕機的節點已經被自動從集群中踢除了。⑤名字節點會檢查每個正常工作數據節點的文件塊是否都為3份,如果不是則會備份成3份放到正常工作的數據節點中。⑥驗證能否從文件系統下載此文件?結果表明Hadoop集群中任何一臺數據節點意外宕機,不會影響文件系統。通過此實驗,使學生了解HDFS的工作原理及其高容錯性的優點。
2.4 實驗4:性能分析實驗
本實驗測試Map和Reduce任務數量對Hadoop性能的影響。通過Hadoop自帶的Terasort排序程序,測試不同的Map任務和Reduce任務數量,對Hadoop性能的影響。實驗數據由程序中的teragen程序生成,數據量為1GB和10GB。通過更改配置文件,從而調節Map任務和Reduce任務的數量;副本數設為3,其它參數默認[12]。結果表明:當數據量為1GB和10GB時,把輸入分片設置為128MB(此時,1GB數據Map任務=8, 10GB數據Map任務=76),系統性能最佳(見圖4、圖5);Reduce任務的數量應該設置為接近從節點數量,或者適當大于節點數,不宜設置為比節點數量小太多。 通過此實驗,使學生學習如何調整參數來提高Hadoop的性能,對Hadoop有更加深入的了解。

圖4 1GB數據性能對比

圖5 10GB數據性能對比
2.5 實驗5:大量小文件處理實驗
本實驗通過學習Avro工作過程理解大量小文件處理方式。如果采用MapReduce進行小文件的處理,那么Mapper的個數就會跟小文件的個數成線性相關。如果小文件特別多,MapReduce就會在消耗大量的時間進行Map進程的創建和銷毀。為了解決大量小文件帶來的問題,可以將HDFS中的小文件打包到一個大的文件容器中。將本地磁盤中所有的目標文件存儲到HDFS中的一個單獨的Avro文件,然后在MapReduce中處理Avro文件和其中的小文件。通過此實驗,使學生學習如何處理大量小文件。
2.6 實驗6:數據庫編程實驗
本實驗針對HBase進行相關操作,了解數據庫管理知識。過程如下:①插入數據:創建一個Put對象,在這個Put對象里可以指定要給哪個列增加數據,以及當前的時間戳等值,然后通過調用HTable.put(PUT)來提交操作。注意:在創建Put對象的時候,必須指定一個行(Row)值,在構造Put對象的時候作為參數傳入。②獲取數據:獲取數據,使用Get對象,Get對象同Put對象一樣有好幾個構造函數,通常在構造的時候傳入行值,表示取第幾行的數據,通過HTable.get(Get)來調用。③刪除:使用Delete來刪除記錄,通過調用HTable.delete(Delete)來執行刪除操作[13]。通過此實驗,使學生了解對HBase中表的管理、數據的操作等。
2.7 實驗7:數據遷移實驗
本實驗實現Hadoop向HBase的數據遷移。通過使用MapReduce的方法,使用Hadoop的標準Map方法讀取并分析HDFS文件,然后使用HBase提供TableReducer來實現Reduce,在TableReducer中調用Put對象,并構建行數據,直接插入到HBase中。所有的數據維護動作均由HBase自己來完成,數據插入的過程是追加過程,不會對已經存在的數據造成影響[14-15]。在測試時,需要輸入一個HDFS文件的路徑。通過此實驗,使學生了解如何從Hadoop向HBase進行數據遷移。
Hadoop因其在大數據處理領域具有廣泛的實用性以及良好的易用性,自2007年推出后,很快在工業界得到普及應用,同時得到了學術界的廣泛關注和研究,Hadoop必將成為研發和應用大數據的理想選擇。本文對Hadoop的特點及其子項目進行深入探討,設計系列實驗,能滿足學生從事大數據應用和研發的現實需要,使用實例搭建并經實證的云平臺,能實現海量數據的分布式計算和處理,可為計算機基礎相關課程提供實驗技能訓練,如“大學計算基礎”、“Linux操作系統基礎”等,具有一定的理論及實用價值。本實驗設計會隨著系統升級、大數據主流開源產品的發展而不斷改進。
[1] 中國電子科學研究院學報編輯部.大數據時代[J].中國電子科學研究院學報,2013(1):27-31.
[2] 王 珊,王會舉,覃雄派,等.架構大數據:挑戰、現狀與展望[J].計算機學報,2011(10):1741-1752.
[3] Tom White. Hadoop 權威指南[M].北京:清華大學出版社,2013(11):391-426.
[4] 劉 剛,候 賓,翟周偉.Hadoop開源云計算平臺[M].北京:北京郵電大學出版社,2011:10-13.
[5] Hadoop官方網站,http://hadoop.apache.org/.
[6] Hadoop中國網站,http://www.hadooper.cn/dct/page/1.
[7] 何怡璇. 論高校計算機基礎教學的思路和方法[J]. 計算機學報,2011(12):106-106.
[8] 崔 成.《計算機基礎》教學及改革思考[J]. 福建電腦,2011(1):209-210.
[9] (美)拉姆.Hadoop實戰[M].韓冀中譯,北京:人民郵電出版社,2011:3-4.
[10] 董西城.Hadoop 技術內幕:深入解析 MapReduce 架構設計與實現原理[M].北京:機械工業出版社,2011:13-18.
[11] 許舟平.云深不知處——大規模分布式云計算方案詳解[J].程序員,2008(11):58-61.
[12] 欒亞建,黃翀民,龔高晟,趙鐵柱.Hadoop平臺的性能優化研究[J].計算機工程,2010(14):263.
[13] George L.HBase權威指南(影印版)[M].南京:東南大學出版社,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
北京市哲學社會科學規劃項目(12JYB010)
徐 巖(1991-),女,山東濟寧人,在讀碩士,研究方向計算機科學與技術。
Tel.:18813099341;E-mail: haprnxu@163.com
周 圍(1973-),女,河北石家莊人,博士,高級工程師,碩士生導師,研究方向計算機科學與技術。
Tel.:15201319577;E-mail: wzhou@bjtu.edu.cn
TP 39
A
1006-7167(2016)01-0169-04