美文网首页我爱编程
大数据架构之数据存储

大数据架构之数据存储

作者: _Hook_ | 来源:发表于2016-08-29 07:58 被阅读0次

    持久化存储

    关键概念: 文件系统,数据库系统
    文件系统中,大量文件没有很好组织,缺乏对象之间关键,读取效率低,因此有了数据库。

    单台计算机无法满足数据存储和处理需求,需要集群化方案,如何高效读取分布式计算机文件,高效执行分布式数据库的SQL查询,就有了NOSQL。知名分布式文件系统HDFS,分布式非关系型(非结构化)数据库Hbase和MongoDB。

    分布式文件系统

    2003年,Google发布论文GFS,启发Apache Nutch开发了HDFS。2004年,Google 又发布了论文《MapReduce: Simplified Data Processing on Large Clusters》,Doug Cutting等人实现计算框架MapReduce ,并与HDFS结合来更好的支持该框架。2006年项目从Butch搜索引擎中独立出来,成为了现在的Hadoop。

    GFS隐藏了底层的负载均衡,切片备份等细节,使复杂性透明化,并提供统一的文件系统接口。其成本低,容错高,高吞吐,适合超大数据集应用场景。

    HDFS原理:
    1、横向扩展,增加“数据节点”就能增加容量。
    2、增加协调部门,“命名节点”维护元数据,负责文件系统的命名空间,控制外部访问,将数据块印射到数据节点。还会备份元数据从命名节点,它只与命名节点通信。
    3、数据库在多个数据节点备份。

    弱点:
    1.不适合实时数据访问。
    2.无法高效存储小文件,太多小文件会降低命名节点检索效率,降低系统处理速度。
    3.不支持多用户写入。
    4.不支持文件任意位置修改,只能在文件末尾追加新数据。

    分布式数据库

    Google发布论文《Bigtable: A Distributed Storage System for Structured Data》。

    HBase

    Hbase在HDFS基础上提供了Bigtable的能力; 并且基于的模式进行存储。

    HBase的数据模型:
    表格

    列族
    列限定符
    单元
    版本

    HBase体系结构:
    HMaster
    HRegion
    HRegion服务器

    HBase的列存储设计非常方便扩展,可以修改列族定义、增加列族或列限定符,所以被成为“宽表”。

    宽表模式优点:
    节省关系数据库连接操作和存储空间。
    可将不同Schema模式的数据混合,即异构数据源的统一和集成。

    MongoDB

    面向集合,数据分组存储在数据集,数据集被称为集合,每个集合在数据库有唯一标识,可以包含无数文档。

    与HBase区别:
    1.数据直接存储在文件系统上,而非HDFS上。其也有大文件存储概念GridFS,由MongoDB自身实现。
    2.数据模型以文档为单位,支持多种复杂结构。文档中字段或属性不限定特定类型。
    3.单个文档不再切分和分布式存储。

    非持久化存储

    关键字:缓存和散列
    散列:数据的散列值作为键,待写入的数据作为值,进行key-value配对存储。散列值由散列函数(算法)得出,好的算法尽量避免散列冲突(散列值不唯一)。

    提高缓存访问命中率:
    淘汰算法:最少使用(LFU),最久未用(LRU)。

    缓存系统:

    Memcached, Berkeley DB, Redis。
    MongoDB也可以做缓存,Redis和Berkeley DB也支持持久化存储,没那么绝对。

    Memcached:
    基于散列映射。
    LRU。
    客户端(任何语言)通过Memcached协议 来与守护进程通信(c语言)。
    服务器端无切片和副本等分布式功能,服务器之间不通信,需要应用端实现。

    Berkeley DB(轻量级):
    嵌入式数据库系统。
    架构简单,key-value。
    支持ACID数据库事务处理,细粒度锁,XA接口,热备份,同步复制等。
    核心不支持分布式,支持持久化。

    Redis(远程字典服务器):
    1.超高性能,每秒数十万次。
    2.支持字符串,散列表,列表,集合。
    3.支持事务性,例如a转账给b,a扣钱,b加钱,如果b未加成功,a扣的钱返还。
    4.可设定生命周期,为key-value设置生命周期(TTL),例如验证码,限时特惠。
    5.持久化,全量保存的RDB镜像(速度快),增量保存的AOF日志(资源消耗少,丢失少)。
    6.主从同步,从服务器利用发布/订阅机制从主服务器接收发布的记录。
    7.哨兵,自动化监控和故障恢复。
    8.适用读多写少,主服务器写,从服务器读,主服务器一旦出错,系统恢复麻烦。Redis3.0后提出了“集群”概念,包括预分片技术,对水平扩展更好的支持。

    相关文章

      网友评论

        本文标题:大数据架构之数据存储

        本文链接:https://www.haomeiwen.com/subject/xksxettx.html