HBase-表的压缩
一、如何选择压缩算法以及Data_Block_Encoding?
(1)如果Key很长,或者有很多Column,那么推荐使用FAST_DIFF。
(2)如果数据是冷数据,不经常被访问,那么使用GZIP压缩格式。因为虽然它比Snappy/LZO需要占用更多而CPU,但是它的压缩比率更高,更节省磁盘。
(3)如果是热点数据,那么使用Snappy/LZO压缩格式。它们相比GZIP,占用的CPU更少。
(4)在大多数情况下,Snappy/LZO的选择都更好。Snappy比LZO更好。
建表语句:
CREATE 'hbase_test',{NAME=>'C',COMPRESSION => 'SNAPPY',DATA_BLOCK_ENCODING => 'FAST_DIFF'} ;
修改表的编码和压缩方式:
alter 'default:hbase_test',{NAME=>'C',COMPRESSION => 'SNAPPY',DATA_BLOCK_ENCODING => 'FAST_DIFF'} ;
业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小。所以这时候可能就不得不考虑使用压缩,但是如果将表删除,再创建一张指定压缩的表,再重新导入数据未免太浪费时间。当然也完全不用这样,可以直接修改hbase表的压缩方式,然后在执行major_compact即可。
alter 'tableName',{NAME=>'familyName',COMPRESSION => 'SNAPPY',DATA_BLOCK_ENCODING => 'FAST_DIFF'} ; //设置表使用SNAPPY压缩,并使用FAST_DIFF编码
desc 'tableName' //验证是否已启用压缩方式
major_compact 'tableName' //执行合并
需要注意的几点:
1.在执行alter之后,hbase表已经启用压缩,但是对于原来表里已有的数据并不会进行压缩,后续再写入的数据才会执行压缩(可以到hdfs验证)
2.如果想把原来表里已有的数据也使用压缩,那么需要执行一次major_compact。major_compact会重新读写数据,在这个流程中,对原有的数据进行压缩,但是如果表数据很大执行major_compact对hbase集群会有比较大的影响。如果是线上环境,建议在业务不繁忙期间执行。
二、在HBase中如何设置SNAPPY压缩?
升级到hbase2.5.1以及以上版本,并修改修改或者添加配置。
hbase.io.compress.snappy.codec配置的值为org.apache.hadoop.hbase.io.compress.xerial.SnappyCodec可以解决。
(1)打开HBase配置文件 hbase-site.xml
vi $HBASE_HOME/conf/hbase-site.xml
(2)添加以下配置项到hbase-site.xml文件中
<property>
<name>hbase.io.compress.snappy.codec</name>
<value>org.apache.hadoop.hbase.io.compress.xerial.SnappyCodec</value>
</property>
(3)重启HBase。
$HBASE_HOME/bin/stop-hbase.sh ;
$HBASE_HOME/bin/start-hbase.sh ;
三、HBase如何拷贝数据到另外一张表?
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=test02 --families=name test01
当然也可以根据startrow和stoprow筛选数据拷贝
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --startrow=000 --stoprow=999 --new.name=test02 --families=name test01
CopyTable的命令格式如下:
CopyTable [general options] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename>
常用选项说明如下:
- startrow:开始行。
- stoprow:停止行。
- starttime:开始时间(以毫秒为单位的unixtime)。若未指定endtime意味着从开始时间到永久。
- endtime:结束时间。如果未指定starttime,则忽略。
- versions:要复制的单元格版本数。
- new.name:新表的名称。
- peer.adr:目标集群的地址,格式为hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.paren,对于CloudTable集群而言就是“${CloudTable目标集群的“ZK链接地址”}:/hbase”。
- families:要复制的列族列表,多个列族之间以逗号分隔。如果要从sourceCfName复制到destCfName,请指定为sourceCfName:destCfName。如果复制后列族名称保持不变,只需指定cfName。
- all.cells:对删除标记和已删除的单元格也进行复制。
- tablename:要复制的表的名称。
HBase-表的压缩的更多相关文章
- 对已经存在的hbase表修改压缩方式
业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小.所以这时候可能就不得不考虑使用压缩,但是 ...
- hbase开放lzo压缩
hbase仅仅支持对gzip的压缩,对lzo压缩支持不好. 在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量. 但这须要參考详细的应用场景,即是否值得进行压缩.压缩率是否足够等等. ...
- HBase学习——3.HBase表设计
1.建表高级属性 建表过程中常用的shell命令 1.1 BLOOMFILTER 默认是 NONE 是否使用布隆过虑及使用何种方式,布隆过滤可以每列族单独启用 使用HColumnDescriptor. ...
- HBase 的MOB压缩分区策略介绍
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zNZQhb07Nr/article/details/79832392 HBase应用场景很广泛.社区 ...
- Hadoop HBase概念学习系列之HBase表的一些设置(强烈推荐好好领悟)(十三)
压缩格式:默认压缩格式是NONE.可选值有GZ.LZO.SNAPPY. 版本数:HBase默认定义为3个版本. 以秒为单位的存活时间TTL:使用对象是行中的列簇,一旦达到过期时间,HBase会删除这些 ...
- HBase学习之路 (十)HBase表的设计原则
建表高级属性 下面几个 shell 命令在 hbase 操作中可以起到很大的作用,且主要体现在建表的过程中,看 下面几个 create 属性 1. BLOOMFILTER 默认是 NONE 是否使用布 ...
- HBase(九)HBase表以及Rowkey的设计
一 命名空间 1 命名空间的结构 1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定, 则在 default 默认的命名空间中. 2) RegionServer g ...
- hbase表的写入
hbase列式存储给我们画了一个很美好的大饼,好像有了它,很多问题都可以轻易解决.但在实际的使用过程当中,你会发现没有那么简单,至少一些通用的准则要遵守,还需要根据业务的实际特点进行集群的参数调整,不 ...
- 七 HBase表结构设计
表结构设计之 高表 与 宽表 选择 HBase 中的表可以设计为高表(tall-narrow table) 和 宽表(flat-wide table). 高表 : ...
- hbase表的高性能设计
第7章 HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷 ...
随机推荐
- u-swipe-action 宽度计算的延迟导致组件加载时内部样式错误
https://toscode.gitee.com/umicro/uView/issues/I1Y50J 左图为电脑显示效果,右图为app显示效果. 原因:u-swipe-action 宽度计算的延迟 ...
- freeswitch隐藏fs标识
概述 freeswitch是一款好用的开源软交换平台. fs的默认配置环境下,sip消息中有很多freeswitch的标识,比如"user-agent","contact ...
- 12_前K个高频元素
前K个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案.347.力扣题目链接 示例 1: 输入: nums = [1,1,1, ...
- ApplicationContextAware 的理解和应用
当我们在项目中获取某一个spring bean时,可以定义一个类,实现ApplicationContextAware 该接口,该接口可以加载获取到所有的 spring bean. package c ...
- UPF - Power Intent Basic
Mainstream Low Power techniques Low Vth - 阈值电压比较低,翻转时间小,漏电流比较大,功耗大,速度快 High Vth - 阈值电压比较高,翻转时间长,漏电流比 ...
- 问题--VSCODE终端中文乱码问题
1.问题 问题如下,终端出现中文乱码问题 根本原因是VSCODE是UFT-8编码,而终端显示的中文则是GBK编码 网上很多都是改VSCODE为GBK编码,但改终端为UFT-8也挺方便 2.解决方法 1 ...
- Laravel : Eloquent 新增
public function ormCreate() { # 1. 使用模型新增 ->save() /* ...
- JVM大页内存的学习与使用
JVM大页内存的学习与使用 原理和背景 操作系统是计算机的重要组成部分. 现代的操作系统一般都采用 段页式内存管理. 段一般是为了管理和权限 页主要是为了虚拟内存和物理内存的映射. 分页管理可以让物理 ...
- [转帖]Oracle JDBC中的语句缓存
老熊 Oracle性能优化 2013-09-13 在Oracle数据库中,SQL解析有几种: 硬解析,过多的硬解析在系统中产生shared pool latch和library cache liatc ...
- [转帖]linux 磁盘队列深度nr_requests 和 queue_depth
linux 磁盘队列深度nr_requests 和 queue_depth nr_requests 和 queue_depth 修改配置值 nr_requests 和 queue_depth 区别 i ...