HBase简单介绍

大而话之BigData 2020-02-29

HBase是Hadoop的一个子项目,用JAVA语言实现,是建立在HDFS的基础上的非关系型分布式数据库,目标是通过水平扩展的方式处理非常庞大的表。值得注意的是,HBase并非结构化数据库,而是介于非关系型数据库(nosql)与关系型数据库(RDBMS)之间,仅能存储非结构化数据和半结构化数据。

为什么要使用HBase:

  1. Hadoop可离线批量处理大数据问题,但由于MapReduce框架的延迟较高,所以难以处理实时数据
  2. HDFS面向批量访问而非随机访问
  3. 传统数据库无法在数据激增时妥善处理集群扩展性以及性能问题
  4. 传统数据库在数据结构变化时必须停机维护

HBase的特征:

  1. 可存储大量数据:HBase可存储PB级数据
  2. 面向列:HBase中的表由列族组成,以列为单位存储
  3. 高并发性:HBase集群架构可由廉价PC构成,虽然每台PC的IO延迟不小,但在并发状态下,总体IO延迟并不高
  4. 稀疏:表中数据以抽象的形式存储在表中,无确切结构,只需以类似索引的形式记录数据的位置,数据为空的地方不占内存

HBase与RDBMS的区别:

 数据类型:关系型数据库中数据以表的形式存在,采用关系模型,数据类型以及存储方式多样化,且操作复杂;

     HBase以region形式存在,每个region中包含多个列族,将数据存储为未经解释的字符串,没有复杂的表间关系,

     只有简单的添加查询等,不支持join操作

存储模式:HBase基于列存储,每个列族由几个文件保存,不同列族分开保存

数据索引:RDBMS针对不同列构建多个索引,HBase只有一个索引----行键,所有访问都通过行键进行访问或扫描

HBase架构:

HMaster:

  监控RegionServer

  为RegionServer分配Region

  处理负载均衡

  通过Zookeeper向客户端报告自己的位置

RegionServer:

  实际存储HBase的数据

  处理HMaster为其分配的Region

  维护内部的HLog

  处理对内部Region的IO请求

  切分过大的Region

Zookeeper:

  监听功能,保证集群中只有一个master

  存储region的寻址入口

  实时监控Region Server的状态并通知master

底层原理:

  HLog中记录数据的所有变更,以便在数据丢失时恢复数据;

  每个HRegion由多个列族组成,是负载均衡的最小单位,同一个HRegion不可能被多个Region Server同时拥有;

  memstore与storefile:memstore相当于内存,storefile相当于磁盘,数据在menstore中一处时,则形成一个单独的storefile,storefile大于某个值时region被分割,并由master重新分配以达到负载均衡

HBase对数据的读写操作:

  读:

    1. 客户端访问zookeeper得到meta表的位置IP
    2. 得到响应后客户端访问该region server并找到meta表
    3. 通过meta表中的元数据信息找到对应的region server并发送读请求
    4. 目标server将结果返回给客户端

  写:

    1. ,户端访问zookeeper得到meta表的位置IP
    2. 客户端通过IP访问Region Server,找到meta表并访问其中的元数据信息
    3. 客户端找到对应Region Server发送写请求
    4. 得到响应后,湘江数据写入HLog中防止丢失,再写入memstore,两者都写入成功则操作成功

相关推荐

飞鸿踏雪0 / 0评论 2020-05-07