1.4 hbase 数据模型进阶

row key timestamp CF1 CF2 CF3
11248112 t3   CF2:m1=val1 CF3:k3=val3
t2 CF1:q2=val2
CF1:q3=val3
   
t1 CF1:q2=val1    

rowkey cf1:q2 获取最新数据

rowkey , CF1, q2, t2 四维数据库,获取指定列族指定列指定时间戳的数据

rowkey 列族 列名 时间戳 四个纬度

1.4.1 row key

1. 决定一行数据

2. 按照字典顺序排序的。

3. Row key 只能存储 64k 的字节数据(UTF-8 编码格式下 2.133w 多个汉字)

1.4.2 Column Family 列族 & qualifier 列

1. HBase 表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。 create 'tb_user', 'cf' 或 create ‘test’, ‘course’;

2. 列名以列族作为前缀,每个“列族”都可以有多个列成员(column);如 course:math,course:english, 新的列族成员(列)可以随后按需、动态加入

3. 权限控制、存储以及调优都是在列族层面进行的;

4. HBase 把同一列族里面的数据存储在同一目录下,由几个文件保存。

1.4.3 Cell 单元格

由行和列的坐标交叉决定;

单元格是有版本的;

单元格的内容是未解析的字节数组

由{row key, column( =<family> +<qualifier>), version} 唯一确定的单元。

cell 中的数据是没有类型的,全部是字节数组形式存贮。

1.4.4 Timestamp 时间戳

rowkey - liezu:biaozhifu version cell value

在 HBase 每个 cell 存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。 rowkey cf name

时间戳的类型是 64 位整型

时间戳可以由 HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间

时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

在 HBase 0.96 之前,保留的默认版本数为 3,但是在 0.96 中,更新版本已更改为 1

hbase 可以容忍不同 regionserver 之间的时间差 30s,否则失败。

做时间同步

yum install ntp -y
service ntpd start
chkconfig ntpd on

1.4.5 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(单元格的值)

该文件作用是保证数据不丢失。

1.4.6 目录表

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

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

表结构如下:

key:region 的 key,结构为:[table],[region start key],[region id]
values:info:regioninfo(当前 region 序列化的 HRegionInfo 实例)info:server(包含当前 region 的 RegionServer 的 server:port)info:serverstartcode(包含当前 region 的 RegionServer 进程的开始时间)

当表正在拆分时,将创建另外两列,称为 info:splitA 和 info:splitB。 这些列代表两个子 region。 这些列的值也是序列化的 HRegionInfo 实例。区域分割后,将删除此行。

空键用于表示表开始和表结束。具有空开始键的 region 是表中的第一个 region。如果某个 region 同时具有空开始和空结束键,则它是表中唯一的 region。

启动顺序:首先,在 zookeeper 中查找 hbase:meta 的位置。其次,使用服务器和启动代码更新 hbase:meta 的值。

给 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 进行管理功能的实现。

1.4.7 HBase  的特点

- 强大的一致读/写:HBase 不是“最终一致”的 DataStore。它非常适合高速计数器聚合等任务。

- 自动分片:HBase 表通过 region 分布在群集上,并且随着数据的增长,region 会自动分割和重新分配。

- 自动的 RegionServer 故障转移。

- Hadoop/HDFS 集成:HBase 支持 HDFS 作为其分布式文件系统。

- MapReduce:HBase 支持通过 MapReduce 进行大规模并行处理,将 HBase 用作 源 和 漏 。 HBASE->MR->HDFS  HBASE->MR->HBASE  HDFS->MR->HBASE

- Java 客户端 API:HBase 支持易于使用的 Java API 以进行编程访问。

- Thrift/REST API:HBase 还支持非 Java 前端的 Thrift 和 REST。

- 块缓存和布隆过滤器:HBase 支持块缓存和布隆过滤器,以实现大容量查询优化。

- 运维管理:HBase 提供内置网页,用于运维监控和 JMX 指标。

HBase 不支持行间事务(情侣转账 520) HBase 支持行内事务

