设为首页 收藏本站
查看: 1613|回复: 0

[经验分享] The Road To Hadoop(网盘系统的实现)

[复制链接]

尚未签到

发表于 2015-7-11 07:39:33 | 显示全部楼层 |阅读模式
        因为毕业设计的原因,得从零开始学习hadoop。虽然接触Hadoop也有一段时间了,但是没有一个完整的时间段去学习,在公司实习的同时,只能利用零零碎碎的时间学习,今天完成了第一个版本的基于Hadoop的云存储系统,实际上就是平常用的网盘。该版本实现了网盘应有的基本功能,借此总结一下实现过程中的点点滴滴。仅以此纪录自己成长的足迹,感谢那个曾经为现在的自己奋斗的自己,同时,鼓励现在的自己为以后的自己而奋斗!本博文为本人学习的总结,请尊重劳动成果。欢迎转载,请保留博文出处:http://www.iyunv.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表)      
                用户信息表                       
DSC0000.png
              文件信息表                           
DSC0001.png
              文件夹信息表                        
DSC0002.png
              文件分享关系表                       
DSC0003.png
                                     项目框架结构设计                                             
  说完数据库的设计,就该进行实际代码的实现的了,这里我就说说自己的项目。采用的框架是现在比较流行的SSH,同时这个系统中用户的上传可以直接利用struts2中提供的上传功能,所以很轻松,虽然在项目中用到Spring的地方很少,但是不能没有它。我的很多配置都利用Spring来管理的,而Hibernate则是直接为了响应用户对系统操作和对用户对Hadoop中的HDFS的操作,对数据进行持久化的,这样一来可以很方便的进行功能化,模块化的开发,应用这3大框架,确实可以方便不少,在这个分布式系统中,因为是分布式所以就得提供WebService,这里利用Xfire来实现web服务的开发。
  贴出项目整体结构图:
DSC0004.png
  因为是毕业设计,毕竟不是正规的企业级应用,我虽然在用户数据中采用了一定的加密算法,但是对于黑客级别的人物而言也基本上算不了什么了,对于文件分享中,链接url的生成也采用了一定的加密算法,但是这种加密是可以反解的。因为我后台必须要利用这样的参数进行后续操作。因此至少可以算是考虑到数据安全方面的东西了。
  对于一些敏感操作,系统也会以邮件发送的形式发送到用户的注册邮箱中。这样也算是保障账户安全的一种吧。而这样的邮件发送是由开源apache提供实现的。
  在项目中,加入log4j进行日志的记录,以便后续开发的数据收集,我相信现在基本上每一个商业级的系统都有自己的一套数据采集和日志监控系统。一方面是维护自己的系统安全,以方便维护,可以更加快捷的定位Bug,解决Bug;另一方面则是现在对用户的操作进行分析,就像百度什么之类“为您推荐”这类栏目,也是根据大数据分析而来。云计算的普及,就必将致使大数据的到来。
                          效果截图                        
                             启动Linux中的Hadoop,为应用的链接提供存储支持                                      



#start-all.sh     ------〉启动Hadoop
#jps              ------>查看启动状态
  
DSC0005.png
                                               用户登录成功后的主页显示                                                           
DSC0006.png
                                                      用户基本信息管理                                                               
DSC0007.png
                                                       管理分享页面                                                                 
DSC0008.png
                                              管理员登录后的管理设置中心                                                     
DSC0009.png
                                                                  屏蔽非法用户                                                     
DSC00010.png
  由于篇幅有限也就不一一列举系统中效果图了,其实在自己的页面中,基本选择jQuery 提供的库,能选择用页面无刷新操作的基本都选择了无刷新操作,毕竟这样一来用户体验很好,而且还显得更加专业,能想到的优化措施基本都用上了。有时候就有一种感觉,写程序,就像精心培养一株树,总希望其完美的无话可说,可这毕竟是程序!
  
                      感谢奋斗中的自己!                       
  



   邮箱:it_red@sina.com
个人博客: http://itred.iyunv.com
版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85306-1-1.html 上篇帖子: 整合Cassandra与Hadoop MapReduce 下篇帖子: Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表