湯海林
摘要:數(shù)據(jù)存儲(chǔ)是互聯(lián)網(wǎng)數(shù)據(jù)的信息化應(yīng)用的基礎(chǔ),HDFS具有對(duì)文件操作的分布式、大數(shù)據(jù)量和快速的特點(diǎn)。文中對(duì)基于HDFS的云盤(pán)系統(tǒng)的功能模塊、功能設(shè)計(jì)與功能實(shí)現(xiàn)作了詳細(xì)的分析,對(duì)各功能模塊的設(shè)計(jì)給出了具體的設(shè)計(jì)方法和實(shí)現(xiàn)程序。經(jīng)測(cè)試,系統(tǒng)能實(shí)現(xiàn)對(duì)數(shù)據(jù)快速存取的功能。
關(guān)鍵詞:HDFS;存儲(chǔ)技術(shù);數(shù)據(jù);文件系統(tǒng)
中圖分類(lèi)號(hào):TP302.1? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? 文章編號(hào):1009-3044(2018)36-0072-02
Abstract: Data storage is the basis of information application of Internet data. HDFS has the characteristics of distributed, large data volume and fast for file operation. In this paper, it analyses the function modules, function design and function realization of cloud disk system Based on HDFS in detail. It also gives the design methods and implementation procedures of each function module. After testing, the system can achieve the function of fast access of data.
Key words:HDFS; Storage Technology; Data; File System
信息化技術(shù)應(yīng)用是數(shù)據(jù)信息化發(fā)展的必然趨勢(shì),互聯(lián)網(wǎng)應(yīng)用、企業(yè)信息管理都是大量數(shù)據(jù)共享的成果,隨著企業(yè)應(yīng)用對(duì)數(shù)據(jù)的依賴(lài)性增加,數(shù)據(jù)的存儲(chǔ)需求越來(lái)越重要,基于網(wǎng)絡(luò)的分布式數(shù)據(jù)存儲(chǔ)模式應(yīng)用越來(lái)越多,利用HDFS的大數(shù)據(jù)文件的分布式管理功能,設(shè)計(jì)云盤(pán)系統(tǒng)實(shí)現(xiàn)用戶(hù)對(duì)數(shù)據(jù)實(shí)時(shí)性、共享性的應(yīng)用。
1 系統(tǒng)基本功能模塊設(shè)計(jì)
HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),它是運(yùn)行在通用硬件上的分布式文件系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn),采用“一次寫(xiě)入、多次讀取”模式[1],可實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù),適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
云盤(pán)系統(tǒng)通過(guò)互聯(lián)網(wǎng)為企業(yè)和個(gè)人提供信息的存儲(chǔ)、讀取、下載等服務(wù),具備安全穩(wěn)定、海量數(shù)據(jù)存儲(chǔ)的特點(diǎn)。系統(tǒng)可提供云存儲(chǔ)服務(wù)、離線下載、文件智能分類(lèi)瀏覽等功能,提供用戶(hù)對(duì)在線數(shù)據(jù)操作的應(yīng)用需求。
云盤(pán)系統(tǒng)數(shù)據(jù)包括用戶(hù)數(shù)據(jù)和文件數(shù)據(jù)。用戶(hù)數(shù)據(jù)主要包括用戶(hù)身份信息、安全信息等,可利用HDFS文件系統(tǒng)存儲(chǔ),此文件是所有用戶(hù)的共享文件。文件數(shù)據(jù)是用戶(hù)上傳到HDFS中的文件,該文件是用戶(hù)獨(dú)享數(shù)據(jù),其他用戶(hù)需授權(quán)訪問(wèn)[2]。云盤(pán)系統(tǒng)的基本功能結(jié)構(gòu)如圖1所示。
系統(tǒng)設(shè)計(jì)中為每個(gè)用戶(hù)創(chuàng)建專(zhuān)屬目錄,用于用戶(hù)存儲(chǔ)個(gè)人文件數(shù)據(jù)。
2 用戶(hù)管理功能
用戶(hù)管理功能包括用戶(hù)信息的注冊(cè)、存儲(chǔ)、查詢(xún)、修改等功能,用戶(hù)信息數(shù)據(jù)存儲(chǔ)到文件user.dat中,系統(tǒng)利用FileSystem.append()方法實(shí)現(xiàn)對(duì)文件user.dat的讀取操作,利用FileSystem.mkdirs()方法實(shí)現(xiàn)對(duì)用戶(hù)目錄的操作[3]。用戶(hù)管理操作通過(guò)User類(lèi)封裝,用戶(hù)表中的ID字段作為關(guān)鍵詞,通過(guò)FSDataInputStream.readLine()方法實(shí)現(xiàn)對(duì)用戶(hù)信息的遍歷。User類(lèi)的用戶(hù)注冊(cè)功能實(shí)現(xiàn)部分代碼如下:
public User(String username, String password){
this.id=””;
this.username=username;
this.password=password;? }
public boolean register() throws IOException{? ?//用戶(hù)注冊(cè)并創(chuàng)新目錄
int id=Integer.parseInt(lastUserid)+1;
this.id=String.valueOf(id);
FileSystem fs=FileSystem.get(conf);
Path src=new Path(“/clouddisk/user.dat”);
FSDataOutputStream dos=fs.append(src);? }
用戶(hù)注冊(cè)信息成功,登錄時(shí)通過(guò)執(zhí)行FSDataInputStream.readLine()方法,對(duì)user.dat中的用戶(hù)信息進(jìn)行身份驗(yàn)證。
3 文件管理功能
3.1 文件上傳
文件上傳功能是云盤(pán)系統(tǒng)的基本功能,實(shí)現(xiàn)用戶(hù)對(duì)本地?cái)?shù)據(jù)與系統(tǒng)之間的數(shù)據(jù)傳輸。用戶(hù)發(fā)起文件上傳請(qǐng)求,與NameNode建立連接,獲取DataNode信息。NameNode收到請(qǐng)求后獲取DataNode信息,并將可存儲(chǔ)文件的節(jié)點(diǎn)信息返回給用戶(hù)。用戶(hù)收到NameNode返回的信息,與對(duì)應(yīng)的DataNode節(jié)點(diǎn)取得聯(lián)系,并向該節(jié)點(diǎn)寫(xiě)文件。文件上傳功能通過(guò)FileSystem.copyFormLocalFile()方法將本地?cái)?shù)據(jù)上傳到用戶(hù)專(zhuān)屬目錄中,UserFile類(lèi)的文件上傳功能部分實(shí)現(xiàn)代碼如下:
public class UserFile{
FileSystem fs=FileSystem.get(conf);
Path src=new Path(path);
Path dst=new Path(“/clouddisk/”+user.id);
Try{
fs.copyFormLocalFile(src,dst);
isSuccessed=true;
}catch(IOException ex)
fs.close;
return isSuccessed;? }
3.2 文件查詢(xún)
文件查詢(xún)功能是用戶(hù)對(duì)系統(tǒng)存儲(chǔ)的用戶(hù)專(zhuān)屬數(shù)據(jù)的查詢(xún),用戶(hù)登錄可在文件目錄中查看專(zhuān)屬文件列表,利用FileSystem.listStatus()方法可獲取用戶(hù)專(zhuān)屬數(shù)據(jù)的狀態(tài)[4]。通過(guò)系統(tǒng)查詢(xún)功能設(shè)置查詢(xún)文件名,利用seacherFiles()方法實(shí)現(xiàn)對(duì)文件的查詢(xún),查詢(xún)功能實(shí)現(xiàn)封裝在UserFile類(lèi)中,部分功能實(shí)現(xiàn)的代碼如下:
public String[] seachFilse(String userid, String filter) throws IOExcepiton{
String files[]=null;
Configuration conf=new Configuration();
FileSystem fs=FileSystem.get(conf);
Path dst=new Path(“/clouddisk/”+userid+”/”+filter);
FileStatus status[]=fs.fileStatus(dst);? //查詢(xún)匹配
Files=new String[status.length];
for(int i=0;i<status.length;i++){
files[i]=status[i].getPath().getName();? }
fs.close();
return files;? }
3.3 文件刪除和下載功能
文件刪除是用戶(hù)在系統(tǒng)中對(duì)專(zhuān)屬數(shù)據(jù)的刪除功能,用戶(hù)可在用戶(hù)列表中選擇刪除文件,也可利用查詢(xún)功能對(duì)指定文件的刪除操作。文件刪除功能利用FileSystem.delete()方法實(shí)現(xiàn)。
文件下載是用戶(hù)對(duì)上傳到系統(tǒng)中的專(zhuān)屬文件下載到本地文件的操作,下載功能利用FileSystem.copyToLocalFile()方法實(shí)現(xiàn)。文件刪除和下載的功能均封裝在UserFile類(lèi)中。
4 結(jié)束語(yǔ)
云盤(pán)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)了對(duì)用戶(hù)、文件的管理功能,經(jīng)測(cè)試各功能正常運(yùn)行,實(shí)現(xiàn)了用戶(hù)對(duì)基本數(shù)據(jù)的云存儲(chǔ)的應(yīng)用需求。利用HDFS實(shí)現(xiàn)的云盤(pán)系統(tǒng)具備操作簡(jiǎn)便、存儲(chǔ)容量大、速度快的特點(diǎn),利用Hadoop的多訪問(wèn)API接口和HDFS分布式文件處理的功能,可實(shí)現(xiàn)快速的互聯(lián)網(wǎng)數(shù)據(jù)存取功能,但系統(tǒng)未對(duì)視頻、音頻數(shù)據(jù)的在線播放功能實(shí)現(xiàn),在后續(xù)的系統(tǒng)功能擴(kuò)展上可增加相應(yīng)的功能。
參考文獻(xiàn):
[1] 馬炳先,相東明,張正明.Web 服務(wù)組合的Petri網(wǎng)自動(dòng)生成方法[J].小型微型計(jì)算機(jī)系統(tǒng), 2013,34(2):332-337.
[2] 劉志中,雷冠軍,薛霄,等.QoS感知的云服務(wù)優(yōu)化組合研究[J].計(jì)算機(jī)應(yīng)用研究2012,29(10):3919-3921.
[3] 陳巖松.機(jī)票票價(jià)預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2013.
[4] 翟巖龍.開(kāi)放網(wǎng)絡(luò)環(huán)境中動(dòng)態(tài)自適應(yīng)服務(wù)組合技術(shù)研究[D].北京:北京理工大學(xué),2009.
[通聯(lián)編輯:王力]