孔藝權
(湛江師范學院信息科學與技術學院,廣東湛江 524048)
目前在全國高校實驗室工作研究會刊《實驗室研究與探索》和《實驗技術與管理》發表有關“云計算”在實驗教學應用的論文有10多篇。文獻[1-2]研究了“云計算”及虛擬化技術特點,提出了利用計算虛擬化技術與“云計算”技術高效地管理計算機與軟件實驗資源。文獻[3-5]基于“云計算”思想設計了虛擬機管理平臺,虛擬化計算機實驗室,提出了一種基于“云計算”理念的虛擬實驗教學系統設計思想,文獻[6-8]闡述了“云計算”將對高校教學資源產生的影響,指出“云計算”為高校建設帶來的優勢及其遇到的問題,基于“云計算”的虛擬實驗教學環境,開展基于“云計算”的實驗教學改革模式。所發表論文主要研究了“云計算”虛擬化技術,“云計算”在實驗資源優化和實驗教學方面的應用,給出相應的設計框架;然而如何實現“云計算”模式,具體實現過程沒有進一步描述,“云計算”環境到底怎么構建,值得進一步研究。
“云計算”作為一種改變舊有IT 架構的計算模式,被IT 界普遍認為是繼大型機、小型機、個人PC、互聯網之后又一次信息技術變革。本文在《實驗室研究與探索》和《實驗技術與管理》中“云計算”實驗教學相關研究基礎上,開展了面向開源Hadoop平臺的“云計算”仿真實驗設計,給出“云計算”環境具體實現過程,對每個實現步驟作出詳細描述,創建了實驗教學中“云計算”仿真環境。
Hadoop[9]是Apache開源組織的一個分布式計算框架,可以在大量廉價的硬件設備組成的集群上運行應用程序,為應用程序提供了一組穩定可靠的接口,構建一個具有高可靠性和良好擴展的分布式系統。Hadoop的核心是HDFS、MapReduce和HBase,分別是“云計算”核心技術GFS、MapReduce和Bigtable的開源實現。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)是分布式計算的存儲基礎。HDFS具有高容錯性,適合大數據集的應用,并且提供了對數據讀寫的高吞吐率。MapReduce在大型集群上執行分布式應用,核心思想就是任務的分解與結果的匯總。
本文面向開源Hadoop平臺的“云計算”進行仿真實驗設計。因為Hadoop 的優勢不但在于它的開源,而且Hadoop 的設計根本就是存儲和計算的高可擴展性,分布式文件系統的備份恢復機制和MapReduce的任務監控又保證了分布式處理的高可靠性。任何普通的PC 上安裝運行Hadoop 框架集群都可用來高效處理海量的信息。實驗采用的VirtualBox是甲骨文公司xVM 虛擬化平臺技術的一部分,提供在32位或64位的Windows、Solaris及Linux 操作系統上虛擬其他x86的操作系統,與同性質的VMware及Virtual PC比較,VirtualBox獨到之處包括遠程桌面協定(RDP)、iSCSI及USB的支持,可以滿足目前高校實驗室普遍性要求。
“云計算”仿真實驗平臺網絡拓撲見圖1。實驗環境中主要以1臺Hadoop Master服務器與3臺Hadoop Slaves服務器來實現的,其中hdp0當作Hadoop Master,負責NameNode與Job Tracker,而另外3臺hdp1—hdp3則當作Hadoop Slaves,負責DataNode 與Task Tracker。Hadoop Master的主要職責就是啟動、跟蹤和調度各個任務的執行。仿真實驗通過開源VirtualBox虛擬主機軟件和Hadoop技術來實現,并讓其運行復雜的MapReduce計算,進行Hadoop“云計算”仿真。
實驗中通過虛擬平臺來仿真Hadoop服務器,形成一個小型的“云計算”仿真實驗平臺,實驗需先安裝開源VirtualBox虛擬主機軟件,然后在其所仿真出來的虛擬主機上安裝Linux和Hadoop“云計算”系統。利用Hadoop搭建“云計算”仿真實驗平臺,系統要裝備Java SDK、SSH 安全聯機以及rsync遠程同步軟件,通過運行sudo 以root身份搭配運行apt-get指令[10],自動獲得軟件組件并安裝“云計算”相關軟件。為了實現同一個網域內的每臺運行Hadoop的服務器都可以互相解析對方的網址以便仿問數據,編輯所有服務器的Linux操作系統的主機設置文檔/etc/hosts。“云計算”仿真實驗中將計算資源組成IT 資源池,用于動態創建高度虛擬化的資源提供用戶使用。分布于網絡上的各種高性能計算、服務器、數據庫、儀器設備、軟件、知識等資源,實驗采用了底層結構與上層應用共同設計的方法來完善應用程序的構建,進行資源共享和相關問題的解決[11]。

