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
  :本文版权归做者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面赞成,将其做为他用,本人保留追究责任的全部权利。
相关文章
相关标签/搜索