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