MooseFS和Hadoop两个分布式文件系统各有什么优缺点
首先,说一下这两个分布式文件系统的相同之处:1这两个文件系统都是类似GoogleFS的实现方式,即一个MasterServer和多个
ChunkServer构成的存储集群;2这两个文件系统都存在MasterServer的单点问题(个人认为主从备份并不能从根本上解决这个问题,该
问题的解决之道应该是类似 Ceph
多元数据服务器方式,这方面也是我研究生阶段的研究点之一);3这两个文件系统追加写模式,也就是说,两者都更加适合“一次写多次读”的模式,如果涉及
到数据的修改,那么这个问题就相对比较麻烦了(更好的办法可以参考Sorrento这个文件系统);4由于海量元数据的因素,对待海量小文件都相对比较
乏力(更好地解决办法可以参考Facebook的Haystack);5两者都支持在线扩容。
我们再来看看这两个分布式文件系统的差
异:1HDFS由Java实现,MooseFS由C++实现;2HDFS不符合posix语义,MooseFS是完全符合posix语义的,原因在于
MooseFS是通过Fuse来通过客户端接口的(Fuse目前已经是标准内核的一部分了),现有使用本地文件系统的程序可以直接平滑迁移到
MooseFS上,无需任何修改,但是MooseFS也付出了相应地开销:使用HDFS编写程序时直接使用库(如libhdfs)就可以跟Master或
者ChunkServer通信,请求传输更为高效,而MooseFS需要通过标准posix接口将请求发送到内核,再通过Fuse将请求截获发送到用户
态,然后才能和Master或者ChunkServer通信;3MooseFS提供了快照功能,HDFS目前还没有看到这个方面的实际开发行
动;4MooseFS针对小文件和随机I/O进行了一些优化;
说到主流这个问题,HDFS具有压倒性的优势:Facebook、Yahoo、阿里、腾讯、百度等等都是使用者,社区也更为活跃,谁让Apache Software Foundation是开源一姐呢?!但是题主也不用灰心,MooseFS的粉丝也不少 Who is using MooseFS,其中当属豆瓣是大哥,15PB的数据也证明了MooseFS还是有两把刷子的。
最后,个人觉得这两个文件系统都还是达到了工业生产级别的,应该根据实际的存储需求来做选择,两者的差异并不是那么大。
空间=虚拟主机,经济便宜,资源共享,但性能不及服务器和云主机。云主机可以说等于VPS,但是构建技术不一样,真正的云主机一般采用Hadoop+KVM虚拟化技术开发。VPS则是微软Hyper-v虚拟化,性能比不上集群开发的云主机!服务器呢,一般都是指实体机,物理服务器。一台类似CD唱机的机器。性能绝对比云主机、VPS高!虚拟主机就更不用说了。但是价格呢就昂贵了。正品实体服务器一台价格上万
用命令行bin/Hadoop fs -rm(r) 可以删除hdfs上的文件(夹)
用HDFS的API也是可以的。如下:
import javanetURI;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
public class FileDelete
{
public static void main(String[] args) throws Exception
{
if(argslength != 1){
Systemoutprintln("Usage filedelete <target>");
Systemexit(1);
}
Configuration conf = new Configuration();
FileSystem hdfs = FileSystemget(URIcreate(args[0]),conf);
hdfsdelete(new Path(args[0]),false);
}
}
0条评论