湯海林
摘要:數(shù)據(jù)存儲是互聯(lián)網(wǎng)數(shù)據(jù)的信息化應用的基礎,HDFS具有對文件操作的分布式、大數(shù)據(jù)量和快速的特點。文中對基于HDFS的云盤系統(tǒng)的功能模塊、功能設計與功能實現(xiàn)作了詳細的分析,對各功能模塊的設計給出了具體的設計方法和實現(xiàn)程序。經(jīng)測試,系統(tǒng)能實現(xiàn)對數(shù)據(jù)快速存取的功能。
關鍵詞:HDFS;存儲技術;數(shù)據(jù);文件系統(tǒng)
中圖分類號:TP302.1? ? ? ?文獻標識碼:A? ? ? ? 文章編號: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ù)據(jù)信息化發(fā)展的必然趨勢,互聯(lián)網(wǎng)應用、企業(yè)信息管理都是大量數(shù)據(jù)共享的成果,隨著企業(yè)應用對數(shù)據(jù)的依賴性增加,數(shù)據(jù)的存儲需求越來越重要,基于網(wǎng)絡的分布式數(shù)據(jù)存儲模式應用越來越多,利用HDFS的大數(shù)據(jù)文件的分布式管理功能,設計云盤系統(tǒng)實現(xiàn)用戶對數(shù)據(jù)實時性、共享性的應用。
1 系統(tǒng)基本功能模塊設計
HDFS是一個高度容錯性的系統(tǒng),它是運行在通用硬件上的分布式文件系統(tǒng),適合部署在廉價的機器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,采用“一次寫入、多次讀取”模式[1],可實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù),適合大規(guī)模數(shù)據(jù)集上的應用。
云盤系統(tǒng)通過互聯(lián)網(wǎng)為企業(yè)和個人提供信息的存儲、讀取、下載等服務,具備安全穩(wěn)定、海量數(shù)據(jù)存儲的特點。系統(tǒng)可提供云存儲服務、離線下載、文件智能分類瀏覽等功能,提供用戶對在線數(shù)據(jù)操作的應用需求。
云盤系統(tǒng)數(shù)據(jù)包括用戶數(shù)據(jù)和文件數(shù)據(jù)。用戶數(shù)據(jù)主要包括用戶身份信息、安全信息等,可利用HDFS文件系統(tǒng)存儲,此文件是所有用戶的共享文件。文件數(shù)據(jù)是用戶上傳到HDFS中的文件,該文件是用戶獨享數(shù)據(jù),其他用戶需授權(quán)訪問[2]。云盤系統(tǒng)的基本功能結(jié)構(gòu)如圖1所示。
系統(tǒng)設計中為每個用戶創(chuàng)建專屬目錄,用于用戶存儲個人文件數(shù)據(jù)。
2 用戶管理功能
用戶管理功能包括用戶信息的注冊、存儲、查詢、修改等功能,用戶信息數(shù)據(jù)存儲到文件user.dat中,系統(tǒng)利用FileSystem.append()方法實現(xiàn)對文件user.dat的讀取操作,利用FileSystem.mkdirs()方法實現(xiàn)對用戶目錄的操作[3]。用戶管理操作通過User類封裝,用戶表中的ID字段作為關鍵詞,通過FSDataInputStream.readLine()方法實現(xiàn)對用戶信息的遍歷。User類的用戶注冊功能實現(xiàn)部分代碼如下:
public User(String username, String password){
this.id=””;
this.username=username;
this.password=password;? }
public boolean register() throws IOException{? ?//用戶注冊并創(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);? }
用戶注冊信息成功,登錄時通過執(zhí)行FSDataInputStream.readLine()方法,對user.dat中的用戶信息進行身份驗證。
3 文件管理功能
3.1 文件上傳
文件上傳功能是云盤系統(tǒng)的基本功能,實現(xiàn)用戶對本地數(shù)據(jù)與系統(tǒng)之間的數(shù)據(jù)傳輸。用戶發(fā)起文件上傳請求,與NameNode建立連接,獲取DataNode信息。NameNode收到請求后獲取DataNode信息,并將可存儲文件的節(jié)點信息返回給用戶。用戶收到NameNode返回的信息,與對應的DataNode節(jié)點取得聯(lián)系,并向該節(jié)點寫文件。文件上傳功能通過FileSystem.copyFormLocalFile()方法將本地數(shù)據(jù)上傳到用戶專屬目錄中,UserFile類的文件上傳功能部分實現(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 文件查詢
文件查詢功能是用戶對系統(tǒng)存儲的用戶專屬數(shù)據(jù)的查詢,用戶登錄可在文件目錄中查看專屬文件列表,利用FileSystem.listStatus()方法可獲取用戶專屬數(shù)據(jù)的狀態(tài)[4]。通過系統(tǒng)查詢功能設置查詢文件名,利用seacherFiles()方法實現(xiàn)對文件的查詢,查詢功能實現(xiàn)封裝在UserFile類中,部分功能實現(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);? //查詢匹配
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 文件刪除和下載功能
文件刪除是用戶在系統(tǒng)中對專屬數(shù)據(jù)的刪除功能,用戶可在用戶列表中選擇刪除文件,也可利用查詢功能對指定文件的刪除操作。文件刪除功能利用FileSystem.delete()方法實現(xiàn)。
文件下載是用戶對上傳到系統(tǒng)中的專屬文件下載到本地文件的操作,下載功能利用FileSystem.copyToLocalFile()方法實現(xiàn)。文件刪除和下載的功能均封裝在UserFile類中。
4 結(jié)束語
云盤系統(tǒng)設計實現(xiàn)了對用戶、文件的管理功能,經(jīng)測試各功能正常運行,實現(xiàn)了用戶對基本數(shù)據(jù)的云存儲的應用需求。利用HDFS實現(xiàn)的云盤系統(tǒng)具備操作簡便、存儲容量大、速度快的特點,利用Hadoop的多訪問API接口和HDFS分布式文件處理的功能,可實現(xiàn)快速的互聯(lián)網(wǎng)數(shù)據(jù)存取功能,但系統(tǒng)未對視頻、音頻數(shù)據(jù)的在線播放功能實現(xiàn),在后續(xù)的系統(tǒng)功能擴展上可增加相應的功能。
參考文獻:
[1] 馬炳先,相東明,張正明.Web 服務組合的Petri網(wǎng)自動生成方法[J].小型微型計算機系統(tǒng), 2013,34(2):332-337.
[2] 劉志中,雷冠軍,薛霄,等.QoS感知的云服務優(yōu)化組合研究[J].計算機應用研究2012,29(10):3919-3921.
[3] 陳巖松.機票票價預測系統(tǒng)設計與實現(xiàn)[D].大連:大連理工大學,2013.
[4] 翟巖龍.開放網(wǎng)絡環(huán)境中動態(tài)自適應服務組合技術研究[D].北京:北京理工大學,2009.
[通聯(lián)編輯:王力]