文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

HBase框架学习之路

2024-04-02 19:55

关注

1 背景知识

1.1 解决问题

解决HDFS不支持单条记录的快速查找和更新的问题。

1.2 适用情况

2 设计理念

2.1 概述

2.1.1 简介

2.1.2 HBase特性:

2.1.3 劣势

2.2 设计架构

2.2.1 基础概念

概念中文解释备注举例
Table由多行组成...
Row由一个Key和一个或者多列组成

Column由列族和列限定符组成列族:列限定符 ;行与行之间的列可以相差很多
Column Family列族物理上存储多个列;为提高性能设计的;表格创建时需要置顶content
Column Qualifier列限定符列族中数据的索引表格创建时不需要指定,可以在任何时候添加content:html
Cell单元由行、列族、列限定符、值和代表版本的时间戳组成

TimeStamp时间戳用来表示数据的版本可以使用系统时间也可以自己指定

2.2.1.2 例子本例子取自官方文档

Row KeyTime StampColumnFamily contentsColumnFamily anchorColumnFamily people
"com.cnn.www"t9
anchor:cnnsi.com = "CNN"
"com.cnn.www"t8
anchor:my.look.ca = "CNN.com"
"com.cnn.www"t6contents:html = "…

"com.cnn.www"t5contents:html = "…"

"com.cnn.www"t3contents:html = "…

com.example.wwwt5contents:html: "..."
people:author: "John Doe"

说明

  1. 表格格式不是唯一和最精确的表达方式,还可以用Json格式来表达

  2. 表格中的空白单元不会占用物理存储空间,只是概念上存在

2.2.1.3 操作

操作API注意点与版本的关系
GetTable.get返回指定行的属性;Scan的第一行若没有指定版本,则返回版本值最大(但可能不是最新的)的数据;可以通过设置MaxVersion的值修改返回的数据条数
ScanTable.scan返回满足条件的多行同上
PutTable.putKey存在则更新Key不在则插入;通过 Table.put (写缓存) 或者Table.batch (没有写缓存)默认使用系统时间;只要key、column和version相同就可以实现覆盖;插入时可以指定版本
DeleteTable.delete1.删除指定列;2.删除列的所有版本;3.删除特定列族的所有列1. 删除操作不会立刻执行,而是给该数据设置墓碑标签,在空间清理的时候再执行死亡数据和墓碑的清除工作;2.通过在 hbase-site.xml.中hbase.hstore.time.to.purge.deletes属性来设置TTL(生存时间)

说明

  1. 版本数的最大值和最小值是可以指定的,并且会影响操作

  2. 版本(时间戳)是用来管控数据的存活时间的,最好不要手动设置

2.2.1.4 局限

1)Delete操作会影响Put操作:原因在于Delete操作并不是立刻执行,而是给死亡数据设置墓碑标签,那么如果当你执行了一个Delete版本低于等于T的操作,而后有插入Put了一个版本为T的数据,此时新Put的数据也会被打上标签,那么会在系统的下一次清理工作中将打上标签的数据全部清理掉,执行查询时则会获取不到新Put的数据,如果你不手动设置版本的话,版本采用系统默认时间,则不会出现这种情况。

2)清理工作会影响查询:创建三个版本为t1,t2,t3的单元,并且设置最大版本数为2.所以当我们查询所有版本时,只会返回t2和t3。但是当你删除版本t2和t3的时候,版本t1会重新出现。显然,一旦重要精简工作运行之后,这样的行为就不会再出现。

查看更多关于数据模型的信息

2.2.2 架构

2.2.2.1 架构特点

1)主从架构
2)有三个组件:

组件名称组件主要功能
HMaster负责Region的分配和DDL操作(创建,删除表)
HRegionServerRegionServer负责数据的读写;和客户端通讯
ZooKeeper维持集群的活动状态

3)底层储存是HDFS

2.2.2.2 组件

hbase:meta:所有region的信息

1)结构:

Key

Values

2)存储位置:ZooKeeper中

HMaster:控制者

HRegionServer:HBase实际读写者

本小节可参考Region Server详解

ZooKeeper:协调者

Region:Region是HBase数据存储和管理的基本单位

本小节可参考Region详解

2.3 相关流程

2.3.1 首次读写流程

本小节可参考Region Server详解中的首次读写流程

2.3.2 写流程

本小节可参考Region Server详解中的写流程

2.3.2 读流程

本小节可参考Region Server详解中的读流程

2.4 相关机制

2.4.1 Compaction机制(压缩合并)

2.4.1.1 次压缩

本小节可参考Region Server详解中的次压缩部分

2.4.1.2 主压缩

本小节可参考Region Server详解中的主压缩部分

2.4.2 WAL Replay机制

本小节可参考Region Server详解中的WAL Replay

2.5 版本更新内容

2.5.1 .META表 =>hbase:meta

2.5.1.1 -ROOT-和.META

在0.96.x之前是存在-ROOT-和.META两个表格来维持region的元数据

1)结构:

Key

.META. region key (.META.,,1)

Values

 info:regioninfo (hbase:meta的序列化实例)
 info:server (存储 hbase:meta的RegionServer的server:port)
 info:serverstartcode (存储 hbase:meta的RegionServer的启动时间)

2)读取region位置信息的流程

  1. 从ZooKeeper中读取-ROOT- Table所在HRegionServer

  2. 从该HRegionServer中根据请求的TableName,RowKey读取.META. Table所在HRegionServer

  3. 从该HRegionServer中读取.META. Table的内容而获取此次请求需要访问的HRegion所在的位置

  4. 访问该HRegionSever获取请求的数据

2.5.1.2 hbase:meta

本小节可参考2.2.2.2 组件中的hbase:meta和2.3 相关流程中的首次读写流程进行比较

2.5.1.3 升级的目的

1)0.96.x版本之前是参考Goole的BigTable设计的,从读取数据请求发起到真正读取到数据要经过4个步骤,Google设计BigTable的目的在于它的数据量巨大,多层的schema结构能够存储更多的Region,但是随着而来的就是访问性能的下降。
2)一般公司的数据量没有Google那么大,所以去掉-ROOT-表,留下.META(hbase:meta)表,提高Region的大小,不仅可以满足存储需求,而且访问性能得到提高。

2.5.2 HLog =>WAL

2.6 跟其他框架的联系

待续...

2.7 性能调优

待续...

2.8 高级特性

待续...

3 项目实战

3.1 入门指南

3.1.1 环境搭建

本小节可参考HBase部署入门指南

3.1.2 入门程序

本小节可参考HBase Shell 练习、HBase Java API 练习、使用MapReduce操作HBase

3.2 技术难点

待续...

3.3 开发中遇到的问题

待续...

3.4 应用

3.4.1 OpenTSDB开发

待续...

4 声明

待续部分将会后期不定期更新,敬请期待。


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