The Road To Hadoop(網盤系統的實現)


      因為畢業設計的原因,得從零開始學習hadoop。雖然接觸Hadoop也有一段時間了,但是沒有一個完整的時間段去學習,在公司實習的同時,只能利用零零碎碎的時間學習,今天完成了第一個版本的基於Hadoop的雲存儲系統,實際上就是平常用的網盤。該版本實現了網盤應有的基本功能,借此總結一下實現過程中的點點滴滴。僅以此紀錄自己成長的足跡,感謝那個曾經為現在的自己奮斗的自己,同時,鼓勵現在的自己為以后的自己而奮斗!本博文為本人學習的總結,請尊重勞動成果。歡迎轉載,請保留博文出處:http://www.cnblogs.com/itred ;本人郵箱: it_red@sina.com

                         需   求                       

     首先從需求說起,且談畢業設計的需求。基於Hadoop的分布式數據存儲系統,對於這個題目,真心感覺高大上。因為是學生生涯的最后一次作業,怎么也得用心做啊,這就是本人的心聲。網盤,用戶注冊登錄后可以將數據文件保存到雲端的一種系統,可以在任何時候通過瀏覽器對文件進行管理和下載。說到這里,就談到到了項目的B/S結構。瀏覽器和服務器端的交互,在現在這種J2EE充斥的時代背景下,B/S應該是很容易實現的一種方式,而且它的流行已經不需要我再多說了。同時這也更加說明了B/S的優點。

     關於項目的結構和整體架構在稍后再談,現在繼續聚焦需求,在該系統中,用戶可以進行用戶的個人信息的管理,修改注冊郵箱,密碼等。同時,用戶可以將某文件進行分享操作,可以將文件的鏈接分享給任何人,包括沒有注冊到系統的用戶,一旦用戶將鏈接復制到瀏覽器打開,瀏覽器就會自動進行下載。當用戶認為某文件不再需要時可以選擇刪除。

     實際上,可以概括三大方面:其一為對文件的管理,其包含對文件的刪除,上傳,下載,分享等;其二為對用戶基本信息的管理,包含對新用戶注冊,郵箱,密碼的修改,退出系統等;其三就是后台系統的實現,包含一般的站長管理工具,用戶權限分配,屏蔽非法用戶,查看用戶及用戶狀態等信息。

                      設計與實現                       

      上面已經談到項目采用B/S結構,雖然對這個雲存儲系統而言,它的技術難點絕對不會是其采用B/S或C/S結構上,既然已經確定了B/S結構,但是需要采用何種框架來實現呢?然而更加棘手的問題也斷然不會是考慮應用何種框架來實現這樣一個分布式雲存儲系統,而是關於這個雲端的環境!這個也必然用Hadoop來搭建,因此我選擇在自己的電腦上的虛擬機中搭建一個偽分布式的環境以供開發項目所需,因為我需要將所有的數據文件全部上傳到這台裝有Hadoop的Linux上面,關於Hadoop偽分布式環境的搭建在我最開始接觸Hadoop的幾篇博文中就已經說很清楚了,不清楚的朋友可以看看我寫的那幾篇關於Hadoop的入門文章。此處就不再多說Hadoop了。

     回到項目的整體上來,首先是根據需求構建出項目的數據關系,抽象出E-R模型,完成數據庫表結構的設計,因為MySQL比較小,用起來也方便,所以采用MySQL做為為系統提供支持的數據庫管理系統。

                     表結構設計如下:四張表(user表,file表,dir表,share表)       

              用戶信息表                       

     

            文件信息表                           

    

            文件夾信息表                         

    

            文件分享關系表                       

    

                                   項目框架結構設計                                             

     說完數據庫的設計,就該進行實際代碼的實現的了,這里我就說說自己的項目。采用的框架是現在比較流行的SSH,同時這個系統中用戶的上傳可以直接利用struts2中提供的上傳功能,所以很輕松,雖然在項目中用到Spring的地方很少,但是不能沒有它。我的很多配置都利用Spring來管理的,而Hibernate則是直接為了響應用戶對系統操作和對用戶對Hadoop中的HDFS的操作,對數據進行持久化的,這樣一來可以很方便的進行功能化,模塊化的開發,應用這3大框架,確實可以方便不少,在這個分布式系統中,因為是分布式所以就得提供WebService,這里利用Xfire來實現web服務的開發。

貼出項目整體結構圖:

        

      因為是畢業設計,畢竟不是正規的企業級應用,我雖然在用戶數據中采用了一定的加密算法,但是對於黑客級別的人物而言也基本上算不了什么了,對於文件分享中,鏈接url的生成也采用了一定的加密算法,但是這種加密是可以反解的。因為我后台必須要利用這樣的參數進行后續操作。因此至少可以算是考慮到數據安全方面的東西了。

     對於一些敏感操作,系統也會以郵件發送的形式發送到用戶的注冊郵箱中。這樣也算是保障賬戶安全的一種吧。而這樣的郵件發送是由開源apache提供實現的。

在項目中,加入log4j進行日志的記錄,以便后續開發的數據收集,我相信現在基本上每一個商業級的系統都有自己的一套數據采集和日志監控系統。一方面是維護自己的系統安全,以方便維護,可以更加快捷的定位Bug,解決Bug;另一方面則是現在對用戶的操作進行分析,就像百度什么之類“為您推薦”這類欄目,也是根據大數據分析而來。雲計算的普及,就必將致使大數據的到來。

                        效果截圖                        

                           啟動Linux中的Hadoop,為應用的鏈接提供存儲支持                                      

#start-all.sh     ------〉啟動Hadoop
#jps              ------>查看啟動狀態

 

     

                                             用戶登錄成功后的主頁顯示                                                           

     

                                                    用戶基本信息管理                                                               

    

                                                     管理分享頁面                                                                 

  

                                            管理員登錄后的管理設置中心                                                     

   

                                                                屏蔽非法用戶                                                     

      由於篇幅有限也就不一一列舉系統中效果圖了,其實在自己的頁面中,基本選擇jQuery 提供的庫,能選擇用頁面無刷新操作的基本都選擇了無刷新操作,畢竟這樣一來用戶體驗很好,而且還顯得更加專業,能想到的優化措施基本都用上了。有時候就有一種感覺,寫程序,就像精心培養一株樹,總希望其完美的無話可說,可這畢竟是程序!

 

                    感謝奮斗中的自己!                       

 

 郵箱:it_red@sina.com 個人博客: http://itred.cnblogs.com
   版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但請在文章顯眼位置標明文章出處。未經本人書面同意,將其作為他用,本人保留追究責任的所有權利。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM