陳豪 謝曉蘭
【摘 要】云計(jì)算是一種基于Internet以服務(wù)的方式提供動(dòng)態(tài)可伸縮的虛擬化資源的計(jì)算模式,通過這種模式,共享的軟硬件資源和信息可以按需分配給計(jì)算機(jī)和其它設(shè)備。本文順應(yīng)目前手持智能終端普及的熱潮,進(jìn)一步推進(jìn)數(shù)字校園的建設(shè),實(shí)現(xiàn)高校信息共享的移動(dòng)化。首先,本文對(duì)基于Hadoop分布式計(jì)算平臺(tái)的云技術(shù)如MapReduce、HDFS、HBase及其開發(fā)環(huán)境等進(jìn)行深入的研究。其次,采用Java語言開發(fā)基于Hadoop的針對(duì)高校學(xué)生的校園服務(wù)系統(tǒng)的服務(wù)器端系統(tǒng),該系統(tǒng)包括用戶和微博信息服務(wù)、通用API以及Web管理系統(tǒng)等部分。
【關(guān)鍵詞】Java;Hadoop;HBase;API;Eclipse;校園通
0 緒論
(1)背景和意義
目前高校的電子化信息交流基本都是通過個(gè)人電腦來實(shí)現(xiàn),為了滿足移動(dòng)時(shí)代的需求,提供移動(dòng)化的交流平臺(tái)是建設(shè)數(shù)字化校園的重要手段之一。同時(shí),考慮到高校的實(shí)際情況,如何充分利用有限的計(jì)算資源將會(huì)是一個(gè)重點(diǎn)解決問題。Apache軟件基金會(huì)的頂級(jí)項(xiàng)目Hadoop是一個(gè)云計(jì)算時(shí)代下的成熟的分布式框架,允許用戶通過由多臺(tái)低廉計(jì)算機(jī)組成的集群來進(jìn)行大數(shù)據(jù)集的分布式運(yùn)算處理。研究Hadoop,對(duì)于解決高校資源匱乏、提高計(jì)算性能等問題有舉足輕重的作用。
(2)研究目的和探討內(nèi)容
由于本課題是合作課題,本文關(guān)注的內(nèi)容是基于Hadoop技術(shù)的服務(wù)端的研究和設(shè)計(jì),因此本文不會(huì)對(duì)Android平臺(tái)方面的內(nèi)容進(jìn)行詳述,Android是校園服務(wù)系統(tǒng)的前端。
本文首先對(duì)Hadoop分布式計(jì)算框架核心內(nèi)容及其結(jié)構(gòu)如HBase等作深入的理論探討和研究。其次,開發(fā)實(shí)現(xiàn)基于云技術(shù)的校園通服務(wù)端系統(tǒng)實(shí)例。采用Java語言開發(fā)基于Struts2框架和Spring框架以及Hadoop框架的針對(duì)高校學(xué)生用戶的校園服務(wù)系統(tǒng)的服務(wù)端系統(tǒng),其中包括提供給前端應(yīng)用調(diào)用的應(yīng)用程序接口API;校園通的后端系統(tǒng),供網(wǎng)絡(luò)管理員對(duì)系統(tǒng)進(jìn)行基本的管理,如系統(tǒng)基本設(shè)置、內(nèi)容管理、用戶管理等功能。
1 Hadoop技術(shù)及架構(gòu)
1.1 Hadoop體系架構(gòu)
Hadoop是Apache軟件基金會(huì)旗下的一個(gè)開源分布式計(jì)算平臺(tái),提供可靠的、可伸縮的分布式計(jì)算。Hadoop軟件庫是一個(gè)允許大數(shù)據(jù)集的分布式運(yùn)算在計(jì)算機(jī)集群上運(yùn)行的框架,它使用了簡(jiǎn)單的計(jì)算模型。Hadoop被設(shè)計(jì)用于從單節(jié)點(diǎn)服務(wù)器擴(kuò)展到數(shù)千臺(tái)可伸縮的計(jì)算機(jī)來提供本地計(jì)算和存儲(chǔ)。相對(duì)于依賴硬件的高可用性,Hadoop被設(shè)計(jì)成能夠監(jiān)測(cè)和處理應(yīng)用層的錯(cuò)誤,使得集群中的計(jì)算機(jī)能夠提供高可用性的服務(wù),即使它們可能會(huì)發(fā)生錯(cuò)誤。
MapReduce和HDFS是Hadoop的兩大核心。而整個(gè)Hadoop的體系結(jié)構(gòu)主要是通過HDFS來實(shí)現(xiàn)分布式存儲(chǔ)的底層支持的,并且它會(huì)通過MapReduce來實(shí)現(xiàn)分布式并行任務(wù)處理的程序支持。
1.1.1 HDFS分布式文件系統(tǒng)
HDFS采用了主從(Master/Slave)結(jié)構(gòu)模型,一個(gè)HDFS集群是由一個(gè)NameNode和若干個(gè)DataNode組成的,并以管理者(NameNode)-工作者(DataNode)模式運(yùn)行。其中NameNode作為主服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的命名空間和客戶端對(duì)文件的訪問操作,它維護(hù)者文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄;DataNode是文件系統(tǒng)的工作節(jié)點(diǎn),負(fù)責(zé)管理存儲(chǔ)的數(shù)據(jù),它們會(huì)根據(jù)需要存儲(chǔ)并檢索數(shù)據(jù)塊(受客戶端或NameNode調(diào)度),并且定期向NameNode發(fā)送它們所存儲(chǔ)的塊的列表。
1.1.2 MapReduce計(jì)算模型
MapReduce是一種并行編程模式,是Hadoop的核心計(jì)算模型,其易用的特性令軟件開發(fā)者可以輕松地編寫出分布式并行程序。在Hadoop的體系結(jié)構(gòu)中,MapReduce是一個(gè)簡(jiǎn)單易用的軟件框架,基于它可以將任務(wù)分發(fā)到由上千臺(tái)商用機(jī)器組成的集群上,并以一種可靠容錯(cuò)的方式并行處理大量的數(shù)據(jù)集,實(shí)現(xiàn)Hadoop的并行任務(wù)處理功能。MapReduce框架是由一個(gè)單獨(dú)運(yùn)行在主節(jié)點(diǎn)的JobTracker和運(yùn)行在每個(gè)集群從節(jié)點(diǎn)的TaskTracker共同組成的。主節(jié)點(diǎn)負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點(diǎn)上。
1.2 分布式數(shù)據(jù)庫HBase
HBase是一種“NoSQL”數(shù)據(jù)庫,它是一個(gè)開源的、分布式的、多版本的、面向列的存儲(chǔ)模型。
其服務(wù)器體系結(jié)構(gòu)遵從簡(jiǎn)單的主從服務(wù)器架構(gòu),它由Region服務(wù)器(RegionServer)和Master服務(wù)器(Master Server)構(gòu)成。Master服務(wù)器主要負(fù)責(zé)管理集群中的Region服務(wù)器,而HBase中的所有服務(wù)器都是通過ZooKeeper來協(xié)調(diào)和處理服務(wù)器運(yùn)行期間可能出現(xiàn)的錯(cuò)誤。Master服務(wù)器本身不存儲(chǔ)HBase中的任何數(shù)據(jù),HBase上的表會(huì)被劃分為多個(gè)Region,然后分布存儲(chǔ)到Region服務(wù)器群中。Master服務(wù)器中存儲(chǔ)的是Region到Region服務(wù)器的映射。HBase是一個(gè)基于列模式的映射數(shù)據(jù)庫,它只能表示很簡(jiǎn)單的鍵-值的映射關(guān)系,這相對(duì)于傳動(dòng)的關(guān)系型數(shù)據(jù)庫有了極大的簡(jiǎn)化。
2 構(gòu)建校園通服務(wù)端
2.1 服務(wù)端整體架構(gòu)
校園服務(wù)系統(tǒng)的服務(wù)器端不僅僅是一個(gè)Web后端管理系統(tǒng),還包含了供前端應(yīng)用調(diào)用的通用API,是一個(gè)整合了服務(wù)和管理的完整系統(tǒng)。本文重點(diǎn)關(guān)注如何基于Hadoop技術(shù)來提供API服務(wù),對(duì)于Web后端管理系統(tǒng)只作簡(jiǎn)要的闡述。
在本系統(tǒng)中,前端應(yīng)用通過調(diào)用后端提供的API來獲取相應(yīng)的服務(wù),并通過URL請(qǐng)求和JSON格式的數(shù)據(jù)交換進(jìn)行相互通信。而系統(tǒng)管理員可以通過常規(guī)終端如臺(tái)式電腦、筆記本電腦等對(duì)來訪問后端管理Web系統(tǒng),對(duì)服務(wù)端系統(tǒng)進(jìn)行管理。
系統(tǒng)的結(jié)構(gòu)分為負(fù)責(zé)采集數(shù)據(jù)并向用戶呈現(xiàn)系統(tǒng)狀態(tài)的視圖層、使用Struts2框架負(fù)責(zé)用戶請(qǐng)求和業(yè)戶邏輯組件交互的控制器層、由Spring框架管理業(yè)務(wù)邏輯組件的業(yè)務(wù)邏輯層、使用Spring for Apache Hadoop框架負(fù)責(zé)數(shù)據(jù)庫操作的數(shù)據(jù)訪問對(duì)象層以及基于HBase和HDFS的數(shù)據(jù)庫服務(wù)層。即系統(tǒng)將采用Struts2、Spring框架和HBase數(shù)據(jù)庫等技術(shù)進(jìn)行構(gòu)建。
2.1.1 系統(tǒng)業(yè)務(wù)架構(gòu)
系統(tǒng)主要分為兩部分:面向前端應(yīng)用的API和面向管理員的后端Web管理系統(tǒng)。前者主要以提供請(qǐng)求URL的方式,供前端應(yīng)用調(diào)用API獲取服務(wù)。后端系統(tǒng)提供的服務(wù)包括注冊(cè)登錄、獲取系統(tǒng)信息、獲取/更新用戶信息、獲取/更新消息信息和獲取/更新微博信息等,前端應(yīng)用可以通過調(diào)用相應(yīng)API來獲取對(duì)應(yīng)信息,這些信息都將通過JSON格式的數(shù)據(jù)來提供,并通過訪問令牌提高安全性。后端Web管理系統(tǒng)主要提供系統(tǒng)管理、日志管理、用戶管理、消息管理、微博管理等功能。
2.1.2 Hadoop的應(yīng)用
在本設(shè)計(jì)中,為了能夠使系統(tǒng)能夠利用云技術(shù)的優(yōu)勢(shì),同時(shí)考慮到Hadoop的適用性,將HBase作為系統(tǒng)的應(yīng)用數(shù)據(jù)庫,以實(shí)現(xiàn)在分布式系統(tǒng)上進(jìn)行高效的數(shù)據(jù)存儲(chǔ)和操作。當(dāng)系統(tǒng)中的數(shù)據(jù)量不斷增大達(dá)到一定程度時(shí),將數(shù)據(jù)分布存儲(chǔ)在集群中的各個(gè)節(jié)點(diǎn),能夠降低主服務(wù)器的負(fù)擔(dān),充分利用其它節(jié)點(diǎn)設(shè)備的資源。
2.2 API的設(shè)計(jì)
本研究中,后端系統(tǒng)通過API為前端應(yīng)用提供服務(wù),而無需前端應(yīng)用關(guān)注具體實(shí)現(xiàn)。API以URL的方式來呈現(xiàn),前端調(diào)用相應(yīng)的URL來發(fā)送請(qǐng)求,后端再根據(jù)相應(yīng)的請(qǐng)求進(jìn)行校驗(yàn)和處理,最后以JSON格式的數(shù)據(jù)將服務(wù)結(jié)果返回給前端。這樣的API具有良好的跨平臺(tái)性,而不僅僅只能夠由Android平臺(tái)的客戶端調(diào)用,為日后系統(tǒng)的擴(kuò)展提供了基礎(chǔ)。
為了保證系統(tǒng)和數(shù)據(jù)的安全性,前端和后端的通信采用HTTPS協(xié)議,同時(shí)除了注冊(cè)、登錄和注銷請(qǐng)求外,其它所有來自前端的請(qǐng)求都必須攜帶由后端系統(tǒng)授權(quán)的訪問令牌(Access Token),該令牌是在用戶成功登錄后由系統(tǒng)自動(dòng)分配的,并且具有唯一性和時(shí)效性。
2.3 服務(wù)端Web管理系統(tǒng)的設(shè)計(jì)
服務(wù)端Web管理系統(tǒng)是管理員對(duì)系統(tǒng)進(jìn)行管理的媒介,在這個(gè)系統(tǒng)上,將以B/S(瀏覽器/服務(wù)器)的形式為管理員提供一個(gè)管理系統(tǒng)的方法。管理員可以使用該系統(tǒng)進(jìn)行系統(tǒng)信息維護(hù)、個(gè)人信息維護(hù)、用戶管理、內(nèi)容管理、日志管理等操作。
在本系統(tǒng)中,具體層次分為三層:action層、service層以及dao層,分別對(duì)應(yīng)請(qǐng)求處理和界面呈現(xiàn)、業(yè)務(wù)邏輯處理、數(shù)據(jù)庫操作。此外,還包括用于封裝數(shù)據(jù)的model層,即POJO類。
在開發(fā)時(shí),首先編寫model層的POJO類,然后按照dao、service、action自底向上的順序編寫相應(yīng)的接口并實(shí)現(xiàn)之,最后將系統(tǒng)信息呈現(xiàn)到JSP頁面上。
3 總結(jié)
本課題是對(duì)Hadoop框架的部分關(guān)鍵技術(shù)的一次較為深入的研究和分析,并在此基礎(chǔ)上設(shè)計(jì)和實(shí)現(xiàn)了具有應(yīng)用價(jià)值的校園通服務(wù)端系統(tǒng)。Hadoop作為一個(gè)成熟的分布式框架,使得大數(shù)據(jù)處理能夠通過多臺(tái)廉價(jià)的計(jì)算機(jī)組成的集群來高效地完成任務(wù)。結(jié)合Struts2和Spring等主流的Java Web框架,原本不適合處理實(shí)時(shí)任務(wù)的Hadoop也能輕松地應(yīng)對(duì)Web應(yīng)用?;贖adoop云技術(shù)的校園通服務(wù)端,將能充分利用校園的有效資源,以較低的成本為高校學(xué)生提供優(yōu)質(zhì)的掌上在線服務(wù)。
隨著手持智能終端的不斷普及,移動(dòng)化辦公的逐漸推廣,本文所研究的Android平臺(tái)下的校園通是可行,并且也是未來的趨勢(shì)。日后將在本研究的基礎(chǔ)上繼續(xù)完善其中的相關(guān)系統(tǒng),充分利用Hadoop技術(shù)的優(yōu)勢(shì),真正打造出一個(gè)具有使用價(jià)值的校園應(yīng)用系統(tǒng)。校園數(shù)字化建設(shè)是未來的趨勢(shì),相信移動(dòng)化技術(shù)和云技術(shù)會(huì)加快其發(fā)展進(jìn)度,為校園師生的學(xué)習(xí)、工作帶來更多的便利,這也是以后研究的目標(biāo)。
【參考文獻(xiàn)】
[1]Apache Software Foundation.What Is Apache Hadoop?[EB/OL].[2013-5-13]. http://hadoop.apache.org/.
[2]陸嘉恒.Hadoop實(shí)戰(zhàn)[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[3]Apache Software Foundation.MapReduce Tutorial[EB/OL].[2013-5-13].http://hadoop.apache.org/docs/r1.1.2/mapred_tutorial.html#Overview.
[責(zé)任編輯:湯靜]