[探讨]分布式文件系统的应用及选择
当下,互联网行业发展非常迅猛,分布式文件系统在其中的应用也非常普遍。一些朋友问起一些相关问题,如:
1. 搜索引擎类的那些页面文本文件存储,用什么DFS比较好?
2. 海量小图片类的,如taobao里头,好多商家图片,用什么存储?
3. 视频类的,如优酷,用什么DFS
4. 海量空间地理图形信息类的?
这都是非常有意义的问题。DFS有很多,各有自己的特点。
1. 这个,HDFS似乎就可以满足。它只需要能把那些文本文件分块分散到各个节点上进行顺序存储就行了。缺点呢,就是:目前Hadoop只支持单用户写,不支持并发多用户写。可以使用Append操作在文件的末尾添加数据,但不支持在文件的任意位置进行修改。所以,它并不一定适合于一些特定的场景应用。比如,某些应用就是要求修改某个文件的局部内容,同时要求没有什么大的性能损失。
2. taobao专门为它开发一套DFS,叫TFS. 它好像是按照默认64M来全局组块的。多个小图片文件可以存到同一个块中。name server有主和备。chunk server或叫data server节点用于存储实际的数据。在单机里头,无数的小文件如果聚集到一个目录下边,访问某个小文件,效率是非常低的,将多个小文件聚成一个大文件,在这里优势就体现出来了。taotao在具体实施过程当中,还弄了个主备中心的要领,主中心可读可写,备中心是主中心的副本,只提供读,这样在主中心失败的情况下,备中心可以继续提供无损的服务。其介绍详见: http://code.taobao.org/p/tfs/wiki/index/
3. 视频类的,单个文件大小大多在几十兆或上百兆,与TAOTAO里的小图片(几K到几十K)又不一样。参照TAOBAO的文件系统,也许可以一试。GFS或者 MooseFS也可以一试。商家,国内有个公司叫龙存,不知道费用如何。使用TFS,单文件跨块存储,如果支持的话,倒不妨一试。
4. 这个问题应该分成两块,
矢量图形数据本身,应该还要借助于空间数据库(如Oracle Spatial, PostGIS, ArcSDE引擎等)进行存储,因为它还是涉及到事务处理的。对外展现的图形(影像),分级分块,可以借助于小文件聚合的思想。但是数据量,未必有前边3个那么大。普通的可随机读写的GFS是不是能满足需求?