hbase教程1 (基本概念)
1 最基本的概念
hbase是一个map
2 数据层面
ceil
- rdbms中,表由行和列组成,由行、列共同确定一个基本的存储单元
- hbase中,表由row key和colunm family组成,由row key和column共同确定的基本存储单元,就是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 物理层面
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.
- 保存所有用户表的region的元数据信息
- 该表的rowkey由表名、从表中哪个rowkey开始、时间戳 3个要素拼接而成
- 该表的info列族的server类有记录region的地址从而可以寻址到region
- 该表本身的元数据保存在-ROOT-表
-ROOT-
- 保存 -META-表的region的元数据信息
- 该表本身保存在哪台服务器的信息保存在zookeeper