Hbase行健设计原则

简介:

--原理
Hbase是一个分布式的 面相列的数据库,他和一般关系型数据库最大的区别是:HBase很合适与存储非结构化的数据,还有就是它基于列的而不是基于行的模式.
既然HBase是采用KeyValue的列存储,那么RowKey就是KeyValue的key了,表示唯一一行,RowKey也是一段二进制码流,最大长度为64KB内容可以由使用的用户自定义,数据加载时,一百也是根据RowKey的二进制序由小到大的进行.
HBase是根据RowKey来进行检索的,系统通过找到某个RowKey所在的Region然后将查询数据的请求路由到该Region获取数据,HBase的检所支持3种方式.
(1)通过单个RowKey访问,即按照某个RowKey键值进行get操作,这样获取唯一一条记录.
(2)通过RowKey的range进行scan ,即通过设置startRowKey和endRowKey,在这个范围内进行扫描.
(3)全表扫描.即直接扫描整张表中所有行记录.
HBASE按单个RowKey检索的效率是很高的,耗时在1毫秒以下,每秒中可获取1000~2000条记录,不过非key列的查询很慢.
分类
RowKey长度原则
RowKey是一个二进制码流,RowKey的长度被很多开发者建议设计在10~100个字节,不过建议越多越好,不要超过16个字节.
原因如下:
(1)数据的持久化文件HFile中是按照KeyValue存储的,如果RowKey过长比如100个字节,1000万列数据光RowKey就要占10万亿个字节,将近1G数据,这回极大影响Hfie的存储效率
(2)MenStore将缓存部分数据到内存,如果RowKey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率,因此RowKey的字节长度越短越好.
(3)目前操作系统都是64位系统,内存8字节对齐,控制在16字节

RowKey散列原则
如果RowKey是按时间戳的方式递增,不要讲时间放在二进制码的前面,建议将RowKey的高位作为散列字段,由程序循环生成,地位放时间字段,这样将提升数据均衡分布在每个RegionServer实现负载均衡的几率,如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer 降低查询效率.

1.随机数
2.UUID
3.MD5,Hash,等加密算法
4.业务有序数反向

RowKey唯一原则
必须在设计上保证其唯一性
RowKey是hashBase里面唯一的索引,对于某些查询频繁的限定条件数据需要把内容放在rowkey里面

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
存储 缓存 分布式计算
【Hbase】(十一)详解 HBase 表的设计原则
【Hbase】(十一)详解 HBase 表的设计原则
1276 0
【Hbase】(十一)详解 HBase 表的设计原则
|
存储 缓存 Oracle
Hbase rowkey设计原则,热点问题
Hbase rowkey设计原则,热点问题
|
存储 分布式数据库 索引
|
7月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
165 0
|
3月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
126 4
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
90 4
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
40 3
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
64 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
111 2
|
2月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
66 2