圖1 “云計算”仿真實驗網絡拓撲圖
面向開源Hadoop“云計算”仿真實驗平臺有一個特性就是不管是Master還是Slave主機,其Hadoop系統設置共同SSH[12]密鑰。實驗中每臺服務器主機都有相同的Hadoop 系統設置,設置Hadoop Master主機之后,通過SSH 密鑰證書的scp安全復制指令,可以遠程登錄仿真網絡任何一臺Hadoop主機,并直接將相同設置分發到其他Hadoop主機上。實驗先在Hadoop NameNode的Master主機上,運行SSH 密鑰創建指令,創建配置SSH 密鑰安全聯機:

在仿真實驗平臺中通過運行ssh hdp0指令免密碼直接安全登錄hdp0 服務器,在Hadoop Master主機上使用scp 安全復制指令將hdp0 這臺Hadoop Master主機所創建的SSH 授權密鑰authorized_keys,復制到每一臺Hadoop Slave服務器上,先復制文檔需要輸入其他Slave主機的Hadoop賬號與密碼,待復制授權密鑰文檔authorized_keys成功后進行SSH 聯機后,Hadoop Master主機就可以完全免輸入密碼了,和其他Slave主機以SSH 指令安全聯機了。

多節點“云計算”系統的主節點搭建過程:先編輯系統Slaves設置文檔,將Hadoop的所有服務器(包含主服務器hdp0)全部添加到Slaves次服務器設置文檔中,當作DataNode與TaskTracker。當正式啟動Hadoop“云計算”系統時,實驗平臺是采用網頁的方式監控各節點的運行狀況,因此必須有一個Hadoop“云計算”系統的管理網站,來監管Hadoop“云計算”系統的所有節點主機的NameNode主服務器,這個管理網站設置文檔為core-site.xml。要讓Hadoop“云計算”系統運行Map 與Reduce程序,還有設置mapred-site.xml文檔,專門用來監控Map與Reduce程序的Job-Tracker工作分配狀況以及TaskTracker工作運行情況,編輯 Map/Reduce 程序設置文檔 mapredsite.xml。

Master主機hdp0上創建放置NameNode和DataNode數據的目錄,運行指令如下:

部署Hadoop從節點,主要為了讓Hadoop“云計算”系統的Master與Slave服務器都擁有統一的設置,當設置完hdp0主服務器后,使用先前已經創建好的各主機間SSH 安全聯機機制的scp復制指令,將完整的Hadoop安裝目錄復制到其他Slave服務器上,這樣才能讓實驗仿真中全部服務器協調運行。主要實驗方法運行scp指令:



實驗測試hadoop namenode–format指令是否運行正確,會看到系統的成功運行消息。如果有任何的錯誤消息生成,則代表core-site.xml、hdfs-site.xml或mapred-site.xml設置文檔錯誤,依照錯誤消息的指示更改這相關設置文檔。初始化Hadoop文件系統是Hadoop 啟動的第一步,每次初始化前,要清空$HADOOP_HOME\tmp 目錄下的所有文件,Hadoop初始化時會重新建立NameNoteID,而tmp里還包含上次初始化留下的信息,初始化雖然清空了NameNote的數據,但是保留了DateNote的數據。
初始化Hadoop“云計算”系統之后,通過運行start-all.sh系統啟動指令,就可以啟動運行Hadoop“云計算”系統。運行start-all.sh啟動指令后,就會啟動NameNode與JobTracker主機hdp0,并開始跟其他的Slave服務器創建聯機,同時啟動DataNode與Tasktracker功能,并在“$hadoop.0.20.2/logs”目錄下生成記錄文檔,開始正式接受NameNode分配的“云計算”任務。

實驗結果可以使用系統IE 瀏覽器,訪問http://hdp0:50070查看NameNode的運行狀況以及整個分布式文件系統的狀態,瀏覽分布式文件系統中的文件以及日志等;訪問http://hdp0:50030可以查看Job-Tracke的運行狀態;訪問http://hdp0:50060可以查看TaskTracker的運行狀態,實驗結果見圖2。

