Hbase(四)hbase 数据模型进阶
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 数据模型进阶相关推荐
- 一、Hbase介绍、数据模型、体系结构
文章目录 HBase介绍 HBase数据模型 逻辑视图 逻辑视图 HBase体系结构 HBase系统特性 HBase的优点 HBase的缺点 HBase介绍 HBase数据模型 逻辑视图来看,HBas ...
- MongoDB、ES、Redis、HBase四种数据库的简单区别
MongoDB和Elasticsearch的对比 适用场景 两者其实在很多使用场景上有重合之处, 是可以互相替代, 比如日志收集 但是某些方面两者又各有特色,比如: 如果打算使用一个文档型的业务数据库 ...
- Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇)
Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇) 五.Hbase集群搭建 1.准备工作(下载与时间同步) 2.安装解压 3.环境变量配置 4.文 ...
- Hbase教程(四) Hbase数据库JavaAPI接口
Hbase教程(四) Hbase数据库JavaAPI接口 Hbase是一个分布式的.面向列的开源数据库,HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的 ...
- 【hadoop生态之Hbase】HBASE简介【笔记+代码】
一.HBaes介绍 1.1.HBase简介 HBase是一个分布式的.面向列的开源数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. 大:上亿行.百万 ...
- HBase学习-HBase原理
1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemSto ...
- BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
BigData之Hbase:Hbase数据管理的简介.下载.案例应用之详细攻略 目录 Hbase数据管理的简介--基于Hadoop的非结构化.基于列的数据存储的数据库 1.HBase的架构体现及与HD ...
- 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 ...
- HBase的hbase shell 详解
进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表,里面包含info,date两个列族 create 'user','info','data' creat ...
最新文章
- DevExpress的TextEdit控件没法调整高度解决
- 二十四、数据挖掘时序模式
- mysql 查询一个字段快还是一条记录快_mysql (优化)查询一条再筛选某个字段和直接查询该条的某个字段的效率比较...
- Hive 行转列,列传行 - Impala 暂不支持
- 紧急通知:招募 2000 名 IT 人学英语,免费培训!
- 计算机在工程制图上的应用,浅析计算机软件在工程制图中的应用
- TMOD 计时器 计数器
- 圆通物流轨迹查询(非第三方)
- vue设置必填项和判断必填项是否填入的弹窗提示
- php工作p7,广告服务端PHP高级工程师(P6-P7)职位描述与岗位职责任职要求
- Google 在遗忘权下删除了超过 17 万链接
- 通过JS代码实现Ping功能
- 文字生成图片的软件有哪些?这篇文章给你介绍三个
- [源码和文档分享]VC++实现的基于人眼状态的疲劳驾驶识别系统
- VMWare之——安装Windows Server 2012 后安装VMWare Tools报错
- YouTube-8M
- 32.android的推送协议,小米华为手机推送问题,简单了解一下
- Evaluate:huggingface评价指标模块入门详细介绍
- 京东撸货前期准备流程急设备要求
- Qt之生成PDF(图片生成,文本生成)
热门文章
- Android GPS学习 (二) :GPS 服务启动以及初始化流程
- 【网络安全】嘴对嘴教你利用XSS攻击,体验一次当黑客的感觉
- 微软鼠标测试软件,第一款win8鼠标:微软Sculpt全球首测
- 计算机网络安全评估的过程,基于BP 神经网络的计算机网络安全评估
- 谷歌本月重启办公室上班;小米成中国第一大手机厂商;英特尔处理器被曝存关键漏洞 | EA周报
- C语言运算符优先级以及记忆方式
- java jxls 科学计数_3、进阶之Jxls2的公式使用
- 011 《数据科学家访谈录》读后感
- 正运动三轴运动控制卡ECI3320控制合信EtherCat伺服
- intouch历史曲线