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 ...
随机推荐
- 查阅API文档
Java的API文档:就一句话:应用程序接口 •API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口. •Java语言提供了 ...
- PHP判断变量是否为空的几种方法小结
1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_e ...
- js禁止滚动条移动
js禁止滚动条移动 var scrollFunc=function(e){ e=e||window.event; if (e&&e.preventDefault){ e.prevent ...
- Ubuntu中使用dnw工具:没有找到/dev/secbulk0
Ubuntu中使用dnw动机: 一. 之前没有用ubuntu中的dnw,想试试. 二. 因为换了win10系统,怕搞不定win10中dnw的驱动,想着在ubuntu中不用禁用数字签名啥的比较省心.(事 ...
- java_多线程4种实现方式
为了34月份回学校春招,不得不复习一下线程的四种实现方式,希望春招时能找到更好的公司,加油! 1.继承Thread类 class MyThread extends Thread{ private in ...
- MongoDB 基本操作学习笔记
// 查看所有数据库 show dbs // amdin 0.000GB // local 0.000GB // 使用数据库 use admin // switched to db admin // ...
- 《NET 设计规范》第 2 章 框架设计基础
<NET 设计规范>第 2 章 框架设计基础 要设计功能强大又易于使用的框架. 要理解广大开发人员并有针对性地为他们设计框架. 要理解各种编程语言,并为他们设计框架. 2.1 渐进框架 2 ...
- ABP框架源码学习之修改默认数据库表前缀或表名称
ABP框架源码学习之修改默认数据库表前缀或表名称 1,源码 namespace Abp.Zero.EntityFramework { /// <summary> /// Extension ...
- PHP可以通过类名调用非静态方法
今日有兄弟遇上一个问题,就是可以通过class名称直接调用该类中的函数,我测试了一下,确实可以,概念中是只有静态方法才可以这样调用的,现在 被刷新了,于是我在方法中加入一行$this相关的操作,再运行 ...
- HTML图片上下之间的空隙是什么原因
在这个问题上,<权威指南>该书第三版第 146 页有明确说到: 如果一个垂直元素没有基线——也就是说,这是一个图像或表单输入元素,或者其它替换元素——那么该元素低端与其父元素的基线对齐.这 ...