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里面

相关实践学习
云数据库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 表的设计原则
938 0
【Hbase】(十一)详解 HBase 表的设计原则
|
存储 缓存 Oracle
Hbase rowkey设计原则,热点问题
Hbase rowkey设计原则,热点问题
|
存储 分布式数据库 索引
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
82 0
|
8月前
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
140 0
|
4月前
|
分布式计算 Hadoop 关系型数据库
Hadoop任务scan Hbase 导出数据量变小分析
Hadoop任务scan Hbase 导出数据量变小分析
53 0
|
3月前
|
存储 分布式计算 Hadoop
Hadoop中的HBase是什么?请解释其作用和用途。
Hadoop中的HBase是什么?请解释其作用和用途。
40 0
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.16 安装HBase
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
82 1
Hadoop学习笔记(HDP)-Part.16 安装HBase
|
8月前
|
分布式计算 Hadoop 分布式数据库
开机时监听Hadoop和Zookpeer启动之后再启动Hbase
开机时监听Hadoop和Zookpeer启动之后再启动Hbase
|
8月前
|
存储 分布式计算 Hadoop
Hadoop之Hbase安装和配置
Hadoop之Hbase安装和配置
715 0