HBase行键设计
3分钟了解HBase行键设计
HBase行键需要满足如下原则:
唯一原则:行键对应关系型数据库的唯一键,系统设计之初必须考虑有足够的唯一行键去支持业务的数据量。
长度原则:长度适中,一般从几十到一百字节,建议使用定长,方便从行键提取所需数据,而无须查询出数据内容以节省网络开销。
散列原则:避免递增,否则读写负载都会集中在某个热点分区,降低性能,甚至引起分区服务器过载而宕机。
HBase行键设计技巧
由于HBase不支持二级索引,所以HBase行键作为唯一的也是最有效的索引,需要尽可能多的糅合各种查询条件以提高查询效率,常见的设计技巧有:
反转补齐:对于用来存储实体数据的表,通常将实体ID(如用户ID)反转补齐位数后作为行键的开始,这样首先满足了对该实体数据查询的需求,同时由于反转了实体ID,所以最近产生的实体以及其数据不会落到同一个Region,避免了热点区间的产生。
使用GeoHash:GeoHash算法可以用来将多维数据映射为一维字符串,尤其是基于空间的经纬度数据,空间上靠近的经纬度点映射后的一维字符串在字典顺序上也靠近(当然会有特殊的临界问题)。
OpenTSDB: OpenTSDB是基于HBase的一个存储时序数据的数据库应用,通常用来存储一些系统的监控数据或者系统日志,OpenTSDB的行键设计类似对HBase的行键做了一个二次索引,格式为:
UID___matric___+TimeBase+UID___tag1key___+UID___tag1value___+UID___tag2key___+UID___tag2value___+UID___tagNkey___+UID___tagNvalue___
其行键设计会将所有的监控指标或者需要查询的业务标签均映射到一个等长的UID,然后将监控指标的UID作为行键的开始,这样设计有几个好处:
- 因为通常查询监控数据的时候都会选定一个监控指标(如CPU、内存等),这样相同监控指标的数据会相邻存储,提供查询效率。
- 将监控指标映射为等长的UID可以减少行键的长度与重复度,减少存储空间,同时可以方便的从行键根据偏移量反向推演出监控指标。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
elasticsearch插件二—— kibana插件安装详解(Elasticsearch教程09)|MVP讲堂
作者:阿里云MVP 铭毅 一、kibana 插件介绍kibana 插件提供了Marvel监控的UI界面。 kibana是一个与elasticsearch一起工作的开源的分析和可视化的平台。使用kibana可以查询、查看并与存储在elasticsearch索引的数据进行交互操作。使用kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。 kibana使得理解大容量的数据变得非常容易。它非常简单,基于浏览器的接口使我们能够快速的创建和分享显示elasticsearch查询结果实时变化的仪表盘。 二、kibana 插件安装【前提】:操作系统版本[root@5b9dbaaa148a config]# cat /etc/issue CentOS release 6.6 (Final) 步骤1:下载和安装公有的签名key。rpm
- 下一篇
HBase-拆分合并和调优参考
本篇文章不是自己总结的,而是参考资料上进行摘抄的,本文涉及到HBase的Region拆分合并以及HFile拆分合并以及其他的调优参考,如果你参考本文的话,请一定在尝试之后在修改配置,本文只是自己的一个学习记录方便以后查阅 参考了 HBase权威指南 和 HBase不睡觉书 尽信书不如无书,在使用的时候需要先测试!!!!! 调大堆内存 默认RegionServer的内存是1GB,而MemStore默认是占百分之四十,所以MemStore才有400MB空间,在实际应用中,很容易就会被写阻塞了,可以通过指定HBASE_HEAPSIZE参数来调整所有HBase实例占用的内存大小,不管是Master还是RegionServer #在hbase-env.sh中 # The maximum amount of heap to use. Default is left to JVM default. export HBASE_HEAPSIZE=4G #原来是1G,现在修改为4G 上面参数会影响整个HBase实例,包括master和region,这样的话master和RegionServer都会占用4G...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程