• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Hadoop 的數(shù)據(jù)云盤的設(shè)計(jì)與實(shí)現(xiàn)

      2019-06-27 00:38:58解騰剛馬毓杰
      現(xiàn)代計(jì)算機(jī) 2019年13期
      關(guān)鍵詞:云盤用戶名界面

      解騰剛,馬毓杰

      (西京學(xué)院信息工程學(xué)院,西安710123)

      0 引言

      隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的飛速發(fā)展以及大數(shù)據(jù)技術(shù)的廣泛應(yīng)用,目前已有許多網(wǎng)盤類似百度網(wǎng)盤、華為網(wǎng)盤等均采用大數(shù)據(jù)技術(shù)實(shí)現(xiàn)了用戶日常的數(shù)據(jù)上傳、存儲、下載等功能。但是在網(wǎng)盤內(nèi)提供在線數(shù)據(jù)分析功能的網(wǎng)盤少之又少,使得用戶想要從大量的數(shù)據(jù)中獲取到有用的信息以及從數(shù)據(jù)中發(fā)現(xiàn)規(guī)律變得較為困難,數(shù)據(jù)的潛在價(jià)值難以被挖掘出來。

      目前國內(nèi)外比較常見的分布式文件系統(tǒng)有Google的GFS、Apache 的HDFS、SUN 的Lustre、MongoDB 的GridFS、IBM 的GPFS、淘 寶 的TFS 和 國 人 開 發(fā) 的FastDFS 等,各個(gè)分布式文件系統(tǒng)適用于不同的領(lǐng)域,其中HDFS 是Google GFS 的開源實(shí)現(xiàn),通過網(wǎng)絡(luò)實(shí)現(xiàn)文件在多臺機(jī)器上的分布式存儲,HDFS 提供了在廉價(jià)服務(wù)器集群中進(jìn)行大規(guī)模分布式文件存儲的能力,具有很好的容錯(cuò)性和擴(kuò)展性,可以以較低的成本利用現(xiàn)有機(jī)器實(shí)現(xiàn)大流量和大數(shù)據(jù)量的讀寫,較好地滿足了大規(guī)模數(shù)據(jù)存儲的需求[1]。

      本文提出了基于Hadoop 的數(shù)據(jù)云盤設(shè)計(jì)與實(shí)現(xiàn)方法,使用者可以將其數(shù)據(jù)上傳存儲至該云盤中,并且可以隨時(shí)從云盤中下載數(shù)據(jù),保證了數(shù)據(jù)存儲的安全性,又極大提高了數(shù)據(jù)的應(yīng)用效率[2]。同時(shí)云盤中的數(shù)據(jù)分析功能可以幫助用戶分析數(shù)據(jù)的規(guī)律,讓數(shù)據(jù)的潛在價(jià)值被挖掘出來,為使用者帶來極大的價(jià)值和便利。

      1 系統(tǒng)設(shè)計(jì)

      1.1 功能模塊設(shè)計(jì)

      本云盤系統(tǒng)按功能可分為兩大模塊——用戶模塊和文件管理模塊。其中,用戶模塊包含兩個(gè)功能實(shí)現(xiàn):用戶注冊和用戶登錄;文件管理模塊包含五個(gè)功能實(shí)現(xiàn):查看文件、上傳文件、下載文件、刪除文件和數(shù)據(jù)分析。本系統(tǒng)的功能模塊圖如圖1 所示。

      圖1 系統(tǒng)功能模塊圖

      1.2 運(yùn)行流程設(shè)計(jì)

      本云盤系統(tǒng)由最初的登錄界面開始,用戶需要判斷是否擁有賬戶,如果沒有即跳轉(zhuǎn)到注冊界面進(jìn)行注冊,如果有則進(jìn)行登錄操作。在注冊界面中用戶需輸入用戶名和密碼,在檢查用戶名是否重復(fù)、輸入兩次密碼是否相同后判斷是否注冊成功,成功即進(jìn)入登錄界面,否則重復(fù)注冊操作。在登錄界面中,用戶需輸入用戶名和密碼,判斷是否登錄成功后進(jìn)行下一步操作,成功則進(jìn)入主界面,否則重新登錄。在主界面中,用戶可進(jìn)行文件管理操作(查看文件、上傳文件、下載文件、刪除文件、數(shù)據(jù)分析),在操作結(jié)束后退出云盤即為結(jié)束使用。本系統(tǒng)的系統(tǒng)流程圖如圖2 所示。

      圖2 系統(tǒng)運(yùn)行流程圖

      2 系統(tǒng)實(shí)現(xiàn)

      本系統(tǒng)采用全分布式Hadoop 集群作為運(yùn)行平臺,使用HDFS 分布式文件系統(tǒng)作為底層存儲,系統(tǒng)分為前臺和后臺兩部分,前臺采用JSP 編寫界面,后臺使用MySQL、HDFS Java API、MapReduce、AJAX 等實(shí)現(xiàn)云盤用戶注冊功能、用戶登錄功能,用戶在云盤主界面中對文件實(shí)現(xiàn)查看、上傳、下載、刪除以及數(shù)據(jù)分析功能。

      2.1 注冊功能

      在本云盤注冊界面中主要完成用戶注冊操作。用戶在進(jìn)入注冊界面中可以完成如下功能:①要求輸入需要注冊的用戶名。②要求輸入兩次密碼,且輸入的兩次密碼的長度和內(nèi)容相同,否則需要重新注冊。③注冊成功后跳轉(zhuǎn)至登錄界面。④用戶注冊成功會同時(shí)在HDFS 文件系統(tǒng)下創(chuàng)建名為該用戶的目錄。

      2.2 登錄功能

      在用戶擁有賬號之后,進(jìn)入登錄界面進(jìn)行登錄云盤操作。登錄界面可以實(shí)現(xiàn)如下功能:①可以判斷用戶是否擁有賬號,如果沒有可以跳轉(zhuǎn)至注冊界面。②輸入用戶名和密碼。③判斷用戶名和密碼是否正確,如果不正確則重新登錄。④登錄成功后跳轉(zhuǎn)至云盤主界面。

      2.3 文件管理功能

      (1)查看文件

      用戶登錄成功后,系統(tǒng)的主界面會顯示該用戶的文件列表,實(shí)現(xiàn)過程是,系統(tǒng)提取到當(dāng)前登錄用戶的用戶名,以此用戶名創(chuàng)建Path 對象,傳入此Path 對象并調(diào)用FileSystem 的getFileStatus()方法,得到一個(gè)FileStatus 對象,F(xiàn)ileStatus 對象封裝了文件系統(tǒng)中文件和目錄的元數(shù)據(jù),包括文件的長度、塊大小、備份數(shù)、修改時(shí)間、所有者以及權(quán)限等信息[3]。最后,格式化File Status 對象傳到前端頁面展示。關(guān)鍵代碼如下:public FileStatus[]ls(String folder)throws IOException{

      Path path=new Path(folder);//根據(jù)當(dāng)前登錄用戶名創(chuàng)建Path 對象

      FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);//獲取FileSystem 實(shí)例

      FileStatus[]list=fs.listStatus(path);

      if(list!=null)

      for(FileStatus f:list){

      System.out.printf("%s,folder:%s,大小:%dK ",f.getPath().getName(),(f.isDir()?"目錄":"文件"),f.getLen()/1024);

      }

      fs.close();

      return list;

      }

      (2)上傳文件

      用戶點(diǎn)擊“選擇文件”按鈕后,在彈窗中選擇需要上傳的文件,點(diǎn)擊“上傳文件”按鈕即完成上傳操作。實(shí)現(xiàn)過程是,調(diào)用FileSystem 的copyFromLocalFile 方法,該方法需要傳入兩個(gè)參數(shù),分別是本地文件的路徑和所需上傳到HDFS 文件系統(tǒng)的目標(biāo)路徑。關(guān)鍵代碼如下:

      public void copyFile(String local,String remote)throws IOException{

      FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);//獲取FileSystem 實(shí)例fs.copyFromLocalFile(new Path(local),new Path(remote));//調(diào)用copyFromLocalFile 方法實(shí)現(xiàn)上傳

      System.out.println("copy from:"+local+"to"+remote);

      fs.close();

      }

      (3)下載文件

      用戶在主界面選擇需要下載的文件,單擊文件后的“下載”字樣,向服務(wù)器提出下載請求,服務(wù)器找到該文件即將文件下載到本地默認(rèn)目錄中。實(shí)現(xiàn)過程是,調(diào)用FileSystem 的copyToLocalFile 方法,該方法需要傳入兩個(gè)參數(shù),分別是HDFS 文件系統(tǒng)中的該文件的路徑和所需下載到本地的目標(biāo)路徑。關(guān)鍵代碼如下:

      public void download(String remote,String local)throws IOException{

      Path path=new Path(remote);

      FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);//獲取FileSystem 實(shí)例

      fs.copyToLocalFile(path,new Path(local));//調(diào) 用copy-FromLocalFile 方法實(shí)現(xiàn)文件下載

      System.out.println("download:from"+remote+"to"+local);

      fs.close();

      }

      (4)刪除文件

      用戶在主界面選擇需要?jiǎng)h除的文件,單擊文件后的“刪除”字樣,系統(tǒng)會將此文件從HDFS 文件系統(tǒng)中該用戶的目錄下刪除。實(shí)現(xiàn)過程是,調(diào)用FileSystem的deleteOnExit 方法,該方法需要傳入的參數(shù)為所需刪除文件的路徑。關(guān)鍵代碼如下:

      public void rmr(String folder)throws IOException{

      Path path=new Path(folder);

      FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);//獲 取FileSystem 實(shí) 例fs.deleteOnExit(path);//調(diào) 用deleteOnExit 方法實(shí)現(xiàn)文件刪除

      fs.close();

      }

      (5)數(shù)據(jù)分析

      用戶在主界面選擇待分析文件,單擊“分析”字樣,系統(tǒng)會提交該文件到MapReduce 程序,分析完成后會彈窗提示用戶查看分析結(jié)果,用戶點(diǎn)擊確認(rèn)后,將分析結(jié)果用Echarts 進(jìn)行可視化呈現(xiàn)。數(shù)據(jù)分析功能是通過MapReduce 技術(shù)實(shí)現(xiàn)的,根據(jù)系統(tǒng)需求編寫Map 階段和Reduce 階段的相關(guān)代碼即可,使用JSON 數(shù)據(jù)格式和AJAX 等技術(shù)實(shí)現(xiàn)分析結(jié)果的可視化。以流量統(tǒng)計(jì)為例,根據(jù)用戶流量數(shù)據(jù)文件,統(tǒng)計(jì)出每個(gè)用戶的上行總流量、下行總流量以及總流量。在流量統(tǒng)計(jì)案例中,Map 階段由map task 讀文件,通過TextInputFormat一次讀一行,返回(key,value),其中key 代表用戶手機(jī)號碼,value 代表對應(yīng)手機(jī)號碼的流量信息;Shuffle 階段是從Map 結(jié)束到Reduce 開始之間的過程,Shuffle 階段完成了數(shù)據(jù)的分區(qū)、分組、排序的工作[4];Reduce 階段將與一個(gè)key 關(guān)聯(lián)的一組中間數(shù)值進(jìn)行歸約,即對同一手機(jī)號的流量數(shù)據(jù)進(jìn)行歸約。關(guān)鍵代碼如下:

      protected void map(LongWritable key,Text line,Context context)throws IOException,InterruptedException{

      String lineStr=line.toString();//返回字符串

      String[]values=lineStr.split(" ");//以空格進(jìn)行切割并存入數(shù)組

      String upStr=values[values.length-3];

      String downStr=values[values.length-2];

      int up=Integer.parseInt(upStr);

      int down=Integer.parseInt(downStr);

      FlowBean flow=new FlowBean(up,down,0);//創(chuàng)建Flow-Bean 對象

      context.write(new Text(values[1]),flow);}

      protected void reduce(Text key,Iterable<FlowBean>flows,Context context)

      throws IOException,InterruptedException{

      int totalUp=0;//上行流量

      int totalDown=0;//下行流量

      for(FlowBean flow:flows){

      totalUp+=flow.getUpFlow();

      totalDown+=flow.getDownFlow();

      }

      int totalUpAndDown=totalUp+totalDown;//總流量

      FlowBean flow=new FlowBean(totalUp,totalDown,totalUpAndDown);

      context.write(key,flow);

      }

      3 系統(tǒng)運(yùn)行效果

      該系統(tǒng)注冊界面的運(yùn)行效果如圖3 所示。

      圖3 系統(tǒng)注冊界面運(yùn)行效果圖

      該系統(tǒng)登錄界面的運(yùn)行效果如圖4 所示。

      圖4 系統(tǒng)登錄界面運(yùn)行效果圖

      該系統(tǒng)主界面的運(yùn)行效果如圖5 所示。顯示當(dāng)前登錄用戶網(wǎng)盤內(nèi)的文件信息,包括文件名、文件類型、文件大小和相應(yīng)的操作,單擊文件名后的“刪除”、“下載”字樣,即可將對應(yīng)文件進(jìn)行刪除和下載。

      圖5 系統(tǒng)主界面運(yùn)行效果圖

      點(diǎn)擊“選擇文件”按鈕,系統(tǒng)會彈出選擇文件的窗口,用戶選擇需要上傳的文件,點(diǎn)擊“上傳文件”按鈕,即可將文件上傳至云盤。上傳文件效果如圖6 所示。

      圖6 上傳文件效果圖

      單擊文件名后的“分析”字樣,系統(tǒng)會提交該文件到MapReduce 程序,分析完成后會彈窗提示用戶查看分析結(jié)果,用戶點(diǎn)擊確認(rèn)后,分析結(jié)果會進(jìn)行可視化呈現(xiàn),以流量統(tǒng)計(jì)為例,可視化運(yùn)行效果如圖7 所示。

      圖7 分析結(jié)果可視化運(yùn)行效果圖

      4 結(jié)語

      本文提出了基于Hadoop 的數(shù)據(jù)云盤的設(shè)計(jì)與實(shí)現(xiàn)詳細(xì)過程,為使用者提供了數(shù)據(jù)存儲以及數(shù)據(jù)分析的功能,在一定程度上為使用者帶來了極大的價(jià)值和便利,同時(shí)又將數(shù)據(jù)的潛在價(jià)值挖掘出來,具有一定的實(shí)際意義。隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,云存儲必然會被廣泛應(yīng)用,云盤系統(tǒng)相比于傳統(tǒng)的存儲方式優(yōu)勢也會更加明顯,也將會是未來主流的存儲方式。

      猜你喜歡
      云盤用戶名界面
      云盤山
      云盤不再單打獨(dú)斗,阿里云盤生態(tài)體驗(yàn)
      《護(hù)士進(jìn)修雜志》投稿程序
      國企黨委前置研究的“四個(gè)界面”
      基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
      機(jī)智的快遞員
      故事會(2017年17期)2017-09-04 17:36:42
      人機(jī)交互界面發(fā)展趨勢研究
      云端難題巧解決
      阿里發(fā)布SSD云盤 性能大幅提升
      手機(jī)界面中圖形符號的發(fā)展趨向
      新聞傳播(2015年11期)2015-07-18 11:15:04
      文山县| 扬州市| 永顺县| 广元市| 金湖县| 许昌市| 彰化县| 日土县| 巴中市| 紫云| 五莲县| 兴义市| 中卫市| 阳高县| 麻江县| 皮山县| 南召县| 江都市| 彭水| 西和县| 米泉市| 安阳市| 枝江市| 洪泽县| 榆中县| 西充县| 湘潭县| 砀山县| 霍林郭勒市| 寿阳县| 华宁县| 江北区| 莲花县| 赞皇县| 罗平县| 射洪县| 齐齐哈尔市| 尚义县| 封丘县| 托里县| 娱乐|