圖2 查看hadoop“云計算”實驗平臺運行情況
實驗測試構建好的4節點hadoop“云計算”仿真實驗平臺是否可以正常運行Map與Reduce工作,采用hadoop程序組件內所提供的WordCount程序,讓“云計算”仿真實驗平臺使用Map/Reduce計算輸入文檔中每種英文字的出現總次數。

通過bin/hadoop指令指定使用HDFS分布式文檔格式篩選這2個文檔作為Map/Reduce工作的輸入文檔;使用hadoop-0.20.2-example.jar內附的wordcount程序開始計算輸入文檔中每種英文字出現的總次數。當運行wordcount程序時,此時hadoop“云計算”仿真實驗平臺的NameNode與JobTracker主機hdp0就會發揮功能,將Map/Reduce工作分配給每臺DataNodes與TaskTracker服務器,通過網頁瀏覽http://hdp0:50030查看當前“云計算”仿真實驗平臺正在進行的Map與Reduce工作有哪些以及當前進度,實驗結果見圖3。

圖3 “云計算”實驗平臺的MapReduce工作狀況
待MapReduce工作完成之后,就會在HDFS 分布式文檔系統下生成輸出文檔,可以查看hadoop“云計算”仿真實驗平臺計算所得到的每種英文字出現的總次數(見圖4)。實驗結果表明:仿真平臺實現了硬件資源的虛擬化管理、調度及應用,并且通過仿真模式為用戶提供一個不同操作系統下運行各應用程序的虛擬集群計算環境。

圖4 “云計算”仿真HDFS實驗分布式文檔系統
在VirtualBox虛擬平臺和Hadoop 系統集群下,設計并實現了“云計算”仿真實驗平臺,通過SSH 安全密鑰機制,方便搭建和配置Hadoop系統集群,從而方便地實現了“云計算”仿真實驗平臺。實現“云計算”仿真實驗平臺后,通過讓其運行簡單的MapReduce計算即可進行測試工作。平臺的構建不僅改進了實驗手段,而且還改進和充實了實驗內容,同時實驗系統的結構具有良好的擴展性,不僅能完成原有的實驗內容,還可以加入新的實驗,為學生進行“云計算”創新性實驗打下良好的基礎,同時利用信息技術新手段和新方法,對IT 類專業實驗教學進行改革,建立新型的實驗教學模式,提高實驗教學質量,培養創新型IT 人才[13]。
(
)
[1]羅國瑋,蘭瑞樂.基于云計算的高校科研實驗平臺構建研究[J].實驗技術與管理,2012,29(4):115-117.
[2]柴亞輝,涂春萍,劉覺夫,等.基于云計算的計算機與軟件實驗資源管理[J].實驗室研究與探索,2010,29(10):254-257.
[3]李英壯,廖培騰,孫夢,等.基于云計算的數據中心虛擬機管理平臺的設計[J].實驗技術與管理,2011,28(5):1-3.
[4]黃晨暉,林泳琴.基于云計算的虛擬化計算機實驗室的研究與實現[J],實驗室研究與探索,2010,29(11):178-181.
[5]魯慧民,劉剛.基于云計算理念的虛擬實驗教學系統設計探討[J].實驗技術與管理,2012,29(4):334-337.
[6]趙明明,林衛峰,張宏都.高校云計算平臺建設的發展趨勢[J].實驗技術與管理,2011,28(7):117-118.
[7]林瑜華.云計算環境下高校實驗教學模式的創新與實踐[J].實驗室研究與探索,2011,30(8):271-274.
[8]玉芬,郭曉娟.云計算對高校教學資源影響解析[J].實驗技術與管理,2010,27(5):111-113.
[9]田秀霞,周耀君,畢忠勤,等.基于Hadoop架構的分布式計算和存儲技術及其應用[J].上海電力學院學報,2011(1):2-4.
[10]何世曉.Linux 網絡服務配置詳解[M].北京:清華大學出版社,2011.
[11]孔藝權.基于語義云實驗資源共享平臺的研究[J].實驗室研究與探索,2012,31(7):216-219.
[12]張麗,梁斌,周淑萍.利用SSH 的密鑰對建立安全通道[J].微計算機信息,2006(33):4-6.
[13]孔藝權.師范院校IT 類專業實驗教學研究與實踐[J].實驗技術與管理,2011,28(12):156-158.