王慶福
摘要:云計(jì)算的系統(tǒng)架構(gòu)能夠適應(yīng)大數(shù)據(jù)量的快速處理和數(shù)據(jù)分析,分布式的系統(tǒng)架構(gòu)特別適用于大型復(fù)雜的智能化校園系統(tǒng)組成結(jié)構(gòu)。本章從云計(jì)算的架構(gòu)研究出發(fā),分析了當(dāng)前云計(jì)算技術(shù)進(jìn)行數(shù)據(jù)分析的常用技術(shù)工具。
關(guān)鍵詞:云計(jì)算;智能化校園;數(shù)據(jù)處理
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2019)06-0216-03
傳統(tǒng)的智能化校園系統(tǒng)因系統(tǒng)中各個(gè)部分缺乏數(shù)據(jù)交互導(dǎo)致數(shù)據(jù)孤島問題的產(chǎn)生,數(shù)據(jù)孤島問題產(chǎn)生的原因一方面是欠缺統(tǒng)一的賬號體系,另一方面是數(shù)據(jù)處理方面存在一定的難度,數(shù)據(jù)的來源方可能是系統(tǒng)中任何一個(gè)系統(tǒng)部分,數(shù)據(jù)的格式也千差萬別,這給數(shù)據(jù)規(guī)則化和數(shù)據(jù)收集都帶來了很大不易。
云計(jì)算技術(shù)主要用于應(yīng)對大批量的數(shù)據(jù)處理,云計(jì)算能夠?qū)⒍鄠€(gè)獨(dú)立環(huán)境下的數(shù)據(jù)進(jìn)行收集和匯總,快速的數(shù)據(jù)交換和數(shù)據(jù)處理方式非常適用于當(dāng)前的系統(tǒng)架構(gòu),智能化校園系統(tǒng)的系統(tǒng)環(huán)境邏輯上分成多個(gè)部分,每個(gè)部分都可能定義自己獨(dú)特的數(shù)據(jù)格式,利用云計(jì)算的分布式架構(gòu)多端采集數(shù)據(jù)并進(jìn)行格式化處理能夠很好地解決校園系統(tǒng)的數(shù)據(jù)孤島問題。
1 云計(jì)算技術(shù)簡介
云計(jì)算是相對于傳統(tǒng)的服務(wù)體系結(jié)構(gòu)而言,互聯(lián)網(wǎng)的不斷發(fā)展催生出大量的數(shù)據(jù)聚集在網(wǎng)絡(luò)平臺上,傳統(tǒng)的服務(wù)方式已經(jīng)無法對數(shù)據(jù)進(jìn)行完整的存儲和使用,隨之而誕生的分布式系統(tǒng)曾經(jīng)一度在一定程度上緩解了這種情況,然而現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)每天的數(shù)據(jù)都呈現(xiàn)TB級增長,分布式系統(tǒng)對于如此快速的數(shù)據(jù)增長規(guī)模已經(jīng)無法勝任,云計(jì)算正是在這樣的環(huán)境下應(yīng)運(yùn)而生。云計(jì)算服務(wù)通過虛擬大量的機(jī)器資源進(jìn)行數(shù)據(jù)存儲和計(jì)算,數(shù)據(jù)使用方不用關(guān)注數(shù)據(jù)的具體存儲位置,云服務(wù)只需要保證數(shù)據(jù)在用戶需要訪問時(shí)能夠快速獲取和訪問即可。云服務(wù)的存儲能力和計(jì)算能力非常驚人,云計(jì)算可以讓用戶體驗(yàn)每秒10萬億次的運(yùn)算能力,用戶可以通過移動(dòng)終端,筆記本,手機(jī)等多種方式進(jìn)行無轉(zhuǎn)換快速接入數(shù)據(jù)中心,用戶可以根據(jù)自己的需要定制需要的計(jì)算模式。根據(jù)美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)定義:云計(jì)算是一種按使用量付費(fèi)的模式[1-3],這種服務(wù)方式以用戶和用戶定制的資源池為單位,用戶的資源池耗費(fèi)的資源越密集則需要更多的費(fèi)用支出,同時(shí)云服務(wù)本身的資源池可以根據(jù)用戶進(jìn)行動(dòng)態(tài)調(diào)配,動(dòng)態(tài)調(diào)配的資源包括網(wǎng)絡(luò)、帶寬、服務(wù)器、軟件、應(yīng)用服務(wù),這些資源能夠快速被系統(tǒng)感知被適度分配給用戶,系統(tǒng)管理員本身只需要付出極少的精力進(jìn)行管理工作。
云計(jì)算作為一個(gè)技術(shù)概念,在它之中包含了多種技術(shù),云計(jì)算是大數(shù)據(jù)時(shí)代下的產(chǎn)物,根據(jù)傳統(tǒng)的數(shù)據(jù)處理和分析方式,單機(jī)已經(jīng)難以適應(yīng)如此龐大的數(shù)據(jù)量,因此在數(shù)據(jù)處理時(shí)需要將任務(wù)根據(jù)一定的規(guī)則進(jìn)行分發(fā),分發(fā)到不同機(jī)器上的數(shù)據(jù)進(jìn)行并行處理和分析。因此云計(jì)算是分布式計(jì)算的前身,只是云計(jì)算在分布式計(jì)算上有了許多新的技術(shù)更新??傮w來說,云計(jì)算(Cloud Computing)是分布式計(jì)算(Distributed Computing)、并行計(jì)算(Parallel Computing)、效用計(jì)算(Utility Computing)、 網(wǎng)絡(luò)存儲(Network Storage Technologies)、虛擬化(Virtualization)、負(fù)載均衡(Load Balance)、熱備冗余(High Available)等傳統(tǒng)計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物[4]。
2云計(jì)算技術(shù)架構(gòu)研究
云計(jì)算架構(gòu)的設(shè)計(jì)原則應(yīng)當(dāng)是服務(wù)于復(fù)雜的網(wǎng)絡(luò)體系,云計(jì)算服務(wù)面向大流量的數(shù)據(jù)資源和用戶計(jì)算要求,因此在提升云計(jì)算系統(tǒng)能力時(shí)也主要著力于提升整個(gè)系統(tǒng)的存儲能力和運(yùn)算能力,致力于提升整個(gè)系統(tǒng)的利用率。具體而言,應(yīng)當(dāng)著眼于服務(wù)器利用率、服務(wù)器的部署密度、數(shù)據(jù)存儲成本和基礎(chǔ)設(shè)施建設(shè)等方面提高云計(jì)算系統(tǒng)中心的存儲和運(yùn)算能力。云計(jì)算系統(tǒng)要求整個(gè)系統(tǒng)具備良好的擴(kuò)展性、伸縮性、自動(dòng)化、多租戶、資源的利用率和對虛擬化的支持。
云計(jì)算的架構(gòu)大體可以分為服務(wù)和管理兩部分,管理方面主要包括機(jī)器的動(dòng)態(tài)上線和下線,機(jī)器資源的動(dòng)態(tài)調(diào)整,整個(gè)系統(tǒng)的服務(wù)監(jiān)控,管理服務(wù)的功能是為了保證整個(gè)系統(tǒng)能夠穩(wěn)定、正常的運(yùn)轉(zhuǎn),并且能夠有效被管理;服務(wù)方面主要是基于本身系統(tǒng)資源對外提供服務(wù),提供服務(wù)包括數(shù)據(jù)存儲資源、數(shù)據(jù)計(jì)算資源、應(yīng)用軟件服務(wù)等。
云計(jì)算的數(shù)據(jù)存儲是一個(gè)非常重要的研究點(diǎn),在云服務(wù)中,如何實(shí)現(xiàn)數(shù)據(jù)存儲的快速訪問和快速應(yīng)答是一個(gè)非常實(shí)際的問題,在實(shí)際環(huán)境中,云服務(wù)在數(shù)據(jù)存儲時(shí)需要將數(shù)據(jù)離散的存儲在多個(gè)磁盤甚至是多個(gè)物理機(jī)上,為了達(dá)到分布式存儲的目的,目前主要采用兩種方式實(shí)現(xiàn),其一是采用Google公司提供分布式文件系統(tǒng)(GFS),另一種是基于塊設(shè)備存儲區(qū)域網(wǎng)絡(luò)SAN系統(tǒng)。GFS系統(tǒng)是Google公司設(shè)計(jì)主要應(yīng)用于分布式環(huán)境下的數(shù)據(jù)存儲系統(tǒng),整個(gè)的GFS存儲系統(tǒng)采用Master/Slave模式進(jìn)行,Master/Slave模式是分布式環(huán)境和云環(huán)境下的常用設(shè)計(jì),整個(gè)系統(tǒng)包括一個(gè)或者M(jìn)aster節(jié)點(diǎn),多個(gè)Slave節(jié)點(diǎn),Master節(jié)點(diǎn)只負(fù)責(zé)整個(gè)存儲系統(tǒng)的調(diào)度任務(wù),即分配數(shù)據(jù)分發(fā)到具體的磁盤或者物理機(jī),Master節(jié)點(diǎn)本身不進(jìn)行數(shù)據(jù)存儲,因此在Master節(jié)點(diǎn)中通常存儲控制文件,控制文件中存儲每個(gè)文件的數(shù)據(jù)存儲大小,數(shù)據(jù)存儲的偏移量等,同時(shí)為了保證數(shù)據(jù)的高可用性,當(dāng)某個(gè)Master節(jié)點(diǎn)出現(xiàn)宕機(jī)時(shí),其他Master節(jié)點(diǎn)拷貝宕機(jī)Master節(jié)點(diǎn)的控制文件從而整個(gè)存儲系統(tǒng)的正常運(yùn)轉(zhuǎn)。云計(jì)算的架構(gòu)圖如圖1所示。
在圖1中可以看出,整個(gè)的云計(jì)算架構(gòu)可以分為計(jì)算資源、存儲資源和網(wǎng)絡(luò)資源,每個(gè)資源都獨(dú)立負(fù)責(zé)云計(jì)算中獨(dú)立的功能并通過協(xié)議進(jìn)行數(shù)據(jù)和消息交換,計(jì)算節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的邏輯處理和物理計(jì)算,網(wǎng)絡(luò)資源負(fù)責(zé)數(shù)據(jù)的動(dòng)態(tài)調(diào)度,存儲資源則負(fù)責(zé)具體的底層數(shù)據(jù)存儲。
3云計(jì)算數(shù)據(jù)分析工具研究
云計(jì)算目前已經(jīng)是相對成熟的技術(shù),針對云計(jì)算各個(gè)部分都誕生了非常多成熟的技術(shù)框架和技術(shù)工具,利用這些工具能夠快速高效地進(jìn)行數(shù)據(jù)分析和數(shù)據(jù)處理,具有極大的便利。
(1)Hadoop
Hadoop是開源的云計(jì)算框架,主要為了大型的數(shù)據(jù)分析和數(shù)據(jù)計(jì)算任務(wù)而編寫設(shè)計(jì),它并不適用于小數(shù)據(jù)量的在線數(shù)據(jù)處理任務(wù)。Hadoop框架是HDFS和MapReduce的結(jié)合,所謂Hadoop是集成了云計(jì)算存儲框架和云計(jì)算計(jì)算框架的一套綜合服務(wù)框架,理論而言,Hadoop處理的數(shù)據(jù)能夠勝任任何形式的數(shù)據(jù),相對而言,對于結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)Hadoop能夠具備更好的處理性能,其處理的數(shù)據(jù)單元為KEY/VALUE數(shù)據(jù)對,相對于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,Hadoop更加具備數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)計(jì)算能力,若需要適配關(guān)聯(lián)型數(shù)據(jù)庫,則可以采用HIVE進(jìn)行同步代替。
·HDFS
HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng)),它是在Google提出的GFS文件系統(tǒng)的基礎(chǔ)上進(jìn)一步發(fā)展而來,在吸收了GFS許多優(yōu)良的特性并結(jié)合云計(jì)算自身的一些特點(diǎn)之后,Apache推出了自己的云計(jì)算文件存儲系統(tǒng),它是一個(gè)高度容錯(cuò)的文件存儲系統(tǒng),部署在廉價(jià)的機(jī)器上同樣可以穩(wěn)定運(yùn)行并且效率良好。HDFS能夠提供非常高的系統(tǒng)吞吐率。其在設(shè)計(jì)時(shí)保留了許多非常優(yōu)良的特性:適用于大容量的數(shù)據(jù)存儲,理論而言,數(shù)據(jù)量越大越適用;文件的多磁盤多機(jī)器存儲,HDFS能夠?qū)⑽募鶆虻卮蛏⒅蠓植嫉蕉嗯_機(jī)器上,當(dāng)發(fā)生數(shù)據(jù)讀取任務(wù)時(shí),又同時(shí)可以從多臺機(jī)器上快速的讀取,而且它還保持了多機(jī)讀取的速度;云計(jì)算文件系統(tǒng)的特點(diǎn)時(shí)數(shù)據(jù)一次寫入之后,多個(gè)任務(wù)都可以同時(shí)讀取這部分?jǐn)?shù)據(jù),然而僅僅限于讀取數(shù)據(jù),HDFS并不支持?jǐn)?shù)據(jù)的重復(fù)修改,它只保證數(shù)據(jù)的末尾追加;HDFS對存儲服務(wù)器的要求很低,通常很廉價(jià)的機(jī)器即可以搭建一套簡易的HDFS系統(tǒng),并且能夠穩(wěn)定地提供服務(wù);作為支撐云計(jì)算服務(wù)的底層數(shù)據(jù)存儲系統(tǒng),HDFS能夠?qū)崿F(xiàn)非常好的數(shù)據(jù)容錯(cuò)性,當(dāng)某臺機(jī)器硬盤發(fā)生故障時(shí),其他機(jī)器能夠很容易的形成數(shù)據(jù)備份。
· MapReduce
Google作為分布式系統(tǒng)的先驅(qū),它提出了許多非常優(yōu)良的分布式設(shè)計(jì)理念,其中MapReduce即是他在分布式計(jì)算時(shí)提出了一個(gè)非常重要的概念,整個(gè)的數(shù)據(jù)計(jì)算過程可以概括為:數(shù)據(jù)分發(fā)、并行計(jì)算、數(shù)據(jù)合并、分布式存儲。MapReduce即是很好地遵循了這個(gè)框架,它從海量地?cái)?shù)據(jù)中按照此類規(guī)則提取數(shù)據(jù)進(jìn)行運(yùn)算。
MapReduce并行的讀取分布在多個(gè)磁盤多臺機(jī)器上的文件,所有文件并行的在各自的機(jī)器上完全計(jì)算,本地計(jì)算完成之后再按照KEY/VALUE格式進(jìn)行歸并,歸并來自多臺機(jī)器上的數(shù)據(jù)分片,歸并之后的數(shù)據(jù)即是最終需要的數(shù)據(jù)資源。
(2)Spark
Apache Spark是加州大學(xué)伯克利分校自行研發(fā)的云計(jì)算處理框架,其主要區(qū)別于Hadoop格式的數(shù)據(jù)處理模式,Hadoop處理的數(shù)據(jù)必須是嚴(yán)格的KEY/VALUE結(jié)構(gòu),一次Hadoop任務(wù)的周期即是一次KEY/VALUE結(jié)構(gòu)的合并,Spark突破了這一限制。
Spark相對于Hadoop的處理方式,Spark擁有更加快速的數(shù)據(jù)處理效率,經(jīng)過實(shí)際數(shù)據(jù)檢驗(yàn),Spark比Hadoop的處理效率甚至高出百倍。Hadoop主要基于磁盤的數(shù)據(jù)操作,一次的Hadoop任務(wù)即需要完成磁盤讀取數(shù)據(jù),數(shù)據(jù)回寫磁盤,磁盤再次讀取數(shù)據(jù),數(shù)據(jù)再次回寫磁盤至少四個(gè)步驟,當(dāng)一個(gè)任務(wù)無法用一個(gè)Hadoop周期完成時(shí),則數(shù)據(jù)讀寫磁盤的時(shí)間會成倍增加,這無疑為數(shù)據(jù)處理效率打了很大折扣。Spark主要為了解決Hadoop在處理數(shù)據(jù)嚴(yán)格的KEY/VALUE限制并且多次回寫磁盤,Spark將任務(wù)定義為數(shù)據(jù)的循環(huán)利用機(jī)制,理論上只需要在任務(wù)啟動(dòng)時(shí)一次性讀取需要的數(shù)據(jù)即可,Spark將數(shù)據(jù)存儲在機(jī)器內(nèi)存中,因此極大地提高了數(shù)據(jù)處理的效率。另外一方面,由于Spark將數(shù)據(jù)存儲在內(nèi)存中,因此一次任務(wù)可以多次利用數(shù)據(jù),而不需要如Hadoop一般一次任務(wù)處理完成之后回寫磁盤操作。
Spark本身提供了多種的類型的數(shù)據(jù)接口,由于將數(shù)據(jù)存儲在內(nèi)存中,因此Spark能夠?qū)崿F(xiàn)快速的數(shù)據(jù)響應(yīng),Hadoop主要用于處理大數(shù)據(jù)量規(guī)模的離線任務(wù),Spark則除了處理離線任務(wù)以外,還可以處理在線數(shù)據(jù)處理任務(wù),Spark-streaming能夠支持多種消息隊(duì)列的接入,非常適用于線上的在線任務(wù)處理。其支持多種語言接口,java,scala,python都是非常主流的編程語言,Spark提供多他們的支持無疑是正確的。
(3)Storm
相對于Hadoop和Spark而言,Storm是一個(gè)高容錯(cuò)、高可用性的分布式高速計(jì)算框架,相同的是,Storm和Hadoop、Spark一樣,都是分布式環(huán)境下大數(shù)據(jù)處理框架,Storm在保證高可用的同時(shí)還需要保證數(shù)據(jù)的及時(shí)有效處理,理論上說Storm數(shù)據(jù)處理的時(shí)間延遲基本可以忽略。
Storm采用Zookeeper進(jìn)行資源的集中配置和管理,對于機(jī)器的動(dòng)態(tài)變更可以自動(dòng)同步到Zookeeper配置中,極大了降低了數(shù)據(jù)和計(jì)算的耦合性。Storm的拓?fù)浣Y(jié)構(gòu)包括調(diào)度節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn),Storm從源數(shù)據(jù)中讀取數(shù)據(jù),Storm將讀取的數(shù)據(jù)放入topology中,topology負(fù)責(zé)數(shù)據(jù)的具體分發(fā)和處理。Storm中兩個(gè)重要的概念是Spouts和Bolt,Spouts節(jié)點(diǎn)服務(wù)數(shù)據(jù)的發(fā)射,即將接收到數(shù)據(jù)分發(fā)了具體的計(jì)算節(jié)點(diǎn),即Bolt節(jié)點(diǎn),Bolt是最終的進(jìn)行物理計(jì)算的最終節(jié)點(diǎn)。Storm采用topology的目的是為了能夠清晰了明白整個(gè)Storm集群的拓?fù)浣Y(jié)構(gòu),topology節(jié)點(diǎn)能夠快速的構(gòu)建出了當(dāng)前Storm節(jié)點(diǎn)之間依賴關(guān)系,當(dāng)前數(shù)據(jù)分發(fā)的數(shù)據(jù)流向、數(shù)據(jù)處理的速度以及各個(gè)節(jié)點(diǎn)的數(shù)據(jù)擁堵情況都可以在拓?fù)浣Y(jié)構(gòu)中進(jìn)行反映。
Storm本身并不適用于Hadoop方式的大批量離散處理任務(wù)也不適用于Spark的數(shù)據(jù)處理框架,Storm作為一個(gè)消息隊(duì)列的處理工具,它主要為了數(shù)據(jù)的在線快速處理而生,其本身并不會涉及非常復(fù)雜的數(shù)據(jù)交叉任務(wù)和數(shù)據(jù)存儲任務(wù),它只需要簡單地將接收到數(shù)據(jù)分發(fā)到Storm集群中計(jì)算節(jié)點(diǎn),同時(shí)將計(jì)算節(jié)點(diǎn)的數(shù)據(jù)寫入磁盤或者進(jìn)行下一步的計(jì)算任務(wù)。
(4)Kafka
Apache Kafka是分布式發(fā)布-訂閱消息系統(tǒng)。它最早由LinkedIn研發(fā)而成,最后最早的一批消息處理工具,因其快速的數(shù)據(jù)處理效率而廣受好評。其主要用于云計(jì)算環(huán)境中日志收集、數(shù)據(jù)復(fù)制和消息分區(qū)等服務(wù)。
Kafka與傳統(tǒng)的消息隊(duì)列模式存在一定的區(qū)別,它自開始時(shí)即被設(shè)計(jì)為一款在分布式環(huán)境下的日志處理工具,能夠支持多個(gè)消息訂閱者,能夠?qū)?shù)據(jù)持久化到磁盤,方便進(jìn)行批量時(shí)消費(fèi)。Kafka的存儲設(shè)計(jì)相對簡單,每個(gè)話題都會為之分配一塊存儲空間,存儲空間對應(yīng)了云計(jì)算環(huán)境中一塊存儲位置,當(dāng)有新的消息產(chǎn)生時(shí),即會將數(shù)據(jù)追加到存儲空間的末尾,這一點(diǎn)和HDFS有一定的相似性。相對于傳統(tǒng)的消息隊(duì)列,Kafka并沒有為消息分配消息id,數(shù)據(jù)的尋址通過在數(shù)據(jù)偏移量完成。
消費(fèi)者對Kafka隊(duì)列的消費(fèi)即可以同步進(jìn)行也可以異步進(jìn)行,消費(fèi)者只需要提供需要消費(fèi)的Kafka隊(duì)列的話題id即可,如此輕量級的數(shù)據(jù)消費(fèi)接入方式極大地提高了Kafka隊(duì)列使用率,當(dāng)前消費(fèi)者陷入沉默或者其他休眠狀態(tài)時(shí),Kafka隊(duì)列會保留當(dāng)前消費(fèi)者的狀態(tài),當(dāng)消費(fèi)者重新開始消費(fèi)時(shí)可以非常輕松地繼續(xù)上一次的任務(wù),如此的設(shè)計(jì)極大地簡化了因需要維持?jǐn)?shù)據(jù)標(biāo)志導(dǎo)致的資源開銷。
參考文獻(xiàn):
[1]余珊珊,蘇錦鈿,李鵬飛. 基于改進(jìn)的TextRank的自動(dòng)摘要提取方法[J]. 計(jì)算機(jī)科學(xué),2016(6):240-247.
[2]沈光美.高職智慧化校園建設(shè)的特點(diǎn)與趨勢分析[J]. 蘭州教育學(xué)院學(xué)報(bào),2016(5):105-107.
[3]王超. 智慧校園系統(tǒng)的考勤管理子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué),2016.
[4]董奇峰. 面向智慧校園的基礎(chǔ)通知服務(wù)的研究與實(shí)踐[D].燕山大學(xué),2016.
【通聯(lián)編輯:王力】