`
yeminping
  • 浏览: 180632 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

基于Hadoop构建对象存储系统(一)

阅读更多

前言

 

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 存储:

 

可用 Object 元数据表结构

 

列名

类型

备注

Object 标识符

字符串

Row key

格式:

Usr:bucket:full path

用户自定义元数据

字符串

<key value> 列表

格式: Key0 value0|key1:value1|…

归档标志

Bool

标识 object 文件是否已被归档

数据位置描述

字符串

格式: Hdfs://filepath:offset:size

最后修改时间

时间戳

标识元数据版本

 

已删除 Object 元数据表结构

 

列名

类型

备注

Object 标识符

字符串

Row key

格式:

Usr:bucket:full path

归档标志

Bool

标识 object 文件是否已被归档

数据位置描述

字符串

格式:

Hdfs://filepath:offset:size

 

Bucket 信息表结构

 

列名

类型

备注

bucket 标识符

字符串

Row key

格式:

Usr:bucket

用户自定义元数据

字符串

<key value> 列表

格式: Key0 value0|key1:value1|…

Max space

int64

Bucket 允许的最大空间

Used space

int64

Bucket 已使用的空间

注: RowKey 的设计,应该为系统处理提供最合适的索引

HDFS 中对象数据的存储形式

对象在 HDFS 中存储有两种形式:

§          对象文件 —— 每个文件对应一个对象,对象创建时存储到 ONest 中的形态;

  •  
    • 归档文件 —— 为了减少 HDFS 中小文件的数据,将小的对象文件和归档文件归档。

HDFS 中目录结构:

§          /data_dir-|-/object_dir/-|-obj_file0

                      |                    |-obj_file1

                      |

                      |-/arch_dir/-|-arch_file0

                                         |-arch_file1

 

 

-2 HDFS 上的对象数据存储

 

Bucket 的创建和删除

Bucket 创建:

1、   Bool Create Bucket(user_id, buck_name, buck_size, );

2、   MetaData Storage 查询 Bucket 信息表确定是否已经存在相同的 user bucket 记录 ;

3、   如果 Bucket 信息表中不存在相同的 user Bucket 记录,则在表中插入一条 user bucket 记录 ;

4、   返回 True 或者 False 表示操作成功与否

 

Bucket 删除:

1、   Bool DropBucket(user_id, buck_name);

2、   MetaData Storage 查询 Bucket 信息表确定是否已经存在相同的 user bucket 记录 ;

3、   如果 Bucket 信息表中存在相同的 user Bucket 记录,则查询 ObjectMeta 表确定 Bucket 是否为空;

4、   Bucket 为空,则删除 Bucket 信息表中对应的记录;

5、   返回 True 或者 False 表示操作成功与否;

 

 

-3 Bucket 的创建和删除

对象的创建

  1.  
    1. Client 提交创建对象请求 create_obj_req(usr,bucket,obj_key,obj_meta);
    2. 检查 user Bucket 的合法性,要求存在、可访问、容量允许;生成对象在 HDFS 中的对象文件的 URI
    3. 返回对象文件 URI
    4. 将对象数据写入 HDFS 的对象文件;
    5. 通知 MetaData Storage 对象数据存储完成;
    6. 更新对象元数据索引信息,包括:

     对象元数据信息插入;

     Bucket 的已使用空间大小,对于同一个对象的多个版本,以最新版本空间大小为准;

  1.  
    1. 返回创建对象成功。

 

-4 对象的创建

对象的删除

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

     删除对象在元数据表中的信息;

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

     更新 Bucket 使用空间大小;

           对象删除时,对象可能有两种存储形态:

  1.  
    1. 对象文件 —— Archive Management 归档处理时,会直接删除无效的该文件;
    2. 归档文件的一部分 —— Archive Management 对磁盘利用率低的归档文件压缩处理时,删除该数据;

 

 

-5 对象的删除

 

小文件的归档管理

该部分主要由周期性执行的 MapReduce 任务完成;有以下几个处理流程:       

  •  
    1. 对象归档
    2. 扫描元数据信息表,统计未归档的对象信息,包括在 HDFS 中的 URI 、对象大小等;
    3. 根据配置的归档文件大小限制,对统计所得的对象进行分组;
    4. 将每个分组中的对象文件合并到一个归档文件中;
    5. 更新相关对象元数据信息表中的数据位置描述项;
    6. 删除旧的对象文件;

 

 

-6 小文件的归档

 

来自:http://blog.csdn.net/Cloudeep/archive/2009/08/05/4412958.aspx

分享到:
评论

相关推荐

    基于hadoop的云盘系统

    基于Hadoop的云盘系统是一种分布式存储解决方案,利用Hadoop的可扩展性和高容错性来处理大规模数据。Hadoop是Apache软件基金会的一个开源项目,主要由HDFS(Hadoop Distributed File System)和MapReduce两部分组成...

    基于hadoop的分布式对象存储系统.zip

    本资料主要探讨的是如何利用Hadoop构建一个分布式对象存储系统,这种系统能够高效、可靠地存储海量数据。 【描述】:“人工智能-Hadoop” Hadoop在人工智能领域的应用越来越广泛。AI项目往往需要处理大量数据,...

    基于hadoop的web云盘系统

    【基于Hadoop的Web云盘系统】是一种分布式存储和处理大量数据的解决方案,它结合了Hadoop的强大功能和Web服务的便捷性。该系统利用JavaWeb技术构建用户界面,为用户提供了一个在线存储、管理和访问文件的平台。核心...

    基于Hadoop的电影推荐系统的设计与实现源码(毕业设计)java+Hadoop

    本项目是基于Hadoop平台,采用Java编程语言,构建了一套完整的电影推荐系统,旨在实现大规模数据处理下的高效推荐服务。 首先,我们要理解Hadoop的核心组件——Hadoop Distributed File System (HDFS) 和 MapReduce...

    基于Hadoop和OpenStack的数据平台.zip

    《基于Hadoop和OpenStack构建数据平台:深度解析与实践》 在当今信息化时代,大数据已成为企业竞争力的关键因素。为了有效管理和利用海量数据,企业和研究机构纷纷转向分布式计算框架,如Hadoop和云计算平台...

    基于Hadoop的流量日志分析系统.docx

    这篇基于Hadoop的流量日志分析系统的学士学位毕业论文,深入探讨了Hadoop在大数据处理中的应用及其优势。 首先,Hadoop架构是论文的核心研究对象。Hadoop是由Apache基金会开发的一个开源项目,旨在提供一种分布式...

    利用Spring搭建基于Hadoop的大数据分析.zip

    本文将详细介绍如何利用Spring框架来搭建一个基于Hadoop的大数据分析平台,涵盖了从基础概念到实践应用的关键知识点。 首先,理解Hadoop是至关重要的。Hadoop是Apache基金会的一个开源项目,主要设计用于处理和存储...

    基于SpringBoot+Hadoop+Vue开发的企业级网盘分布式系统+本科毕业设计+源码+数据库.zip

    本项目利用SpringBoot作为服务端基础,Java作为编程语言,Hadoop提供大规模数据存储,Vue.js构建用户界面,构建了一个高效、灵活的企业级网盘分布式系统。无论是作为毕业设计还是课程实践,这个项目都提供了全面的...

    基于Hadoop的图像检索之人脸识别系统.zip

    本项目名为“基于Hadoop的图像检索之人脸识别系统”,它将Hadoop与人脸识别技术相结合,构建了一个能够处理大量图像数据的人脸识别系统。 1. Hadoop基础知识: Hadoop是Apache基金会的一个开源项目,核心组件包括...

    基于Hadoop电商大数据的挖掘与分析技术研究.pdf

    Hadoop作为一种开源的编程框架,主要使用Java语言,支持海量数据集的分布式处理,它主要包括HDFS(Hadoop分布式文件系统)和MapReduce(并行计算框架)两大组件。HDFS负责数据存储,而MapReduce负责数据处理。这一...

    基于hadoop+hbase+springboot实现分布式网盘系统.zip

    在这个背景下,一个基于Hadoop、HBase和SpringBoot的分布式网盘系统应运而生。这个系统是IT专业学生进行毕业设计的优秀案例,它巧妙地融合了大数据处理框架、分布式数据库和现代Web开发技术,旨在提供高效、可扩展的...

    毕设基于Hadoop+Hive构建数据仓库使用django+echarts构建前端web网站对业务指标进行可视化呈现源码.zip

    2. Hive:Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得非Java背景的用户也能方便地对Hadoop上的数据进行操作。在本项目中,Hive可能是用于对Hadoop中存储的...

    hadoop 大数据的存储与分析

    - Hadoop分布式文件系统(HDFS):一个分布式文件存储系统,它存储数据跨越多台机器。 7. Hadoop的实际应用 Hadoop在处理网络级别的大数据方面具有显著优势。它不仅可以在成千上万台机器上运行,而且对开发人员和...

    基于Hadoop的海量视频的分布式存储与检索研究.docx

    - **HBase与MapReduce技术**:HBase是基于Hadoop的一个非关系型数据库,适合存储半结构化或非结构化数据。结合MapReduce,可以对视频数据进行高效处理和索引构建,实现快速访问。 - **Lucene技术**:Lucene是一种...

    基于Hadoop和Django的大数据可视化分析Web系统.docx

    ### 基于Hadoop和Django的大数据可视化分析Web系统 #### 一、系统概述与价值 在当今数字化时代,大数据技术已经成为推动企业发展的重要力量。对于企业和组织而言,能够有效地收集、处理并分析海量数据变得至关重要...

    基于hadoop结合spring全家桶,采用hdfs文件系统存储的以jpa完成持久层的项目.zip

    本项目“基于Hadoop结合Spring全家桶,采用HDFS文件系统存储的以JPA完成持久层的项目”正是这样一个将大数据处理与企业级应用开发紧密结合的实例。下面将详细阐述该项目中的关键知识点。 首先,Hadoop是一个开源的...

    基于SpringMVC+Spring+HBase+Maven搭建的Hadoop分布式云盘系统.zip

    这是一个基于Java技术栈,利用SpringMVC、Spring、HBase和Maven构建的Hadoop分布式云盘系统的项目。该项目旨在实现一个高效的、可扩展的云存储解决方案,利用Hadoop的分布式特性来处理大规模数据存储需求。 首先,...

    基于hadoop的疾病信息统计平台.zip

    【标题】基于Hadoop的疾病信息统计平台是一个利用Java编程语言构建的大数据处理系统,它旨在高效地收集、存储、处理和分析大量的疾病相关数据。Hadoop是Apache软件基金会开发的一个开源框架,专为分布式存储和计算大...

    基于Hadoop平台的DBSCAN算法应用研究.docx

    ### 基于Hadoop平台的DBSCAN算法应用研究 #### 一、研究背景与意义 随着信息技术的飞速发展,大数据时代悄然而至。在这个时代背景下,数据量的爆炸式增长给传统的数据处理方式带来了前所未有的挑战。面对庞大的...

    基于hadoop的分布式数据库测试方法研究.pdf

    基于Hadoop的分布式数据库测试方法研究主要关注在电力系统海量数据存储采集的背景下,构建基于Hadoop生态圈框架的通用测试方法,以对分布式数据库的性能进行分析和检测。随着数据量的激增,传统的集中式数据库已无法...

Global site tag (gtag.js) - Google Analytics