閆偉 陳滿林 白云鶴 班海濤
摘 要:目前,大多數(shù)學(xué)生均使用U盤進(jìn)行數(shù)據(jù)存儲,但這種方式存在數(shù)據(jù)容易中毒、U盤容易丟失、無法在實(shí)驗(yàn)室和寢室間同步等弊端,為此,需要開發(fā)一個(gè)以校園局域網(wǎng)為依托,可供學(xué)生使用的校園網(wǎng)盤。利用該網(wǎng)盤,學(xué)生可不再使用U盤進(jìn)行數(shù)據(jù)存儲,在校期間所涉及的所有數(shù)字化文件均可存儲其中,同時(shí),還可實(shí)現(xiàn)教學(xué)區(qū)域與寢室的數(shù)據(jù)同步,既保證了數(shù)據(jù)存儲的安全性,又極大地提高了數(shù)據(jù)的應(yīng)用效率。此外,校園網(wǎng)盤采用Hadoop架構(gòu)完成整個(gè)底層系統(tǒng)的搭建,屬于“云計(jì)算”應(yīng)用的技術(shù)范疇,能夠充分利用學(xué)校目前已有的PC機(jī)資源,降低項(xiàng)目投入。
關(guān)鍵詞:Hadoopp;HDFS;網(wǎng)盤;云計(jì)算
隨著計(jì)算機(jī)在高校教學(xué)中的普及,各種文檔、數(shù)據(jù)、程序等數(shù)字化文件成為了高校學(xué)生非常重要的學(xué)習(xí)資料和學(xué)習(xí)成果,大到畢業(yè)設(shè)計(jì)文檔、畢業(yè)設(shè)計(jì)項(xiàng)目,小到課程PPT、作業(yè),涵蓋了學(xué)生學(xué)習(xí)生活的各個(gè)方面,如何安全、高效的存儲這些文件就變得非常重要。因此,以“云計(jì)算”架構(gòu)Hadoop為基礎(chǔ),依托校園網(wǎng)環(huán)境,設(shè)計(jì)并實(shí)現(xiàn)校園網(wǎng)盤,就成為了一種可行之道。
1 方案論證
1.1 技術(shù)可行性
由Hadoop HDFS為網(wǎng)盤提供高可用,分布式的存儲架構(gòu)支撐。HDFS(Hadoop Distributed File System)是Hadoop項(xiàng)目的核心子項(xiàng)目,是分布式計(jì)算中數(shù)據(jù)存儲管理的基礎(chǔ),是基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的,可以運(yùn)行于廉價(jià)的商用服務(wù)器上。其具有的高容錯(cuò)、高可靠性、高可擴(kuò)展性、高獲得性、高吞吐率等特征為海量數(shù)據(jù)提供了不怕故障的存儲,為超大數(shù)據(jù)集(Large Data Set)的應(yīng)用處理帶來了很多便利。
1.2 操作可行性
基于HDFS的分布式存儲相關(guān)研究,主要包括HDFS集群中小文件處理,副本存放策略和機(jī)架感知以及NameNode備份恢復(fù)機(jī)制和拓展機(jī)制。HDFS集群中小文件處理包括三種方案,分別是Hadoop Archive,Sequence File和CombineFileInputormat。副本存放策略和機(jī)架感知能夠讓NameNode獲取DataNode的網(wǎng)絡(luò)拓?fù)鋱D,然后根據(jù)DataNode之間的關(guān)系來確定副本存放的位置,保證數(shù)據(jù)可靠性的同時(shí)兼顧了數(shù)據(jù)傳輸速率。NameNode備份恢復(fù)機(jī)制通過定期對NameNode中元數(shù)據(jù)信息備份合并形成新的檢查點(diǎn)checkpoint保證NameNode元數(shù)據(jù)的安全。如果NameNode出現(xiàn)宕機(jī)故障,可以節(jié)省NameNode重啟時(shí)間,甚至恢復(fù)丟失的數(shù)據(jù)。HDFS的可拓展性體現(xiàn)在動(dòng)態(tài)新增DataNode,能夠滿足大規(guī)模數(shù)據(jù)增長的需求。
2 系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)主要由四部分構(gòu)成,分別是用戶層,系統(tǒng)管理層,數(shù)據(jù)存儲層和基礎(chǔ)設(shè)施層,(1)用戶層:用戶通過WebApp服務(wù)器發(fā)送Ajax請求,服務(wù)器響應(yīng)相應(yīng)的json數(shù)據(jù)到瀏覽器,前端通過Angular JS框架調(diào)用響應(yīng)功能REST接口返回?cái)?shù)據(jù),最后通過Angular JS雙向數(shù)據(jù)綁定自動(dòng)完成對頁面數(shù)據(jù)進(jìn)行渲染。(2)系統(tǒng)管理層:負(fù)責(zé)應(yīng)用程序與底層數(shù)據(jù)操作連接,采用JFinal MVC框架對大量文件,用戶操作封裝為REST接口,提供前端Web頁面的接口的數(shù)據(jù)返回,把用戶需要的數(shù)據(jù)結(jié)果以json格式傳回客戶端。主要提供用戶管理,目錄管理,文件管理等服務(wù)。(3)存儲數(shù)據(jù)層:Hadoop集群工作在這一層,由HDFS,Jetty構(gòu)成,HDFS提供分布式存儲支撐,一個(gè)NameNode存儲文件的元數(shù)據(jù),多個(gè)DataNode為文件提供存儲實(shí)現(xiàn), Jetty服務(wù)器提供外部REST接口調(diào)用功能。同時(shí)這一層也大量封裝了對HDFS的操作。(4)基礎(chǔ)設(shè)施層:即搭載Linux系統(tǒng)的硬件基礎(chǔ)設(shè)施,主要包括磁盤,服務(wù)器等。
2.2 系統(tǒng)功能實(shí)現(xiàn)
本系統(tǒng)旨在一個(gè)在校大學(xué)校的一個(gè)存儲服務(wù)。系統(tǒng)設(shè)計(jì)包括用戶文件管理模塊和管理員模塊。用戶文件管理模塊:為在校師生提供用戶登陸,文件上傳,下載,刪除,重命名,目錄查看,創(chuàng)建等功能。管理員模塊:主要提供用戶管理(添加,刪除),文件管理。
2.3 關(guān)鍵技術(shù)實(shí)現(xiàn)
系統(tǒng)在實(shí)現(xiàn)過程中,主要實(shí)現(xiàn)了對文件的上傳,下載。瀏覽器通過調(diào)取REST接口,Controller通過調(diào)用相應(yīng)的Service來返回相應(yīng)的數(shù)據(jù),Service調(diào)用DAO,而DAO的核心代碼都是通過HDFS的相應(yīng)API來完成的。
上傳功能的核心代碼:
public boolean upLoad(InputStream in, String hdfsPath){
Path p=new Path(hdfsPath);
try{
if(fs.exists(p)){
System.out.println(“文件已經(jīng)存在”);
return false;
}
FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);
OutputStream out = fs.create(new Path(hdfsPath));
IOUtils.copyBytes(in, out, 4096,true);
in.close();
}catch(Exception e){
e.printStackTrace();
}
return true;
}
下載功能的核心代碼:
public boolean downLoad(String hdfsPath,String localPath ){
Path path = new Path(hdfsPath);
try {
if(!fs.exists(path)){
System.out.println(“文件不存在”);
return false;
}
FileSystem hdfs = FileSystem.get(conf);
Path dstPath = new Path(localPath);
hdfs.copyToLocalFile(true,path, dstPath);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
3 結(jié)束語
HDFS作為一種分布式文件系統(tǒng),有著高容錯(cuò)性的特點(diǎn),設(shè)計(jì)用來部署在低廉的硬件上,而且它提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了POSIX的要求可以實(shí)現(xiàn)流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。為了保證開發(fā)速度與系統(tǒng)的可維護(hù)性,選用JFinal來當(dāng)做Web開發(fā)的MVC框架,同時(shí)這個(gè)框架的學(xué)習(xí)成本也比較低,輕量級,易拓展。
參考文獻(xiàn)
[1]文艾,王磊. 高可用性的HDFS:Hadoop分布式文件系統(tǒng)深度實(shí)踐[M].北京:清華大學(xué)出版社,2012,5.
[2]蔡斌,陳湘萍,董西成. Hadoop技術(shù)內(nèi)幕[M].北京:機(jī)械工業(yè)出版社,2010:10-200.
[3]TomWhite.Hadoop:The Definitive Guide,3rd Edition[M].清華大學(xué)出版社,2015.
作者簡介:閆偉(1992-),男,大二學(xué)生,專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)。
白云鶴(1992-),男,大二學(xué)生,專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)。
班海濤(1992-),男,大二學(xué)生,專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)。
*通訊作者:陳滿林(1982-),男,講師,主要研究方向:計(jì)算機(jī)應(yīng)用與智能系統(tǒng)。