深入浅出系列Hbase之原理及概念(1)

我们先来看看官网是如何介绍Hbase组件,其官网:http://hbase.apache.org/ 

Apache HBase™是Hadoop数据库,这是一个分布式可扩展的大数据存储。

当您需要对大数据进行随机实时的读/写访问时,请使用Apache HBase™。该项目的目标是在商品硬件群集上托管超大型表-数十亿行X数百万列。Apache HBase是一个开源的,分布式的,版本化的,非关系型数据库,其仿照Google的Bigtable: Chang等人的“ 结构化数据的分布式存储系统 ”。正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供类似于Bigtable的功能。

关于特性:

  • 线性和模块化可扩展性。

              注:Hbase的regionserver相当于Hadoop的DataNode,可以进行水平扩展

  • 严格一致的读写。

              注:不会发生脏数据的读或写的操作

  • 表的自动和可配置分片
  • RegionServer之间的自动故障转移支持。
  • 方便的基类,用于通过Apache HBase表备份Hadoop MapReduce作业。
  • 易于使用的Java API用于客户端访问。

              注:简单的API还是比较好些,但是很多的API是非常难写

  • 块缓存和Bloom过滤器用于实时查询。

              注:块缓存主要用于读的场景

  • 通过服务器端过滤器查询谓词下推
  • 支持通过Hadoop指标子系统将指标导出到文件或Ganglia;或通过JMX

 

表:

  1. rowkey 每一条数据的主键
  2. column family 列族/簇 将表进行 横向切割 简称CF    生产上列族不要超多3个
  3. column 列 是属于一个列族
  4. version number 类型是long 默认是系统时间戳 用户也可以自定义
  5. value 列对应的值

直接把概念列在这,总感觉干巴巴的,那么接下来通过一张图来进一步的介绍

深入浅出系列Hbase之原理及概念(1)_第1张图片

深入浅出系列Hbase之原理及概念(1)_第2张图片

上面的图表示

1、一行row数据是可以包含一个或者多个CF(列族),但是并不推荐一张表设计时CF>3

2、Column表示列,它是属于一个列族,一个CF是包含多个Column(列)的

 

Region:

    它是一段数据的集合,从数据的物理层面来说,所有的数据都是存放在region里的,而region是由RegionServer管理的。

深入浅出系列Hbase之原理及概念(1)_第3张图片

通过上图,我们可以清楚的知道 一个RegionServer管理多个Region,一个Region又管理着一个或多个的CF,而我们再结合之前的图,又明白一个CF包含着多个Column,至此对他们之间的关系又有了稍微清晰的认知。

 

OK,接下来继续看下面两张图

深入浅出系列Hbase之原理及概念(1)_第4张图片

深入浅出系列Hbase之原理及概念(1)_第5张图片

    在数据的逻辑概念来说,表是按照rowkey范围进行划分为不同的region, 而region按照不同的列族划分不同的store,每个store中包含一个memstore和0个或多个storefile

    建表时默认只有一个region,如果指定split key,就会有多个region。 当表的行数超过阈值,表就水平分割2个region, 可以把region理解为子表。

    不同的region会被hmaster分配到合适的hregionserver来管理。比如一个表切分成很多的region,不代表很多的region只在一个机器节点上,假如一张表切分成3个region,有可能region1在第一台机器节点上,region2在第二台上,region3在第三台上,当select进行查询的时候,这样便可以充分利用三台机器的IO(磁盘/网络)。另外不同的Region是存储在不同的Store中的。

    大家也看到MemStore使用红色标注,这是hbase调优的重点,这里暂时先不说,后面会重点进行介绍。

    数据是以KV结构进行存储,每个KV只存储一个单元格的cell数据,而且不同的CF数据是存储在不同的File里

 

你可能感兴趣的:(Hbase)