hbase存储优化


1、上面的2张图主要说明hbase的存储特点
(1)、每个值(每条记录的每一个列的值)的存储,都完整的存储了rowkey、column family、column、版本(时间戳),以及该列的值。
这样其实很浪费存储空间。对应的最直接的存储优化方案就是缩短rowkey、column family、column、版本(时间戳)的长度。在建表的时候就把这几项设置的极其短。
(2)、hbase是列式存储,天生就适合进行压缩等优化。
(3)、也可以通过(合并多个记录为一条记录)减少rowkey来减少表的记录数,达到减少key查找的效果,从而提升查询性能。代价就是每次查询的结果需要解析拆开,并且读取的对象比原来的单个记录要大。
2、hbase的存储优化的方案选择:压缩还是编码
(1)、参照这篇文章,对比了hbase编码和压缩2种优化方案的优缺点
A、REFIX_TREE编码方式不仅能起到压缩的效果
B、而且比较省CPU和内存。
http://blog.csdn.net/javastart/article/details/51820212
(2)、下面这篇文章,列出了PREFIX_TREE编码方式的优点:
A、REFIX_TREE提升从DataBlock中查找数据的效率。
B、省内存和cpu。
http://zjushch.iteye.com/blog/1843793
3、具体的优化命令
==========hbase命令================================================
disable 'logs:radwa'
alter 'logs:radwa', NAME => 'info', DATA_BLOCK_ENCODING => 'PREFIX_TREE' #修改编码(此编码效果最好)
#alter 'logs:radwa', NAME => 'info', COMPRESSION => 'snappy' #修改压缩
enable 'logs:radwa' #enable表后压缩还不会生效, 需要立即生效
major_compact 'logs:radwa' #这个命令执行的时间会相当长, 会对整个集群的CPU, IO有大量的占用
==========hbase命令================================================
4、优化效果
线上实测500G的表,编码后变为140G,效果还是不错的。
至于查询效率的提升,我并没有测试。理论上是应该有提升的,当然您需要根据自己的业务实际选择自己的优化方式。
这里任然有巨大的优化空间,比如把rowkey等设置的比较短,也可以省下很多存储空间。
hbase存储优化的更多相关文章
- hbase性能优化总结
hbase性能优化总结 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都 ...
- hbase 存储结构和原理
HBase的表结构 建表时要指定的是:表名.列族 建表语句 create 'user_info', 'base_info', 'ext_info' 意思是新建一个表,名称是user_info,包含两个 ...
- 解密OpenTSDB的表存储优化【转】
https://yq.aliyun.com/articles/54785 摘要: 本篇文章会详细讲解OpenTSDB的表结构设计,在理解它的表结构设计的同时,分析其采取该设计的深层次原因以及优缺点.它 ...
- HBase性能优化方法总结(转)
原文链接:HBase性能优化方法总结(一):表的设计 本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. ...
- 用mapreduce来操作hbase的优化
(1)scan.setCacheBlocks(false); 初始化map任务 TableMapReduceUtil.initTableMapperJob 本次mr任务scan的所有数据不放在缓 ...
- HBASE的优化、hadoop通用优化,Linux优化,zookeeper优化,基础优化
HBase 的优化3.1.高可用在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果Hmaster 挂掉了,那么整个 HBa ...
- HBase的优化
HBase的优化 高可用 在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果 Hmaster 挂掉了,那么整个 HBase ...
- Hbase性能优化
HBase性能优化方法总结 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户 ...
- HBase存储及读写原理介绍
一.HBase介绍及其特点 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDF ...
随机推荐
- finally中关闭资源
对finally中关闭资源是否还要使用try...catch老是感到迷惑,现在存个例子,省的忘了 public StringBuilder readTxtFile(File file){ String ...
- js 生成 UUID
在项目中遇到要生成 UUID 的需求,第一反应就是有没有原生的生成方法,找了找,发现没有,只能自己建立算法 function. 下面是我用的算法 function uuid(len, radix) { ...
- nodejs模块引用
模块的引用是后端语言非常重要的一部分,那么在nodejs中,如何做到这一点呢. 在引用其他模块时,常用的就是两种方法:exports,module.exports. 接下来,我们写一个demo来分辨其 ...
- NIO笔记---上
小弟前端时间由于开发个管理系统导致断更了近20天!!马上就要春招了,学习了一下NIO,将笔记记录下,希望和我一样的18届毕业生都能找到满意的公司!! 本文记录了NIO与IO的区别,缓冲区的数据存取,直 ...
- JS学习--DOM
1.概念 文档对象模型DOM,定义访问和处理HTML文档的标准方法.DOM将HTML呈现为带有元素.属性和文本的树结构(节点树). 2.document.getElementById("id ...
- 监控 Linux 性能的 18 个命令行工具[转]
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...
- web.config文件中配置数据库连接的两种方式
web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报 分类: 数据库(74) 在网站开发 ...
- float 的不确定性
很多时候,大家都知道,浮点型这个东西,本身存储就是一个不确定的数值,你永远无法知道,它是 0 = 0.00000000000000123 还是 0 = 0.00000000000999这样的东西.也许 ...
- JS前端验证代码
手机号码正则表达式验证: function checkPhone(){ var phone = document.getElementById('phone').value; if(!(/^1[345 ...
- Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...