摘 要: 為了解決部隊戰(zhàn)斗時產(chǎn)生的海量數(shù)據(jù)的存儲問題,做了一種基于云計算的作戰(zhàn)數(shù)據(jù)存儲系統(tǒng)的實驗。通過實際的應用,該方案可以很好地克服現(xiàn)行的存儲方式存在的不足,有效提高部隊戰(zhàn)斗效率。
關鍵詞: 云計算; 海量數(shù)據(jù); HDFS; 存儲
中圖分類號: TN971?34; TP393 文獻標識碼: A 文章編號: 1004?373X(2013)19?0012?03
0 引 言
自從2007年10月份云計算誕生至今,這一技術在短短的幾年時間里對整個IT行業(yè)產(chǎn)生了巨大的影響。學術界、產(chǎn)業(yè)界和政府以及軍隊都對云計算產(chǎn)生了濃厚的興趣;全球范圍內(nèi)討論云計算技術的學術活動如火如荼;谷歌、亞馬遜、IBM、微軟等IT巨頭大力推動云計算技術的宣傳和產(chǎn)品的普及;各國政府和組織紛紛斥巨資打造大規(guī)模的數(shù)據(jù)中心與計算中心。云計算技術目前已經(jīng)得到了業(yè)界的高度認同,逐漸走向成熟[1]。隨著云計算的推廣和流行,如何快速安全地保存和傳輸生于云端的大量數(shù)據(jù),成了各大企業(yè)和組織研究的重點。云計算獨有的無限擴展、隨時獲取的資源管理方式若運用于部隊作戰(zhàn)領域,必然會對部隊作戰(zhàn)平臺建設帶來深刻的影響與變革[2?3]。
本文建立了一種基于云計算的作戰(zhàn)數(shù)據(jù)存儲系統(tǒng)模型,并發(fā)揮云計算可用性、高性能、可擴展的特點,設計并實現(xiàn)一套基于云計算的高效、安全及面向部隊作戰(zhàn)實際的數(shù)據(jù)存儲解決方案。配合部隊三級網(wǎng)的調(diào)用,為部隊在反恐、處突等作戰(zhàn)任務中產(chǎn)生的偵察圖像、作戰(zhàn)會議視頻、軍事地圖等海量數(shù)據(jù)提供高效的存儲和傳輸,降低作戰(zhàn)成本,提高軍事效能。
1 云計算的定義及特征
云計算被認為是“繼個人電腦、互聯(lián)網(wǎng)之后電子信息領域又一重大變革”,云計算作為網(wǎng)絡技術中的一個流行用語,已經(jīng)被很多人所熟悉。云計算其本質(zhì)是一種計算方式,通過這種方式,共享的軟硬件資源和信息通過網(wǎng)絡以按需、易擴展的方式獲得所需的服務。云計算可以說是網(wǎng)格計算、分布式計算、并行計算、效用計算、網(wǎng)絡存儲、虛擬化、負載均衡等傳統(tǒng)計算機技術和網(wǎng)絡技術發(fā)展融合的產(chǎn)物[4]。云計算通過網(wǎng)絡將龐大的計算處理程序自動分拆成無數(shù)個較小的子程序,再交由多部服務器所組成的系統(tǒng)經(jīng)搜尋、計算、分析之后將處理結果返回給用戶。通過這項技術,網(wǎng)絡服務提供者可以在數(shù)秒之內(nèi),處理數(shù)以千萬計甚至億計的信息,達到和“超級計算機”同樣強大性能的網(wǎng)絡服務。云計算的程序和數(shù)據(jù)不再運行和存放在個人臺式計算機上,可以托管到“云”中,利用個人電腦或便攜設備,經(jīng)由網(wǎng)絡連接到“云”中,能夠讓你在任何地方訪問你所有的應用程序和信息服務,不再受到桌面的限制。
云計算的特征如下:
(1)在技術體制方面,云計算不是全新的技術,而是現(xiàn)有技術的綜合利用。“云”可以認為是以虛擬化、面向服務的計算和網(wǎng)格計算等成熟技術為基礎,以大規(guī)模資源共享為目標,采用共享資源池的模式進行構建的大型服務器集群。
(2)在經(jīng)濟性方面,云計算強調(diào)系統(tǒng)構建的低成本。基于云計算技術,通常采用數(shù)量較多的高性能PC機或小型服務器等較為便宜的硬件構建分布式服務器集群,提供可用性、可伸縮性都很強的計算服務。
(3)在應用程序特征方面,云計算強調(diào)基于網(wǎng)絡的應用。云計算的典型應用模式是客戶端根據(jù)自身需要,通過瀏覽器等標準程序訪問發(fā)布在網(wǎng)絡上、以服務形式提供的計算能力、軟件、存儲服務、中間件平臺等[5]。
2 HDFS架構
部隊作戰(zhàn)時所依托的三級網(wǎng)每時每刻都在產(chǎn)生音頻、視頻、文本、圖像等數(shù)據(jù)。經(jīng)過長時間積累,這些數(shù)據(jù)總量非常龐大,存儲這些數(shù)據(jù)需要投入巨大的軟硬件資源。如果能夠利用已有空閑磁盤組成集群來存儲這些數(shù)據(jù),則可以不再需要大規(guī)模采集服務器存儲數(shù)據(jù)或購買容量龐大的磁盤,減少了硬件成本[6]。解決這一問題的方案就是使用分布式存儲。
Hadoop Distributed File System,簡稱HDFS,是一個分布式文件系統(tǒng)。HDFS有著高容錯性的特點,并且設計用來部署在低廉的硬件上。而且它提供高吞吐量來訪問應用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應用程序。HDFS放寬了POSIX的要求,這樣可以實現(xiàn)以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。
HDFS在整個Hadoop體系結構中處于最基礎的地位。從內(nèi)部實現(xiàn)來看,其目錄結構和文件內(nèi)容都沒有存儲在本地磁盤中,而是通過網(wǎng)絡傳輸?shù)竭h端系統(tǒng)上。總體來說,HDFS分為3個部分,即客戶端、主控節(jié)點(Namenode)和數(shù)據(jù)節(jié)點(Datanode)。Namenode是分布式文件系統(tǒng)的管理者,主要負責文件系統(tǒng)的命名空間、集群的配置信息和數(shù)據(jù)塊的復制信息等,并將文件系統(tǒng)的元數(shù)據(jù)存儲在內(nèi)存中;Datanode是文件實際存儲的位置,它將數(shù)據(jù)塊(Block)信息存儲在本地文件系統(tǒng)中,并且通過周期性的心跳報文將所有數(shù)據(jù)塊信息發(fā)送給Namenode[7?8]。HDFS體系結構如圖1所示。
HDFS系統(tǒng)具有如下特點:
(1)非常適合海量數(shù)據(jù)的存儲和處理。
(2)可擴展性高,只需簡單添加服務器數(shù)量,即可實現(xiàn)存儲容量和計算能力的線性增長。
(3)數(shù)據(jù)冗余度高,默認情況下每份數(shù)據(jù)在3臺服務器上保留備份。
(4)適合“流式”訪問,即一次寫入,多次讀取,數(shù)據(jù)寫入后極少修改。
可以看出,HDFS分布式文件系統(tǒng)非常適合作為作戰(zhàn)數(shù)據(jù)存儲系統(tǒng)的底層存儲平臺。
3 系統(tǒng)實現(xiàn)
3.1 系統(tǒng)功能模塊
綜合分析部隊作戰(zhàn)實際,將作戰(zhàn)數(shù)據(jù)存儲系統(tǒng)分為3個功能模塊,如圖2所示,即作戰(zhàn)部隊、首長機關和指揮中心。作戰(zhàn)部隊能夠使用系統(tǒng)提供的作戰(zhàn)數(shù)據(jù)檢索功能,并進行數(shù)據(jù)的瀏覽,但不能對系統(tǒng)中現(xiàn)有的數(shù)據(jù)進行編輯[9?10]。首長機關除具有檢索功能外,還能夠添加、刪除、替換作戰(zhàn)數(shù)據(jù)。指揮中心主要負責管理和維護服務器,實時更新作戰(zhàn)數(shù)據(jù),及時發(fā)現(xiàn)并解決系統(tǒng)運行時出現(xiàn)的錯誤。
3.2 存儲模塊核心
存儲系統(tǒng)分為HDFS操作通用類HdfsFileUtil、HDFS文件存取類HdfsIO、HDFS狀態(tài)及輔助管理類HdfsManage共3個類。
HdfsFileUtil類主要負責通過HDFS的Java接口中的相關靜態(tài)方法得到文件系統(tǒng)的FileSystem實例,是實現(xiàn)存儲、管理操作的基礎。在HDFS的Java訪問接口中,有兩個靜態(tài)方法可以得到FileSystem接口的實例,分別為:public static FileSystem get(Configuration conf)throws IOException;public static FileSystem get(URI uri,Configuration conf)throws IOException。
Configuration類位于org.apache.hadoop.conf包中,是Hadoop文件系統(tǒng)的配置類,用來根據(jù)配置文件中指定的配置項來創(chuàng)建一個配置實例,Configuration封裝了client或者server的配置,這些配置從classpath中讀取,比如被classpath指向的conf/core?site.xml文件。通過以上兩個靜態(tài)工廠方法,從抽象的Hadoop文件系統(tǒng)中抽取出一個具體的FileSystem實例。其中第一個方法返回默認的文件系統(tǒng)(在conf/core?site.xml文件中定義),若是文件中沒有指定,則返回本地的文件系統(tǒng);第二個方法返回由uri指定的文件系統(tǒng),如果uri無效,則返回默認的文件系統(tǒng)。
HdfsFileUtil類的構造實現(xiàn)方法為:
Public HdfsFileUtil(){
Conf=new Configuration();
FileSystem hdfs=FileSystem.get(config);
}
這樣就得到一個FileSystem接口的實例,所有的存取操作都通過這個實例來完成。
HdfsIO類主要實現(xiàn)文件的讀寫與存取等功能,包括將本地文件復制到HDFS系統(tǒng)的copyToHdfs()方法;在HDFS系統(tǒng)中創(chuàng)建文件的createFile方法;在文件系統(tǒng)中讀取文件的readFromHdfs()方法及刪除文件的deleteFromHdfs()等方法。例如deleteFromHdfs(String dst)方法:
Public Boolean deleteFromHdfs(String dst)throws
FileNotfoundException,IOException{
Boolean isdelete=this.fs.deleteOnExit(new Path(dst));
This.fs.close();
Return isdelete;
}
deleteFromHdfs(String dst)方法將指定路徑上的文件從HDFS中刪除。方法調(diào)用FileSystem實例中的deleteOnExit()方法,這個方法首先會將某個路徑Path添加到deleteOnExit(這是FileSystem類中定義的一個變量)中,然后在FileSystem實例被銷毀或JVM退出時刪除該Path。
也可以調(diào)用public Boolean delete(Path p,Boolean recursive)方法來從HDFS上刪除文件,如果p是一個文件或是空目錄時,則recursive值將會被忽略;當p對應目錄不空時,如果recursive為true,則采用目錄及其內(nèi)部內(nèi)容均被刪除的遞歸刪除方式,否則拋出IOException異常。
需要注意的是,用戶在刪除某個文件時,這個文件并沒有立刻從HDFS中刪除。相反,HDFS將這個文件重命名,并轉移到/trash目錄。當文件還在/trash目錄時,該文件可以被迅速地恢復。文件在/trash中保存的時間是可配置的,當超過這個時間,Namenode就會將該文件從namespace中刪除。文件的刪除,也將釋放關聯(lián)該文件的數(shù)據(jù)塊。注意,在文件被用戶刪除和HDFS空閑空間的增加之間會有一個等待時間延遲。
HdfsManage類主要實現(xiàn)文件存取的一些輔助功能,包括獲取文件位置、文件狀態(tài)、文件目錄、各Datanode主機名及存儲系統(tǒng)日志記錄等一系列操作。例如getFileLocation(String filename)方法:
Public BlockLocation[ ] getFileLocation(String filename)throws IOException{
Path path=new Path(filename);
FileStatus fStatus=this.fs.getFileStatus(path);
BlockLocation[ ] bl=this.fs.getFileBlockLocations(fStatus,0,
fStatus.getlen());
return bl;
}
getFileLocation()方法返回指定文件在HDFS中物理存儲位置等信息,其中包含主機名列表、偏移位置、文件大小等。方法中涉及的FileStatus類封裝了文件和目錄的信息,包括它們的長度、塊大小、副本因子、修改時間、操作權限等信息,F(xiàn)ileSystem類的getFileStatus()方法提供了獲取某一文件或者目錄的FileStatus信息的方法。FileSystem類中getFileBlockLocation()方法原型為public BlockLocation[ ] getFileBlockLocations(FileStatus file,long start,long len)throws IOEXception{}。
3.3 系統(tǒng)測試
在HDFS中建立三個條目位置,對作戰(zhàn)數(shù)據(jù)存儲系統(tǒng)進行測試,圖像和視頻存儲在對應條目下,如圖3所示。
4 結 語
云計算作為一種新型的計算模式,從誕生之日起便引起社會廣泛關注。它已經(jīng)跨越了學術和科技界,融入到了許多社會行業(yè)。云計算采用分布式存儲的方式來存儲數(shù)據(jù),其高可用、高可靠和經(jīng)濟性的特點同樣適用于軍事領域。本文設計的基于云計算的作戰(zhàn)數(shù)據(jù)存儲系統(tǒng),符合部隊建設實際,可為高技術條件下的部隊戰(zhàn)斗力生成提供有力保證。
參考文獻
[1] DEAN J, GHEMAWAT S. MapReduce: simplified data processing on large clusters [J]. Communications of the ACM, 2008, 51(1): 107?113.
[2] 卜少培.仿真資源云存儲技術的研究與實現(xiàn)[D].北京:北京理工大學,2011.
[3] 張喜.海量數(shù)據(jù)存儲模式的研究[D].廣州:廣東工業(yè)大學,2012.
[4] 鮑亮,陳榮.深入淺出云計算[M].北京:清華大學出版社,2012.
[5] 黎連業(yè),王安,李龍.云計算與實用技術[M].北京:清華大學出版社,2013.
[6] 洑涵妤.基于云計算的安全數(shù)據(jù)存儲系統(tǒng)的設計與實現(xiàn)[J].煤炭技術,2012,29(12):169?171.
[7] 吳紹忠,李靖.基于云計算架構的公安情報信息平臺建設研究[J].中國人民公安大學學報,2012(3):30?41.
[8] 張路.基于云計算平臺的海量圖片存儲系統(tǒng)設計與實現(xiàn)[D].北京:北京郵電大學,2012.
[9] 劉飛.基于云計算的分布式存儲系統(tǒng)的研究和應用[D].西安:西安工業(yè)大學,2012.
[10] 蘇孝青,盛志華.云計算環(huán)境下的數(shù)據(jù)安全存儲技術[J].信息安全與技術,2012(8):23?24.