Hbase(四)hbase 数据模型进阶相关推荐

  1. 一、Hbase介绍、数据模型、体系结构

    文章目录 HBase介绍 HBase数据模型 逻辑视图 逻辑视图 HBase体系结构 HBase系统特性 HBase的优点 HBase的缺点 HBase介绍 HBase数据模型 逻辑视图来看,HBas ...

  2. MongoDB、ES、Redis、HBase四种数据库的简单区别

    MongoDB和Elasticsearch的对比 适用场景 两者其实在很多使用场景上有重合之处, 是可以互相替代, 比如日志收集 但是某些方面两者又各有特色,比如: 如果打算使用一个文档型的业务数据库 ...

  3. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇) 五.Hbase集群搭建 1.准备工作(下载与时间同步) 2.安装解压 3.环境变量配置 4.文 ...

  4. Hbase教程(四) Hbase数据库JavaAPI接口

    Hbase教程(四) Hbase数据库JavaAPI接口 Hbase是一个分布式的.面向列的开源数据库,HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的 ...

  5. 【hadoop生态之Hbase】HBASE简介【笔记+代码】

    一.HBaes介绍 1.1.HBase简介 HBase是一个分布式的.面向列的开源数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. 大:上亿行.百万 ...

  6. HBase学习-HBase原理

    1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemSto ...

  7. BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略

    BigData之Hbase:Hbase数据管理的简介.下载.案例应用之详细攻略 目录 Hbase数据管理的简介--基于Hadoop的非结构化.基于列的数据存储的数据库 1.HBase的架构体现及与HD ...

  8. org.apache.hadoop.hbase.NotServingRegionException: hbase:meta,,1 is not online问题(暂时没有解决)

    在试图使用 sqoop从mysql导数据到hbase的过程中,发生下面报错: 2020-06-30 11:53:38,636 ERROR [main] tool.ImportTool (ImportT ...

  9. HBase的hbase shell 详解

    进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表,里面包含info,date两个列族 create 'user','info','data' creat ...

最新文章

  1. DevExpress的TextEdit控件没法调整高度解决
  2. 二十四、数据挖掘时序模式
  3. mysql 查询一个字段快还是一条记录快_mysql (优化)查询一条再筛选某个字段和直接查询该条的某个字段的效率比较...
  4. Hive 行转列,列传行 - Impala 暂不支持
  5. 紧急通知:招募 2000 名 IT 人学英语,免费培训!
  6. 计算机在工程制图上的应用,浅析计算机软件在工程制图中的应用
  7. TMOD 计时器 计数器
  8. 圆通物流轨迹查询(非第三方)
  9. vue设置必填项和判断必填项是否填入的弹窗提示
  10. php工作p7,广告服务端PHP高级工程师(P6-P7)职位描述与岗位职责任职要求
  11. Google 在遗忘权下删除了超过 17 万链接
  12. 通过JS代码实现Ping功能
  13. 文字生成图片的软件有哪些?这篇文章给你介绍三个
  14. [源码和文档分享]VC++实现的基于人眼状态的疲劳驾驶识别系统
  15. VMWare之——安装Windows Server 2012 后安装VMWare Tools报错
  16. YouTube-8M
  17. 32.android的推送协议,小米华为手机推送问题,简单了解一下
  18. Evaluate:huggingface评价指标模块入门详细介绍
  19. 京东撸货前期准备流程急设备要求
  20. Qt之生成PDF(图片生成,文本生成)

热门文章

  1. Android GPS学习 (二) :GPS 服务启动以及初始化流程
  2. 【网络安全】嘴对嘴教你利用XSS攻击,体验一次当黑客的感觉
  3. 微软鼠标测试软件,第一款win8鼠标:微软Sculpt全球首测
  4. 计算机网络安全评估的过程,基于BP 神经网络的计算机网络安全评估
  5. 谷歌本月重启办公室上班;小米成中国第一大手机厂商;英特尔处理器被曝存关键漏洞 | EA周报
  6. C语言运算符优先级以及记忆方式
  7. java jxls 科学计数_3、进阶之Jxls2的公式使用
  8. 011 《数据科学家访谈录》读后感
  9. 正运动三轴运动控制卡ECI3320控制合信EtherCat伺服
  10. intouch历史曲线