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