码迷,mamicode.com
首页 > 其他好文 > 详细

HBase简单介绍

时间:2020-03-01 00:09:42      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:切分   hba   面向   解释   大数   状态   file   地方   lis   

  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,两者都写入成功则操作成功

HBase简单介绍

标签:切分   hba   面向   解释   大数   状态   file   地方   lis   

原文地址:https://www.cnblogs.com/lh97-/p/12386910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!