分享

基于Hadoop构建对象存储系统

langke93 发表于 2013-10-25 10:46:04 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 7159
本帖最后由 pig2 于 2014-5-4 21:51 编辑

本帖最后由 hadoopor 于 2009-11-22 14:30 编辑
By云深作者:Terry/Alen/Adam/SeymourZ
转载请注明出处
前言
l
云计算领域目前有两大代表性系统:Google和Amazon,它们各自的存储系统为Google GFS和Amazon S3,都提供高可靠性、高性能、高可扩展性的存储能力
l
Hadoop HDFS就是Google GFS存储系统的开源实现,主要应用场景是作为并行计算环境(MapReduce)的基础组件,同时也是Bigtable(如HBase、HyperTable)的底层分布式文件系统。Hadoop HDFS也有自身的局限性,虽然作为分布式文件系统称谓,但它并不适合所有的应用场合。如:单点namespace,小文件等,早有阐述。http://www.cloudera.com/blog/2009/02/
l
Amazon S3作为一个对象存储系统运营,为客户提供1到5G任意大小的对象(文件)存储,从有限的资料来看,S3没有采用GFS的类似的体系架构,也不对外提供完整的文件系统呈现,更多的是一种对象存储访问的形式。
l
既然Hadoop HDFS适合处理和存储大块的文件,我们是否也可以把HDFS作为一种容器看待,通过上层抽象,对外提供类似Amazon S3一样的对象存储功能呢吗?答案我想是肯定的,下面就讨论基于Hadoop开源项目,构建一个高可靠,高性能、高扩展性的对象存储系统,实现类似Amazon S3的用户接口。
系统架构
图-1
系统架构
系统组成:

对象访问接口层(Access Edge)
§
提供客户端Lib,供上层应用调用;
§
提供REST和SOAP接口,支持web业务的访问。
对象元数据存储层(MetaData Storage)
§
实现对象操作业务逻辑,包括:
1.
Bucket创建;
2.
Bucket删除;
3.
Bucket信息查询;
4.
对象创建;
5.
对象元数据信息查询;
6.
对象删除;
7.
对象元数据修改;
§
负责对象元数据的管理和维护,基于Hbase实现,由Hbase实现系统的扩展和高可靠性
对象实体数据存储(DataNode)
§
提供对象数据的可靠存储;
§
提供对象归档文件的存储;
§
基于HDFS,支持数据冗余
归档管理(Archive Management)
§
零散的小对象文件的归档;
§
归档文件的存储管理;
§
失效对象的磁盘空间回收;
§
归档文件的再归档;
§
相关元数据信息的修改;
元数据存储子系统
采用Bigtable(HBase)的结构化存储系统,提供Mata Data存储:

已有(1)人评论

跳转到指定楼层
shihailong123 发表于 2013-10-25 10:46:04
本帖最后由 pig2 于 2014-5-4 21:51 编辑


对象的删除
Client提交删除对象请求delete_obj_req(usr,bucket,obj_key);检查user和Bucket的合法性,要求存在、访问权限;不合法则返回失败;User和Bucket检查通过,则进行如下处理:
删除对象在元数据表中的信息;

将删除对象及其在hdfs中的路径信息存入到已删除对象表中;

更新Bucket使用空间大小;
对象删除时,对象可能有两种存储形态:
对象文件 —— Archive Management归档处理时,会直接删除无效的该文件;归档文件的一部分 —— Archive Management对磁盘利用率低的归档文件压缩处理时,删除该数据;图-5 对象的删除
小文件的归档管理
该部分主要由周期性执行的MapReduce任务完成;有以下几个处理流程:
对象归档扫描元数据信息表,统计未归档的对象信息,包括在HDFS中的URI、对象大小等;根据配置的归档文件大小限制,对统计所得的对象进行分组;将每个分组中的对象文件合并到一个归档文件中;更新相关对象元数据信息表中的数据位置描述项;删除旧的对象文件;图-6 小文件的归档
归档文件的压缩
扫描已删除对象表,统计无效对象信息;对于未归档的无效对象文件,直接删除;将已归档的无效对象按照归档文件分组;统计涉及到的归档文件的空间利用率;统计利用率利用率低于阈值的每个归档文件中所有有效对象信息;将归档文件中的有效对象数据合并到一个新的归档文件中;更新相关对象元数据信息表中的数据位置描述项;删除旧的归档文件;图-7 归档文件的压缩
归档文件的再归档
1.
扫描归档文件列表,统计占用磁盘空间低于阈值的归档文件;
2.
根据归档文件大小配置参数,将统计所得归档文件分组;
3.
统计各分组归档文件涉及到的对象;
4.
将每个分组中的归档文件合并到一个归档文件;将归档文件中的有效对象数据合并到一个新的归档文件中;
5.
更新相关对象元数据信息表中的数据位置描述项;
6.
删除旧的归档文件;
图-8 归档文件的再归档
总结语
基于Hadoop实现类似Amazon S3的对象存储系统,有一定的先天优势,例如Hadoop的HDFS作为数据存储的容器,解决了数据冗余备份的;Hadoop的半结构化的存储系统HBase可以支撑MetaData的存储,同时解决了MetaData存储层的可靠性和可扩展性等。HDFS天生不能适合存储大量小文件的缺陷,可以使用MapReduce处理架构在后台提供对象归档管理功能(Hadoop已经有了HAV的功能,只是没有平台化),使得HDFS仍然存储自己喜欢的“大文件”。这种基于Hadoop实现的对象存储系统,并不能保证在现阶段达到和Amazon S3一样的服务效率,但随着Hadoop系统的不断完善(例如HDFS访问效率的提高,Append功能的支持等),相信也能有不俗的表现。
转自:http://blog.csdn.net/Cloudeep/archive/2009/08/05/4412958.aspx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条