□周國軍,吳慶軍
(1,2.玉林師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,廣西 玉林 537000)
使用VirtualBox和Hadoop搭建云計(jì)算虛擬實(shí)驗(yàn)平臺
□周國軍1,吳慶軍2
(1,2.玉林師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,廣西 玉林 537000)
本文從節(jié)約實(shí)驗(yàn)成本的角度出發(fā),探討了在設(shè)備不足的情況下搭建云計(jì)算實(shí)驗(yàn)平臺的問題. 介紹了一種在單機(jī)環(huán)境下使用VirtualBox和Hadoop搭建云計(jì)算虛擬實(shí)驗(yàn)平臺的方法,并給出了詳細(xì)的實(shí)現(xiàn)步驟. 對搭建好的虛擬實(shí)驗(yàn)平臺進(jìn)行了測試,測試結(jié)果表明該實(shí)驗(yàn)平臺在充分利用現(xiàn)有資源的前提下,能滿足云計(jì)算相關(guān)課程實(shí)驗(yàn)教學(xué)的基本要求.
VirtualBox;Hadoop;云計(jì)算;虛擬實(shí)驗(yàn)平臺
云計(jì)算(Cloud Computing)是一種商業(yè)計(jì)算模型,它將計(jì)算任務(wù)分布在大量計(jì)算機(jī)構(gòu)成的資源池上,使用戶能夠按需獲取計(jì)算能力、存儲空間和信息服務(wù)[1].云計(jì)算系統(tǒng)按照服務(wù)層次可以分為三類:提供基礎(chǔ)設(shè)施服務(wù)(IaaS)的系統(tǒng)、提供平臺服務(wù)(PaaS)的系統(tǒng)和提供軟件服務(wù)(SaaS)的系統(tǒng)[2].
隨著移動互聯(lián)網(wǎng)和云計(jì)算的快速發(fā)展,云計(jì)算領(lǐng)域需要更多的專業(yè)人才.為了滿足市場的需求,目前國內(nèi)一些高校的計(jì)算機(jī)專業(yè)已經(jīng)開設(shè)了云計(jì)算課程.可以相信,將會有越來越多高校的計(jì)算機(jī)相關(guān)專業(yè)開設(shè)云計(jì)算課程.為了保證云計(jì)算課程教學(xué)的質(zhì)量,就需要建設(shè)或完善云計(jì)算實(shí)驗(yàn)室,盡快在現(xiàn)有的運(yùn)算資源上構(gòu)建云計(jì)算的實(shí)驗(yàn)環(huán)境[3].
在生產(chǎn)環(huán)境下,云計(jì)算平臺搭建在大規(guī)模的分布式集群上,而實(shí)驗(yàn)教學(xué)使用的設(shè)備往往不多而且配置較低.就目前而言,在大多數(shù)高校的計(jì)算機(jī)實(shí)驗(yàn)室里,一名學(xué)生只能使用一臺機(jī)器上機(jī)實(shí)驗(yàn).如何在設(shè)備不足的情況下搭建云計(jì)算實(shí)驗(yàn)平臺?本文對這個問題進(jìn)行探討,介紹一種在單機(jī)環(huán)境下使用VirtualBox和Hadoop搭建云計(jì)算虛擬實(shí)驗(yàn)平臺的方法,從而解決了因?qū)嶒?yàn)設(shè)備不足而無法開展云計(jì)算課程實(shí)驗(yàn)教學(xué)的問題.
虛擬機(jī)(Virtual Machine)是使用虛擬化技術(shù)在物理計(jì)算機(jī)上模擬出來的邏輯計(jì)算機(jī),虛擬機(jī)擁有獨(dú)立的操作系統(tǒng)和應(yīng)用程序[4].使用虛擬機(jī)軟件可以在一個宿主機(jī)上創(chuàng)建幾個虛擬機(jī), 因此,可以在單機(jī)環(huán)境下模擬小規(guī)模的分布式集群,進(jìn)而在虛擬集群上搭建云計(jì)算實(shí)驗(yàn)平臺,既節(jié)約了實(shí)驗(yàn)成本,又達(dá)到了實(shí)驗(yàn)的目的[5].
VirtualBox是一款開源的虛擬機(jī)軟件,現(xiàn)在由Oracle公司開發(fā)維護(hù).VirtualBox具有優(yōu)異的性能和豐富的特性,可以運(yùn)行在Windows、 Linux、Macintosh等操作系統(tǒng)上,在教育培訓(xùn)、軟件開發(fā)與測試等領(lǐng)域都得到了廣泛的應(yīng)用.
Hadoop[6]是Apache軟件基金會的一個開源分布式計(jì)算框架,可以在大量廉價的硬件設(shè)備組成的集群上運(yùn)行應(yīng)用程序.企業(yè)和個人都可以使用Hadoop構(gòu)建PaaS層次的云計(jì)算平臺.Hadoop的核心是HDFS分布式文件系統(tǒng)、MapReduce分布式并行計(jì)算框架和HBase分布式數(shù)據(jù)庫,它們分別是Google云計(jì)算最核心技術(shù)GFS、MapReduce和Bigtable的開源實(shí)現(xiàn).因?yàn)镠adoop具有高可靠性、高擴(kuò)展性和高容錯性等優(yōu)點(diǎn),已經(jīng)在Yahoo! 、Facebook、百度、淘寶等公司的集群上成功部署和運(yùn)行,取得了非常突出的成績[7].
Hadoop軟件更新很快,可供用戶選擇的版本非常多,本文的實(shí)驗(yàn)平臺基于Hadoop 1.x(第一代Hadoop)搭建.在Hadoop 1.x的軟件體系結(jié)構(gòu)中,HDFS系統(tǒng)和MapReduce框架都采用了主/從(master/ slave)結(jié)構(gòu).在主節(jié)點(diǎn)上運(yùn)行NameNode、Secondary NameNode和JobTracker守護(hù)進(jìn)程,在從節(jié)點(diǎn)上運(yùn)行DataNode和TaskTracker守護(hù)進(jìn)程.這些守護(hù)進(jìn)程在集群中承擔(dān)了不同的任務(wù),其中,NameNode位于HDFS的主端,負(fù)責(zé)存儲和管理HDFS 文件系統(tǒng)的元數(shù)據(jù)、指導(dǎo)從端的DataNode 執(zhí)行底層的I/O操作.Secondary NameNode是一個用于監(jiān)測HDFS系統(tǒng)運(yùn)行狀態(tài)的輔助守護(hù)進(jìn)程,根據(jù)配置的時間間隔保存HDFS元數(shù)據(jù)的備份.DataNode位于HDFS的從端,負(fù)責(zé)將HDFS的數(shù)據(jù)塊讀取或?qū)懭氲奖镜匚募到y(tǒng)的實(shí)際文件中.JobTracker運(yùn)行在MapReduce的主節(jié)點(diǎn)上,負(fù)責(zé)將MapReduce作業(yè)分配給TaskTracker執(zhí)行,并監(jiān)測作業(yè)的整個執(zhí)行過程.TaskTracker運(yùn)行在MapReduce的從節(jié)點(diǎn)上,負(fù)責(zé)執(zhí)行JobTracker 分配的任務(wù).
在實(shí)驗(yàn)環(huán)境下,通常在主節(jié)點(diǎn)上同時運(yùn)行NameNode、Secondary NameNode和JobTracker守護(hù)進(jìn)程,在從節(jié)點(diǎn)上同時運(yùn)行DataNode和TaskTracker守護(hù)進(jìn)程.一個典型的Hadoop集群采用的拓?fù)鋱D如圖1所示.
圖1 一個典型Hadoop集群的拓?fù)鋱D
圖1一個典型Hadoop集群的拓?fù)鋱D
3.1 相關(guān)的準(zhǔn)備工作及說明
(1)安裝宿主機(jī)
在宿主機(jī)上安裝Linux系統(tǒng)和Vritual Box軟件.雖然可以在宿主機(jī)上安裝Windows或其他系統(tǒng),但是考慮到目前很多高校的計(jì)算機(jī)實(shí)驗(yàn)室的設(shè)備配置較低[8],為了充分利用現(xiàn)有資源,在宿主機(jī)上安裝Linux系統(tǒng)就有了明顯的優(yōu)點(diǎn).這是因?yàn)榘惭b了Linux系統(tǒng)的宿主機(jī)可以用作Hadoop虛擬集群的一臺服務(wù)器,這就減少了一個虛擬機(jī),從而能更好地在配置較低的計(jì)算機(jī)上完成虛擬實(shí)驗(yàn)平臺的搭建.VirtualBox安裝包可以從Oracle公司的網(wǎng)站下載(https://www.virtualbox.org/wiki/Linux_Downloads),本文的實(shí)驗(yàn)使用的VirtualBox軟件版本是4.3.6.
(2)創(chuàng)建虛擬機(jī)
使用VirtualBox創(chuàng)建兩個或更多的虛擬機(jī),然后分別在虛擬機(jī)上安裝Linux系統(tǒng).為了使宿主機(jī)與虛擬機(jī)、虛擬機(jī)與虛擬機(jī)之間能夠相互訪問,需要對虛擬機(jī)的網(wǎng)絡(luò)連接方式進(jìn)行設(shè)置.虛擬機(jī)的網(wǎng)絡(luò)連接方式可以選擇網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)或橋接網(wǎng)卡,本文的實(shí)驗(yàn)選擇橋接網(wǎng)卡的連接方式.設(shè)置方法如下:在VirtualBox管理器中單擊“設(shè)置(S)”按鈕,在“設(shè)置”對話框中單擊“網(wǎng)絡(luò)”標(biāo)簽,將網(wǎng)卡1的連接方式設(shè)為橋接網(wǎng)卡.
(3)規(guī)劃宿主機(jī)和虛擬機(jī)在Hadoop虛擬集群中的角色
分別給宿主機(jī)和虛擬機(jī)命名并設(shè)置IP地址.服務(wù)器在Hadoop集群中的角色是由運(yùn)行在該服務(wù)器上的守護(hù)進(jìn)程定義的,本文的實(shí)驗(yàn)創(chuàng)建了兩個虛擬機(jī),宿主機(jī)和虛擬機(jī)的主機(jī)名、IP地址及其服務(wù)器角色如表1所示.
表1 主機(jī)的IP地址及其角色分配表
在配置Hadoop集群時,一般使用主機(jī)名表示服務(wù)器,而不是直接使用IP地址.這就需要在所有服務(wù)器上編輯文件“/etc/hosts”,給出集群中的主機(jī)名與IP地址的對應(yīng)關(guān)系,使服務(wù)器都能互相解析對方的主機(jī)名.在本文的實(shí)驗(yàn)中,文件“/etc/hosts”的內(nèi)容如下:
(4)在宿主機(jī)和虛擬機(jī)上安裝Java
運(yùn)行Hadoop需要Java 6或更高版本,可以從Oracle公司的網(wǎng)站下載JDK(http://www.oracle.com/ technetwork/java/javase/downloads/index.html),本文的實(shí)驗(yàn)使用的JDK版本是1.7.0_51.為了方便對Hadoop進(jìn)行配置,通常把相同版本的JDK安裝到宿主機(jī)和虛擬機(jī)的相同目錄下,具體的安裝過程如下:在usr/lib/目錄下建立jvm目錄,把下載的JDK軟件包解壓到j(luò)vm目錄下,命令如下:
在文件“/etc/profile”中設(shè)置Java環(huán)境變量,添加以下內(nèi)容:
3.2 搭建虛擬實(shí)驗(yàn)平臺的基本步驟
(1)創(chuàng)建Hadoop虛擬集群的公共帳號
分別在宿主機(jī)和虛擬機(jī)上創(chuàng)建一個用于管理Hadoop虛擬集群的相同帳號,以區(qū)分本機(jī)上的其他服務(wù)和輔助SSH(Secure Shell)密鑰分布[9].本文的實(shí)驗(yàn)創(chuàng)建的公共賬號為hadoop,為了方便安裝軟件,可以把該用戶加入sudo組,命令如下:
(2)安裝與配置SSH
Hadoop使用了無口令的SSH協(xié)議,允許Hadoop用戶無需輸入密碼即可登錄集群內(nèi)的所有機(jī)器.安裝與配置SSH的過程如下:
使用安裝包管理工具逐一在宿主機(jī)和虛擬機(jī)上安裝了SSH,命令如下:
在宿主機(jī)上生成SSH公鑰/私鑰對,并將公鑰添加到授權(quán)密鑰列表文件“~/.ssh/ authorized_keys”中,命令如下:
逐一將宿主機(jī)的公鑰文件“.ssh/id_rsa.pub”復(fù)制到所有的虛擬機(jī)上,并將公鑰設(shè)置為虛擬機(jī)的授權(quán)密鑰,添加到虛擬機(jī)的授權(quán)密鑰列表文件“.ssh/authorized_keys”中.以虛擬機(jī)1為例,命令如下:
在宿主機(jī)上逐一使用SSH登錄到虛擬機(jī),并確認(rèn)虛擬機(jī)對宿主機(jī)的授權(quán).以虛擬機(jī)1為例,命令如下:
(3)安裝與配置Hadoop虛擬集群
為了較快地完成Hadoop虛擬集群的安裝與配置,可以采用如下方法:首先在宿主機(jī)上安裝和配置Hadoop,然后將宿主機(jī)上配置好的整個Hadoop目錄復(fù)制到所有的虛擬機(jī)上.在宿主機(jī)上安裝與配置Hadoop的具體過程如下:
從Hadoop的官方網(wǎng)站(http://hadoop.apache.org)下載Hadoop軟件包,本文的實(shí)驗(yàn)使用的Hadoop版本是1.2.1.把下載的軟件包解壓到Hadoop用戶的home目錄,命令如下:
接下來,編輯安裝目錄的“conf ”子目錄下的6個配置文件,最基本的配置項(xiàng)及其說明如下:
在配置文件“hadoop-env.sh”中定義環(huán)境變量JAVA_HOME,使之指向Java的安裝目錄,內(nèi)容如下:
在配置文件“core-site.xml”中指定NameNode服務(wù)器的主機(jī)名及端口號,內(nèi)容如下:
在配置文件“hdfs-site.xml”中指定HDFS備份的副本數(shù),默認(rèn)的副本數(shù)為3.由于本文的實(shí)驗(yàn)只創(chuàng)建了2個虛擬機(jī),所以將副本數(shù)設(shè)置為2,內(nèi)容如下:
在配置文件“mapred-site.xml ”中指定JobTracker服務(wù)器的主機(jī)名及端口號,內(nèi)容如下:
在配置文件“masters”中指定Secondary NameNode服務(wù)器的主機(jī)名,內(nèi)容如下:
在配置文件“slaves”中指定DataNode和TaskTracker服務(wù)器的主機(jī)名,內(nèi)容如下:
在虛擬機(jī)上安裝與配置Hadoop的具體過程如下:首先,將宿主機(jī)上安裝與配置好的整個Hadoop目錄壓縮,逐一將壓縮包復(fù)制到所有的虛擬機(jī)上.然后,在虛擬機(jī)上將壓縮包解壓到Hadoop用戶的根目錄.以虛擬機(jī)1為例,安裝與配置Hadoop的命令如下:
(4)啟動Hadoop
首先在宿主機(jī)上格式化Hadoop的文件系統(tǒng)HDFS,然后啟動Hadoop的守護(hù)進(jìn)程,命令如下:
說明:可以使用“jps”命令查看守護(hù)進(jìn)程是否已經(jīng)啟動,如果所有的守護(hù)進(jìn)程都已經(jīng)啟動,則說明虛擬集群已經(jīng)搭建成功.
3.3 虛擬實(shí)驗(yàn)平臺測試
作者對搭建好的云計(jì)算虛擬實(shí)驗(yàn)平臺進(jìn)行了測試,計(jì)算機(jī)的配置是Intel Core2 Duo CPU(主頻為3.00GHz)、2GB內(nèi)存、320GB硬盤,操作系統(tǒng)是32位的Ubuntu 12.04 LTS.
測試的過程如下:首先,準(zhǔn)備3個文本文件file1.txt、file2.txt和file3.txt,其中file1.txt為10KB,file2.txt為100MB,file3.txt為1GB.接下來,使用Hadoop的示例程序wordcount統(tǒng)計(jì)文件中單詞出現(xiàn)的次數(shù),對每個文件運(yùn)行wordcount程序3次.最后,使用Web界面(http://hdpmaster:50030)查看程序運(yùn)行的時間,將運(yùn)行時間取平均值(舍去小數(shù)),得到的結(jié)果如表2所示.
表2 wordcount程序運(yùn)行時間表
測試結(jié)果表明:該實(shí)驗(yàn)平臺不但能對小數(shù)據(jù)進(jìn)行較快的存儲和處理,而且能對較大的數(shù)據(jù)(1GB)進(jìn)行存儲和處理,達(dá)到了使用云計(jì)算處理大規(guī)模計(jì)算問題的基本目標(biāo),能滿足云計(jì)算相關(guān)課程實(shí)驗(yàn)教學(xué)的基本要求.可見,本文介紹的搭建云計(jì)算虛擬實(shí)驗(yàn)平臺的方法是可行的.
隨著云計(jì)算的快速發(fā)展,將會有越來越多高校開設(shè)云計(jì)算相關(guān)課程.本文從節(jié)約實(shí)驗(yàn)成本的角度出發(fā),探討了在設(shè)備不足、設(shè)備配置較低的情況下搭建云計(jì)算實(shí)驗(yàn)平臺的問題,介紹了一種在單機(jī)環(huán)境下使用VirtualBox和Hadoop搭建云計(jì)算虛擬實(shí)驗(yàn)平臺的方法.采用本文方法搭建的實(shí)驗(yàn)平臺可以直接運(yùn)行MapReduce應(yīng)用程序,并且平臺的體系結(jié)構(gòu)具有很好的擴(kuò)展性,能夠充分利用現(xiàn)有資源.利用該實(shí)驗(yàn)平臺可以開展數(shù)據(jù)存儲與管理、MapReduce編程模型、虛擬化技術(shù)、云計(jì)算平臺搭建與維護(hù)等實(shí)驗(yàn),能滿足云計(jì)算相關(guān)課程實(shí)驗(yàn)教學(xué)的基本要求. ■
[1]Armbrust M,Fox A,Griffith R,et al. Above the Clouds: A Berkeley View of Cloud Computing[R/OL]. UC Berkeley,RAD Laboratory, 2009 [2014-02-16].http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/ EECS-2009-28.html.
[2]張建勛,古志民,鄭超.云計(jì)算研究進(jìn)展綜述[J].計(jì)算機(jī)應(yīng)用研究,2010,27(2):429-433.
[3]李紅.云計(jì)算帶給高校計(jì)算機(jī)專業(yè)教學(xué)的思考[J].鞍山師范學(xué)院學(xué)報(bào),2012,14(6):57-63.
[4]何增穎,陳建銳.基于虛擬技術(shù)的計(jì)算機(jī)實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(1):79-82.
[5]張巖,郭松,趙國海.基于Hadoop的云計(jì)算試驗(yàn)平臺搭建研究[J].沈陽師范大學(xué)學(xué)報(bào):自然科學(xué)版,2013,31(1):85-89.
[6]ApacheHadoop[EB/OL].TheApacheSoftwareFoundation,2014[2014-02-16].http://hadoop.a(chǎn)pache.org/.
[7]陸嘉恒.Hadoop實(shí)戰(zhàn):第2版[M].北京:機(jī)械工業(yè)出版社,2012.
[8]肖租秀.基于云計(jì)算的計(jì)算機(jī)實(shí)驗(yàn)設(shè)備管理平臺的研究與應(yīng)用[J].玉林師范學(xué)院學(xué)報(bào):自然科學(xué),2013,34(5):133-139.
[9]TomWhite.Hadoop權(quán)威指南:第2版[M].周敏奇,王曉玲,金澈清,等譯.北京:清華大學(xué)出版社,2011.
【責(zé)任編輯 謝明俊】
Building Virtual Experiment Platform of Cloud Computing by VirtualBox and Hadoop
ZHOU Guo-jun, WU Qing-jun
( College of Maths & Information Science, Yulin Normal University, Yulin, Guangxi 537000 )
This paper discusses how to build experiment platform of cloud computing under the condition of insufficient devices. From the point of view of saving experimental cost, a method is introduced which uses VirtualBox and Hadoop to build virtual experiment platform of cloud computing with single computer, and detailed implementation steps of the method are given. Performance test for the virtual experiment platform is done, and the test result shows that the experimental platform can meet the basic requirement of experimental teaching of cloud computing courses, and can make full of existing devices.
VirtualBox; Hadoop; cloud computing; virtual experiment platform
TP391.9
A
1004-4671(2014)02-0113-06
2014-02-25
玉林師范學(xué)院高等教育教學(xué)改革工程立項(xiàng)項(xiàng)目(項(xiàng)目編號:14YJJG10)
周國軍(1975~),男,湖南寧遠(yuǎn)人,碩士,玉林師范學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院講師。研究方向:云計(jì)算、數(shù)據(jù)挖掘。
玉林師范學(xué)院學(xué)報(bào)2014年2期