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

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

                         需   求                       算法

     首先從需求提及,且談畢業設計的需求。基於Hadoop的分佈式數據存儲系統,對於這個題目,真心感受高大上。由於是學生生涯的最後一次做業,怎麼也得用心作啊,這就是本人的心聲。網盤,用戶註冊登陸後能夠將數據文件保存到雲端的一種系統,能夠在任什麼時候候經過瀏覽器對文件進行管理和下載。說到這裏,就談到到了項目的B/S結構。瀏覽器和服務器端的交互,在如今這種J2EE充斥的時代背景下,B/S應該是很容易實現的一種方式,並且它的流行已經不須要我再多說了。同時這也更加說明了B/S的優勢。數據庫

     關於項目的結構和總體架構在稍後再談,如今繼續聚焦需求,在該系統中,用戶能夠進行用戶的我的信息的管理,修改註冊郵箱,密碼等。同時,用戶能夠將某文件進行分享操做,能夠將文件的連接分享給任何人,包括沒有註冊到系統的用戶,一旦用戶將連接複製到瀏覽器打開,瀏覽器就會自動進行下載。當用戶認爲某文件再也不須要時能夠選擇刪除。apache

     實際上,能夠歸納三大方面:其一爲對文件的管理,其包含對文件的刪除,上傳,下載,分享等;其二爲對用戶基本信息的管理,包含對新用戶註冊,郵箱,密碼的修改,退出系統等;其三就是後臺系統的實現,包含通常的站長管理工具,用戶權限分配,屏蔽非法用戶,查看用戶及用戶狀態等信息。瀏覽器

                      設計與實現                       安全

      上面已經談到項目採用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
  :本文版權歸做者和博客園共有,歡迎轉載,但請在文章顯眼位置標明文章出處。未經本人書面贊成,將其做爲他用,本人保留追究責任的全部權利。
相關文章
相關標籤/搜索