基于Hadoop2.2.0版本分布式云盘的设计与实现

基于Hadoop2.2.0版本分布式云盘的设计与实现

一、前言

在学习了hadoop2.2一个月以来,我重点是在学习hadoop2.2的HDFS。即是hadoop的分布式系统,看了很久的源代码看的我真的想吐啊,感觉看源码还是没什么劲,于是心血来潮看到可百度的网盘挺有意思(其实我一直都在用百度的网盘)对里面的功能的实现很好奇,于是我就突发奇想,能不能用hadoop来做个呢?答案是肯定的。于是我就开始了,但是实际中,没有人用hadoop来做网盘,因为hadoop不适合存放小文件。当然办法总是有的,比如小文件可以存入HBase中。hadoop2.2.0这个版本与hadoop1的版本有不同,且在源码上也有很大的差别。引入了Yarn这个资源管理框架,目前YARN可以管理的资料类型包括了CPU和内存,未来可能会加入对磁盘和网络等类型的支持。目前YARN可以支持的框架包括:MapReduce(批处理框架)、Storm(流式处理框架,项目为Stormon YARN,主要由Hortonworks在推进。正式版本未出但可用,yahoo和淘宝等在内部已经大规模使用)、Spark(内存处理框架,项目为Spark on YARN,主要由Cloudera在推进。正式版本未出但可用,淘宝等在内部也已经大规模使用)。
正在YARN上开发且未来比较靠谱的框架有:Tez(DAG框架,继承自MapReduce,性能有巨大提升)、Hoya(将HBase运行在YARN上,主要由Hortonworks在推进)。

二、设计与实现

采用了Struts2+tomcat7+mysql+Ajax+hadoop2.2来部署架构整个系统。

2.1 架构 

Struts2确实在网页的开发阶段比起单纯的jsp和servlet又更上一层楼。本人也只是了解Struts2那么一点。发现有项目驱动可能学习某个知识点更快,你们说呢?tomcat是众所周知的,用作web服务器。mysql在这里我只用作登录验证。Ajax则主要是负责在上传的时候显示进度条的作用。hadoop2.2主要提供HDFS分布式存储。并且用到了其相关的Jar。

其实无论是百度的网盘,还是360网盘,还是华为网盘,其无非都是类似于像Hadoop这样的做分布式存储,前台展现给客户。分布式存储有的是用openstack。还有的像淘宝的TFS,华为的自己开发的云端系统,华为OceanStor CloudStor CSS云存储等等吧。。

2.2 本系统实现的功能

(1)显示用户系统下所有文件列表
(2)实现上传、下载、重命名、删除文件功能
(3)实现客户端音频(多数格式的)音乐播放功能<暂不支持视频播放>
(4)实现在线图片预览的功能
(5)实现在线文本文档的浏览功能

三、Hadoop2.2分布式云盘的界面

1、欢迎页面

基于Hadoop2.2.0版本分布式云盘的设计与实现_第1张图片

2、登录页面

基于Hadoop2.2.0版本分布式云盘的设计与实现_第2张图片

3、系统主界面

基于Hadoop2.2.0版本分布式云盘的设计与实现_第3张图片

4、文件上传界面

基于Hadoop2.2.0版本分布式云盘的设计与实现_第4张图片

5、图片预览

基于Hadoop2.2.0版本分布式云盘的设计与实现_第5张图片

6、音乐播放

基于Hadoop2.2.0版本分布式云盘的设计与实现_第6张图片

7、文本预览

基于Hadoop2.2.0版本分布式云盘的设计与实现_第7张图片


四、总结

作为研究生,本应该研究研究理论性的东西,说实话,理论这东西不读个博士什么的我个人觉得在短暂的这两年多时间里,可能研究不出什么玩意来。纯属个人意见,呵呵。这个系统还是有一些BUG的。以后有时间还的继续修改。我还是对大数据很感兴趣,但是如何操纵大数据呢?光靠Hadoop是远远不够的,还可以结合数据挖掘,数据仓库,算法等去捣鼓捣鼓可能有效。这个系统算作本人的个人作品吧,麻雀虽小,但还是五脏俱全。主要是一段时间不写点程序,有点不舒服的感觉。呵呵。另外我想说hadoop2源码太多了,哎,慢慢看吧,不结合实战练习的话,没多大效果我觉得。现在还有很多课要上,恩多论文要看。在过两个月,所有的课程终于结束了。。。期待中。。。。。。。。


你可能感兴趣的:(hadoop,分布式,web服务器,云存储,网盘)