搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Cpp五条
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
用GVIM/VIM写Verilog——VIM配置分享_gvim svstemverilog 插件
2
深度学习之RNN循环神经网络(理论+图解+Python代码部分)
3
数据流分析(一)_数据流分析怎么写
4
python 之弗洛伊德算法_floyd-warshall算法python代码
5
FPGA 静态时序分析与约束(2)_quartus unconstrained path
6
微信小程序开发与应用——字体样式设置_微信小程序style属性
7
多无人机对组网雷达的协同干扰问题 数学建模
8
Python实现mysql数据库验证_python3 构建一个源和目的都是mysql的数据校验程序
9
Win10安装安卓模拟器入坑记_exagear win10
10
岛屿数量(dfs)
当前位置:
article
> 正文
HBase数据模型和表设计_hbase表设计和数据操作
作者:Cpp五条 | 2024-04-28 13:02:41
赞
踩
hbase表设计和数据操作
文章目录
术语
Table
Row
Column Family(列簇或列族)
Column
Column Qualifier
Cell
Timestamp
标识设计要点
hbase与关系型数据库对比
设计时考虑因素
设计要点
行键rowkey设计
列簇设计
列簇属性
总结
术语
Table
Hbase的table由多个行组成。
Row
一个行在Hbase中由一个或多个有值的列组成。Row按照字母进行排序,因此行键的设计
非常重要
。这种设计方式可以让有关系的行非常的近,通常行键的设计是网站的域名反转,比如(org.apache.www, org.apache.mail, org.apache.jira),这样的话所有的Apache的域名就很接近。
Column Family(列簇或列族)
列簇在物理上包含了许多的列与列的值,每个列簇都有一些存储的属性可配置。例如是否使用缓存,压缩类型,存储版本数等。在表中,每一行都有相同的列簇,尽管有些列簇什么东西也没有存。
Column
列由列簇加上列的标识组成,一般是“列簇:列标识”,创建表的时候不用指定列名(列标识)
Column Qualifier
列簇的限定词,理解为列的唯一标识。但是列标识是可以改变的,因此每一行可能有不同的列标识
Cell
Cell是由row,column family,column qualifier包含时间戳与值组成的,一般表达某个值的版本。
Timestamp
时间戳一般写在value的旁边,代表某个值的版本号,默认的时间戳是写入数据的那一刻,也可以在写入数据的时候指定不同的时间戳
标识设计要点
只要是数据库都存在,模式设计的问题,关系型中有模式设计的范式,Hbase作为列式存储数据库,其模式设计也非常重要。
hbase
与关系型数据库对比
属性
hbase
RDBMS
数据类型
只有字符串
丰富的数据类型
数据操作
增删改查,不支持join
各种各样的函数与表连接
存储模式
基于列式存储
基于表结构和行式存储
数据保护
更新后仍然保留旧数据
数据替换
可伸缩性
轻易增加节点
需要中间层,牺牲性能
设计时考虑因素
Hbase关键概念:表,rowkey,列簇,时间戳
这个表应该有多少列簇
列簇使用什么数据
每个列簇有有多少列
列名是什么,尽管列名不必在建表时定义,但读写数据是要知道的
单元应该存放什么数据
每个单元存储多少时间版本
行键(rowKey)结构是什么,应该包含什么信息
设计要点
行键rowkey设计
说明
行键是
关键
部分,直接关系到后续服务的访问性能。如果行键设计不合理,后续查询服务效率会成倍的递减。
细节
rowkey全局唯一,如果重复添加数据会覆盖。
避免单调的递增行键,因为Hbase的行键是有序排列的,这样可能导致一段时间内大部分写入集中在某一个Region上进行操作,负载都在一台节点上。可以设计成: [metric_type][event_timestamp],不同的metric_type可以将压力分散到不同的region上
行键短到可读即可,因为查询短键比长键性能好些,所以设计时要权衡长度,最好不要超过16个字节。
行键不能改变,唯一可以改变的方式是先删除后插入
列簇设计
说明
列簇是一些列的集合,一个列簇的成员有相同的前缀,以冒号(:)作为分隔符。
细节
当前Hbase
不能很好处理
2~3个以上的列簇,所以尽可能让列簇少一些,如果表有多个列簇,列簇A有100万行数据,列簇B有10亿行,那么列簇A会分散到很多的Region导致扫描列簇A的时候效率底下。
列簇名的长度要尽量小,一个为了节省空间,另外加快效率,比如d表示data,v表示value
列簇属性
HFile数据块,默认是64KB,数据库数据的大小影响数据块索引的大小。数据块大的话一次加载进内存的数据越多,扫描查询效果越好。但是数据块小的话,随机查询性能更好
数据块缓存,数据块缓存默认是打开的,如果一些比较少访问的数据可以选择关闭缓存
数据压缩,压缩会提高磁盘利用率,但是会增加CPU的负载,看情况进行控制
总结
了解hbase设计是影响hbase查询效率的关键因素,信息的排列方式,决定数据的聚集性,使用时根据实际场景设计,如数据多对一时,增加索引表,实现多种信息规则关联。如复杂计算过滤查询,可使用Elasticsearch作为hbase查询入口。
实践出真知,任何理论知识必须经历实际场景的考验,才能真正学会,融汇贯通。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Cpp五条/article/detail/502396
推荐阅读
article
HBase
表
数据
的
读、写
操作
与综合
操作
_试使用
storm
完成
hbase
数据
库
的
读取和写入
操作
...
实验任务1:使用MapReduce批量将
HBase
表中
数据
导入到HDFS上。表名和表中
数据
自拟。实验任务2:使用MapR...
赞
踩
article
HBase
的
编程实践(实验3_熟悉常用
的
HBase
操作)_
有
以下
关系型
数据
库中
的
表
和
数据
,
要求
将其转...
要求
当参数column为某一列族名称时,如果底下
有
若干个列限定符,则要列出每个列限定符代
表
的
列
的
数据
;* ② 删除指定列...
赞
踩
article
Hbase
常用
Shell
命令
_
1
.通过
shell
命令
创建
hbase
表
students
***(*...
Hbase
常用
Shell
命令
_
1
.通过
shell
命令
创建
hbase
表
students
***(***为自己的学号),...
赞
踩
article
[
HBase
]
hbase
的
基本
操作
(
一
)_
hbase
操作
...
HBase
是
一
个分布式
的
、面向列
的
开源数据库。
HBase
是Google Bigtable
的
开源实现,它利用Hadoop ...
赞
踩
article
hbase
shell
操作总结...
2019独角兽企业重金招聘Python工程师标准>>> ..._
hbase
shell
实验总结h...
赞
踩
article
HBase
安装配置_
setting
hbase
_
conf
_
dir
=/etc/
hbase
/
conf
b...
HBase
安装配置①下载压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录)官网下载地址:https://m...
赞
踩
article
HBase
Shell基本操作_
hbase
shell
interval
=1...
相关知识
HBase
Shell基本操作命令如表所示:环境准备开启hadoop相关进程开启
hbase
相关进程输入
hbase
...
赞
踩
article
学习
总结
二十三
:
深入
学习
hbase
数据库_
深入
学习
hbase
...
1.
hbase
的region块大小,是由
hbase
-site.xml文件中的_
深入
学习
hbase
深入
学习
hbase
...
赞
踩
article
HBase
shell
命令
知识
总结
(一)_
hbase
shell
实验
总结
...
HBase
shell
命令
知识
总结
1.
HBase
访问方式
shell
命令
行客户端java api本文主要
总结
关于shel...
赞
踩
article
【152期】
美团
一面:
为什么
选用
Hbase
,
Hbase
和
MySQL
有
啥区别?...
图片。【152期】
美团
一面:
为什么
选用
Hbase
,
Hbase
和
MySQL
有
啥区别? ...
赞
踩
article
【总结】
hbase
master
重启
恢复
失败
问题
修复...
查阅了一番资料,最终定位到是MasterProcWals pv日志过多,在
重启
HBase Master 的过程中,HBa...
赞
踩
article
【
1
52期】美团一面
:
为什么
选用
Hbase
,
Hbase
和
MySQL
有
啥区别?(
1
)...
图片。【
1
52期】美团一面
:
为什么
选用
Hbase
,
Hbase
和
MySQL
有
啥区别?(
1
) ...
赞
踩
article
Hbase
java
API与
过滤器
...
Hbase
java
API与
过滤器
Hbase
java
API与
过滤器
一、Hbase jav...
赞
踩
article
Hadoop
之
HBase
基本简介_
hadoop
hbase
...
目录1.
HBase
的基本概念2.
HBase
的工作流程1.
HBase
的基本概念1.1基本概念
HBase
运行在HDFS上,所...
赞
踩
article
进击
大
数据
系列
(九)
Hadoop
架构
数据
库
Hbase
...
点击下方名片,设为星标!回复“1024”获取2TB学习资源!前面介绍了
Hadoop
架构基石 HDFS、统一资源管理和调...
赞
踩
article
大
数据
-
NoSQL
数据
库
:
HBase
【基于
Zookeeper
/
HDFS
的
分布式
、
高
并发
、
可扩展
的
No...
HBase
适合场景
:
单表超千万,上亿,且
高
并发!
HBase
不适合场景
:
主要需求是
数据
分析,比如做报表。
数据
量规模不
大
,对...
赞
踩
article
HBase
优化
拆分
和
合并
_
hbase
性能优化:优化
拆分
和
合并
...
摘录自《
HBase
权威指南》
HBase
内置的处理
拆分
和
合并
的机制一般是合理的,并且它们按照预期处理任务,但在某些情况...
赞
踩
article
HBase
-
Region
的
拆分
与合并_
hbase
region
merge
...
1
Region
拆分
一个
Region
代表一个表的一段Rowkey的数据集合,当
Region
太大,Master会将其
拆分
。...
赞
踩
article
HBase
系列 (五)
HBase
优化
之
Region
管理
--
Region
合并
与
拆分
_
hbase
性能...
写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿。这名字是来自world order...
赞
踩
article
HBase
-
拆分
合并
和调优
参考
...
本篇文章不是自己总结的,而是
参考
资料上进行摘抄的,本文涉及到
HBase
的Region
拆分
合并
以及HFile
拆分
合并
以及其...
赞
踩
相关标签
hbase
数据库
大数据
hadoop
shell
ruby
Hbase
hdfs
mysql
MasterProcWALs
hbasemaster
重启失败