分布式文件系统选型

目前的分布式文件系统很多,各自有各自的优点,但是目前的分布式文件系统都有各自的适用场景,这里做一备份,很多信息都是网上搜集来的:
1.大文件存储
HDFS是目前的不二选择,原因无需赘述

2.小文件系统
taobao专门为它开发一套DFS,叫TFS. 它好像是按照默认64M来全局组块的。多个小图片文件可以存到同一个块中。name server有主和备。chunk server或叫data server节点用于存储实际的数据。在单机里头,无数的小文件如果聚集到一个目录下边,访问某个小文件,效率是非常低的,将多个小文件聚成一个大文件,在这里优势就体现出来了。taotao在具体实施过程当中,还弄了个主备中心的要领,主中心可读可写,备中心是主中心的副本,只提供读,这样在主中心失败的情况下,备中心可以继续提供无损的服务。其介绍详见:http://code.taobao.org/p/tfs/wiki/index/

MooseFS:下面是MooseFS和HDFS的区别
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:严林
链接:http://www.zhihu.com/question/22171041/answer/20521040
来源:知乎

首先,说一下这两个分布式文件系统的相同之处:
1.这两个文件系统都是类似GoogleFS的实现方式,即一个MasterServer和多个ChunkServer构成的存储集群;

2.这两个文件系统都存在MasterServer的单点问题(个人认为主从备份并不能从根本上解决这个问题,该问题的解决之道应该是类似 Ceph 多元数据服务器方式,这方面也是我研究生阶段的研究点之一);

3.这两个文件系统追加写模式,也就是说,两者都更加适合“一次写多次读”的模式,如果涉及到数据的修改,那么这个问题就相对比较麻烦了(更好的办法可以参考Sorrento这个文件系统);

4.由于海量元数据的因素,对待海量小文件都相对比较乏力(更好地解决办法可以参考Facebook的Haystack);

5.两者都支持在线扩容。

我们再来看看这两个分布式文件系统的差异:

1.HDFS由Java实现,MooseFS由C++实现;
2.HDFS不符合posix语义,MooseFS是完全符合posix语义的,原因在于MooseFS是通过Fuse来通过客户端接口的(Fuse目前已经是标准内核的一部分了),现有使用本地文件系统的程序可以直接平滑迁移到MooseFS上,无需任何修改,但是MooseFS也付出了相应地开销:使用HDFS编写程序时直接使用库(如libhdfs)就可以跟Master或者ChunkServer通信,请求传输更为高效,而MooseFS需要通过标准posix接口将请求发送到内核,再通过Fuse将请求截获发送到用户态,然后才能和Master或者ChunkServer通信;
3.MooseFS提供了快照功能,HDFS目前还没有看到这个方面的实际开发行动;
4.MooseFS针对小文件和随机I/O进行了一些优化;说到主流这个问题,HDFS具有压倒性的优势:Facebook、Yahoo、阿里、腾讯、百度等等都是使用者,社区也更为活跃,谁让Apache Software Foundation是开源一姐呢?!但是题主也不用灰心,MooseFS的粉丝也不少 Who is using MooseFS,其中当属豆瓣是大哥,1.5PB的数据也证明了MooseFS还是有两把刷子的。最后,个人觉得这两个文件系统都还是达到了工业生产级别的,应该根据实际的存储需求来做选择,两者的差异并不是那么大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值