hbase 数据模型进阶

在这里插入图片描述
rowkey cf1:q2 获取最新数据
rowkey , CF1, q2, t2 四维数据库,获取指定列族指定列指定时间戳的数据
rowkey 列族 列名 时间戳 四个纬度

row key

  1. 决定一行数据
  2. 按照字典顺序排序的。
  3. Row key 只能存储 64k 的字节数据(UTF-8 编码格式下 2.133w 多个汉字)

Column Family 列族 & qualifier 列

  1. HBase 表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分
    预先给出。 create ‘tb_user’, ‘cf’ 或 create ‘test’, ‘course’;
  2. 列名以列族作为前缀,每个“列族”都可以有多个列成员(column);如 course:math,
    course:english, 新的列族成员(列)可以随后按需、动态加入;
  3. 权限控制、存储以及调优都是在列族层面进行的;
  4. HBase 把同一列族里面的数据存储在同一目录下,由几个文件保存。

Cell 单元格

由行和列的坐标交叉决定;
单元格是有版本的;
单元格的内容是未解析的字节数组;
由{row key, column( = +), version} 唯一确定的单元。
cell 中的数据是没有类型的,全部是字节数组形式存贮。

Timestamp 时间戳

rowkey - liezu:biaozhifu version cell value
在 HBase 每个 cell 存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本
之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。 rowkey cf name
时间戳的类型是 64 位整型。
时间戳可以由 HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。
在 HBase 0.96 之前,保留的默认版本数为 3,但是在 0.96 中,更新版本已更改为 1。

HLog(WAL log)

WAL:WRITE AHEAD LOG
HLog 文件就是一个普通的 Hadoop Sequence File,Sequence File 的 Key 是HLogKey 对象,HLogKey 中记录了写入数据的归属信息,除了 table 和 region 名字外,同时还包括 sequence number 和 timestamp,timestamp 是”写入时间”,sequence
number 的起始值为 0,或者是最近一次存入文件系统中 sequence number。HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue。键(四个维度)value(单元格的值)
该文件作用是保证数据不丢失。

目录表

目录表 hbase:meta 作为 HBase 表存在,并从 hbase shell 的 list 命令中过滤掉,但实际上是一个表,就像任何其他表一样。

hbase:meta 表(以前称为.META.),保有系统中所有 region 的列表。hbase:meta存储在 zookeeper 中。

给 RegionServer 赋值 region (最好理解)
当 hbase 启动的时候,region 通过如下步骤赋值给 regionserver:
1、系统启动的时候,master 调用 AssignmentManager(赋值管理器)
2、AssignmentManager 在 hbase:meta 中查找已经存在的 region 条目
3、如果 region 条目依旧是正确的(比如说 regionserver 依然在线),就保留该赋值信息
4、如果赋值不正确,就调用 LoadBalancerFactory 对 region 进行赋值。负载平衡器将region 赋 值 给 一 个 regionserver 。 hbase1.0 中 默 认 的 负 载 均 衡 器 是StochasticLoadBalancer。
5、在 regionserver 打开 region 的时候使用 regionserver 的开始代码更新 hbase:meta中 regionserver 的赋值。

当客户端访问的时候,regionserver 失败的时候:

1、由于 regionserver 宕机,region 立即不可用
2、master 检测到该 regionserver 的失败
3、认为 region 的赋值不正确,使用启动顺序的流程重新给 region 赋值
4、正在进行的查询会重试,而不是丢失。
5、在下述时间内操作会转移到新的 regionserver:zookeeper session timeout+splittime+assignment/replay time

Client->regionserver1(宕机了,在 zk 上对应的临时节点一定时间后消失)
Client->hbase:meta-->regionserver2(重新分配一个 regionserver)
Client->regionserver2->对应的 region

客户端

HBase 客户端查找关注的行范围所在的 regionserver。它通过查询 hbase:meta 表来完成此操作。在找到所需的 region 之后,客户端联系提供该 region 的 RegionServer,而不是通过 Master,并发出读取或写入请求。此信息缓存在客户端中,以便后续请求无需经过查找过程。如果 Master 的负载均衡器重新平衡或者由于 regionserver 宕机,都会重新指定该 region 的 regionserver。客户端将重新查询目录表以确定用户 region 的新位置。通过 Admin 进行管理功能的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值