1 最基本的概念

hbase是一个map

2 数据层面

hbase 中cell是什么 hbase一个cell大小_hadoop

ceil

  • rdbms中,表由行和列组成,由行、列共同确定一个基本的存储单元
  • hbase中,表由row keycolunm family组成,由row keycolumn共同确定的基本存储单元,就是ceil
  • 不同的是,ceil中不仅保存了数据,还保存了数据的版本time stamp

row key

  • 用来检索数据,具体检索方式后面会说
  • 最大为64kb的byte[]
  • hbase中数据按row key的字典顺序存储
  • 每条数据的唯一标识

column family

  • 创表的时候要指定column family,就像rdbms创表时要指定列一样
  • 一张表可以有多个column family,但最好不要过多
  • 一个column fammily下面有多个column

column

  • 可以理解为关系型数据库的列
  • 不同的是column不需要创建表的时候就指定

time stamp

  • 标识每个ceil的版本
  • 默认为当前时间戳
  • 存储为64位int

3 物理层面

hbase 中cell是什么 hbase一个cell大小_大数据_02

store file

  • store file是存储数据的,在hdfs上叫做hfile,可以用命令查看hfile的内容
    ${HBASE_HOME}/bin/hbase hfile -v -f hdfs://10.81.47.41:8020/hbase/default/TEST/1418428042/DSMP/4759508618286845475
  • store file保存在硬盘上面
  • store file中保存表数据(键值对)的基本单位是data block,每个data block不会超过64k(可配置)
  • 可参考http://cloudepr.blogspot.com/2009/09/hfile-block-indexed-file-format-to.html
  • 0~n个store file 和1个 memsotre组成一个 store

memstore

  • memstore保存在内存上
  • memstore达到阈值后,会复制成一个新的store file,然后清空自身
  • 检索数据是先查memstore再查store file
  • 0~n个store file 和1个 memsotre组成一个 store

store

  • 一个store保存一个colum family
  • 1~n个store组成一个region

region

  • 每张表对应一个或多个region,一个region只保存一张表的信息
  • 默认到10g的时候,会等分成2个region
  • 相同的region的数据只会在一个节点上

4 节点角色

master

  • 分配region给 region server
  • region 的负载均衡
  • 维护region的元数据
  • 责任不是太大,负载不是很高

region server

  • 维护master分配的region
  • 将自己维护的region中过大的region切分
  • 处理自己维护的region的io请求

4 系统表

.META.

hbase 中cell是什么 hbase一个cell大小_nosql_03


- 保存所有用户表的region的元数据信息

- 该表的rowkey由表名、从表中哪个rowkey开始、时间戳 3个要素拼接而成

- 该表的info列族的server类有记录region的地址从而可以寻址到region

- 该表本身的元数据保存在-ROOT-

-ROOT-

  • 保存 -META-表的region的元数据信息
  • 该表本身保存在哪台服务器的信息保存在zookeeper