美文网首页
数据存储-Hbase基础

数据存储-Hbase基础

作者: neo_ng | 来源:发表于2018-10-20 13:33 被阅读0次

    Outline

    • 什么是Hbase
    • 为什么需要Hbase
    • Hbase的基础概念
    • Hbase的架构
    • Hbase的读写操作

    什么是Hbase

    HBase(Hadoop Database)是一种构建在HDFS之上的分布式、面向列(列族)的存储系统;源自Google发表于的Bigtable论文。HBase是Google Bigtable的克隆版,与Google Bigtable 利用GFS作为其文件存储系统类

    • HDFS为Hbase提供可靠的底层数据存储服务
    • MapReduce为Hbase提供高性能的计算能力
    • Zookeeper为Hbase提供稳定服务和Failover机制
      Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。

    BigTable发明的原因

    搜索是一种定位你所关心信息的行为


    hbase_search

    为什么需要Hbase?

    hdfs和hbase各自使用场景

    Hbase是Hadoop平台下的数据存储引擎,是一个非关系型数据库--NoSQL数据库


    image

    HDFS不支持随机读写操作

    Hbase和关系型数据库的比较

    hbase_vs_RDBMS hbase_table

    Hbase的特点

    优点
    • 分布式数据库,海量存储,易于拓展
    • 数据的实时访问,随机读写
    • schemaless data model (“NoSQL”)
    • 自我管理数据分片
    • 强一致模型(当写操作返回时,所有的读将看到一样的结果)
    缺点

    不支持SQL,不支持跨行跨表事务,不支持二级索引,而且读时延大。它不能用在OLTP(On-Line Transaction Processing联机事务处理过程)业务,比如支付业务的核心流程,但适合存放历史数据,处理历史数据的对账、历史数据的回溯等需求。

    Hbase表的基础概念

    hbase_concept
    概念名称 解释
    Table(表) 类似于传统数据库中的表
    Column Family(列簇) Table在水平方向有一个或者多个Column
    Row Key(行健) Table的主键;Table中的记录按照Row Key排序
    Region 一定范围的数据访问和存储;HBase数据管理的基本单位
    Timestamp(时间戳) 每一行数据均对应一个时间戳;也可以当做版本号。

    Hbase的架构和基本概念

    Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等几个组建组成,架构图如下:


    hbase_arch
    基本概念
    概念 功能
    Client 包含了访问Hbase的接口,并维护cache
    Zookeeper Hmaster的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等
    Hmaster Hmaster的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等
    Hlog 每个HRegionServer中都会有一个HLog的实例,存储在HDFS上
    HregionServer HregionServer直接对接用户的读写请求,是真正的“干活”的节点,每个RegionServer为一定数量的region服务
    Hregion Hbase中分布式存储和负载均衡的最小单元,会split,包含多个Store
    Store Store = MemStore+StoreFile(>=1个)
    MemStore 内存,对应一个列族,KV
    StoreFile StoreFile包含一个或多个HFile,以二进制流的形式存储在HDFS上
    HFile block组成
    HDFS 为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用的支持

    HFile由很多个数据块(Block)组成,并且有一个固定的结尾块。其中的数据块是由一个Header和多个Key-Value的键值对组成。在结尾的数据块中包含了数据相关的索引信息,系统也是通过结尾的索引信息找到HFile中的数据。

    Hbase的存储机制

    Hbase的读写操作

    Hbase写操作
    image

    HBase写数据流程
    1,Client先访问zookeeper,从meta表获取相应region信息,然后找到meta表的数据
    2,根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的Hregion信息
    3,找到对应的regionserver
    4,把数据分别写到HLog和MemStore上一份
    4,MemStore达到一个阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以总HLog上恢复)
    5,当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
    6,当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),并由Hmaster分配到相应的HRegionServer,实现负载均衡

    Hlog

    Hlog是Hbase实现WAL(Write ahead log,预写日志)方式产生的日志信息
    当RegionServer出现故障的时候,需要对Hlog进行回放来恢复数据。
    保证数据的高可用!!

    Hbase读操作

    1,Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。
    2,根据namespace、表名和rowkey在meta表中找到对应的region信息
    3,找到这个region对应的regionserver
    4,查找对应的region
    5,先从MemStore找数据,如果没有,再到StoreFile上读(为了读取的效率)。

    谁在使用Hbase
    hbase_who_use

    参考资料

    Hbase技术详细学习笔记
    《HBase实战》
    Hadoop相关知识整理系列之一:HBase基本架构及原理

    相关文章

      网友评论

          本文标题:数据存储-Hbase基础

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