列存储库Hbase入门基础

接触hbase几个月,都没能梳理梳理,今天又重新回顾梳理一番。

首先Hbase是一个NoSql的数据库。其特点可以存储松散数据类型,其存储的数据类型可以近似认为是一种关系映射(但又不是简单的映射),所以有人说hbase是多个多级的hashmap组成。它还可以动态的改变表的结构,增加列、保留版本等。

关键词

首先我们要知道hbase的专有名词

CF(Column Family)

也叫做列族,一个列族中可以有多个列,且这些列可以动态的添加。
其结构类似于{name=>’zhangsan’,age=>’12’,sex=>’man’,timestamp=1543319294288},前面的key也叫做Qualifier,后面是key所对应的值。timestamp是时间戳,一般默认每个单元格有3个时间戳的版本数据,这个值一般是系统自动生成,对于相同Qualifier的数据会保存三个版本。

key-row

key-row作为CF的’key’值,每一个key-row都对应着表中每个CF。

master

Hbase Master(HMaster)的作用主要是对HRegion的维护,管理用户对表的CRUD操作。
其维护工作主要包括:

  • 管理HRegion服务器的负载均衡,并调整HRegion位置
  • HRegion分裂之后重新分配
  • 在HRegion服务器怠机后,把该服务器上的HRegion重分配
HRegion

当表超过了设置值时,Hbase会将表横向划分为不同的区域。在物理存储上来说,每个区域就是一个HRegion。一个HRegion会保存一段连续的数据。其数据范围是(开始key-row->结束key-row)

HRegion Server

一般一台机器运行一个HRegion Server。Server包括了存储部分和日志部分。
对于储存部分,一个HRegion Server来说,可以存储多个HRegion。每个HRegion中有一个MemStore和多个StoreFile(Hfile)。memStore是一个内存的实体,当数据写入时如果超过了这个内存的大小,会倾斜到具体的Hfile中。

zookeeper

大多数分布式数据库都依赖zookeeper来实现HA。Hbase也不例外。zookeeper是来协调各个机器的关系的,在hbase中zk会去协调HBase Master和Hbase Server的关系,保障了只有一个Master处于运行状态,并负责Server的注册。在zookerper端会储存一张ROOT表和META表,每个ROOT表存储的是每个元数据相对应的多个HRegion,META表对应的是每个HRegion对应的server。所以用户请求到来时会先到zk,zk会找到想对应的server。

《列存储库Hbase入门基础》 图片.png

数据模型

  • Hbase是一个底层基于HDFS文件系统的数据库。其特点是基于列储存,每一列族由1个或几个文件保存,不同的列族- 文件是分离的。
  • 在Hbase中的数据类型只有字符串没有其他类型。
  • 列名字的格式是<family>:<qualifier>,family创建后是固定的(一张表有一个列族集合),而后者quelifier是可变的
  • Hbase把同一个列族里面的数据存储到同一目录下,并且Hbase的写操作是锁行的。
  • Hbase每次更新都有一个时间戳,每个更新都是一个新的版本,Hbase默认保留3个版本。我们可以同时获得3个版本的数据。

设计规则

因为Hbase本身的效率很大部分取决于使用者的设计。所以概括一下应该有的设计规则

  • row-key的设计
    确定需要存储数据需要用什么方式设计行键,是时间顺序还是数据的本身顺序还是乱序。
    使用不同的顺序,每个HRegion中的数据也会不同。
    如果采用时序,那么HRegion中数据都是根据时间连续的。那么找到相同时间的某些数据效率很高。
    如果按照数据本身排序,那么数据将会连续。那么查询某一范围内的数据会高效。
    如果是乱序,可保证负载均衡。效率会降低。

  • 列族的设计
    列族我们应该做到的尽可能的少。因为在同一个表中,如果有多个列族,且数据不均匀,很容易导致效率地下。
    如cf1有数据1亿条,cf2有100条,当HRegion分裂成多个后,cf1保持着每个HRegion多条数据,但是cf2却分散得很开。这样进行查询会造成效率低下。

  • 尽量减少行列大小
    因为每个具体的值都是可以按索引查找,这样可以增加效率。索引一般是按照 行键、列族:列、时间戳、值进行的。如果行键和列过于庞大,效率自然就低了。

    原文作者:不能再白
    原文地址: https://www.jianshu.com/p/855de25dc823
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