利用hadoop模拟制作百度、360网盘指导

可以带着下面问题来阅读:
1.网盘如何实现上传文件?
2.网盘如何实现远程操作?
3.网盘如何实现删除文件?


思考:
hadoop如何与Javaweb相结合实现网盘

作为云技术爱好者,我们都知道网盘。当然如果非云技术爱好者,也都知道网盘:百度网盘,360网盘等。

有一点不同的是,我们在学习云技术,对于非技术人员,感觉网盘是如何神秘。作为从事云技术,不知道网盘是怎么做,有点说不去。

这里来给大家解析,网盘是怎么做成的。其实或许我们大家都接触过,等解析完毕,或许你会忽然大悟。

这里咱们是以hadoop为例。

我们都知道hadoop的文件系统hdfs。我们的网盘则是以它基础。

我们知道网盘是什么?下面以百度网盘为例,我们看到了下图。


是的,我们登录之后,就可以上传文件,下载文件,删除文件等操作。
我们该怎么模拟这个百度网盘:这里先从思想上来打通大家的七经八脉。
首先使用网盘,我们需要注册帐号,在我们的帐号下面会看到自己的网盘。
过程是这样的,那么下面我们从hadoop的角度来讲解该如何实现类似百度网盘。

一、思路
1.首先搭建hadoop环境(不知道怎么搭建环境的,可以查看http://www.aboutyun.com/thread-6487-1-1.htmlHadoop伪分布安装过程:Hadoop单机环境搭建指南(ubuntu))
2.在另外一台pc机上搭建开发环境。(也可以是发布的程序)
二、实现
上面为了节省成本,可以搭建伪分布环境,如果有真实的环境,这样可以理解更深刻。对于网盘也越真实。
我们该如何实现网盘,这里其实我们已经有原材料了。那就是hadoop的HDFS。HDFS其实就是个文件系统。那么网盘的,“网”没有体现。那么剩下的事情就是我们的工作了。
1、创建web程序
我们知道网盘都是web的方式,也就是我们都可以通过浏览器来访问网盘。那么我们可以通过winform来实现吗?完全可以。那么百度winform是什么那?如下图就是我们的百度云管家。那么这里需要什么功底,就看你Java内功深不深厚。我们这里就不详细讲解,该如何实现web或则winform该如何实现了。

2.远程操作HDFS
HDFS编程我们都看了很多遍了。同时我总结了Hadoop编程有两种方式http://www.aboutyun.com/thread-6950-1-1.html
这里不再详细叙述这两种开发方式了。
---------------------------------------------------------------------------------------------------------------------------------------------------
网盘原理
网盘为什么称之为网盘,我们的磁盘为什么就不行。这是指一般情况,是因为我们的磁盘只能给自己的电脑使用。别人是无法访问的,而对其编程也是十分困难的。
那么现在hadoop产生了,我们能否远程操作HDFS文件,答案是可以的。既然可以,那就好办了。我在家可以使用,在公司可以使用,在任何能上网的地方都可以使用了。这就是为我们让HDFS成为网盘打下了基础。
核心代码指导:
1)hadoop包 org.apache.hadoop.fs.FileSystem
我们该如何远程操作HDFS,这里HDAOOP给我们提供了一个包 org.apache.hadoop.fs.FileSystem;这个包给我们远程操作hadoop提供了操作类。
而也就是通过这个包,实现了网盘,所以我们还是记住这个万能的包吧。
2)创建远程连接
  String PATH = "hdfs://192.168.159.10:9000/";
上面的HDFS:ip,这个ip地址也就是你安装hadoop电脑的ip地址。也正是因为这个地址,我们才能操作HDFS
3)对HDFS文件的各种操作
上面已经打通了,下面就是我们的具体实践了,



1.创建hadoop文件夹
比如我们创建hadoop文件夹
第一步:首先我们实例化:
(这里需要注意的是我们已经倒入包了)
FileSystem filesystem = getFileSystem();
private static FileSystem getFileSystem() throws IOException,
URISyntaxException {
return FileSystem.get(new URI(PATH), new Configuration());
}
第二步:使用mkdirs函数创建文件夹
// 创建目录
createFile(filesystem,"/hadoop");

private static void createFile(FileSystem filesystem,String path) throws IOException {
filesystem.mkdirs(new Path(path));
}
2.上传文件通过IOUtils.copyBytes实现

以下实例化步骤都省略:
 put(filesystem);
private static void put(FileSystem filesystem) throws IOException,
FileNotFoundException {
final FSDataOutputStream out = filesystem.create(new Path(File));
final FileInputStream in = new FileInputStream("E:/about云/upload.txt");
IOUtils.copyBytes(in, out, 2048, true);
}
3.通过删除文件FileSystem的delete函数实现
 removeFile(filesystem,"/hadoop");
private static void removeFile(FileSystem filesystem) throws IOException {
filesystem.delete(new Path(path), true);
}
当然上面还有些操作,大家可以查看FileSystem操作类。这里就不在一一举例了。
三、总结
上面通过代码我们讲了网盘是如何实现的,实际的网盘还需要考虑很多的问题。如果个人比较喜欢,可以模拟一下。
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值