一、如何选择压缩算法以及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-表的压缩的更多相关文章

  1. 对已经存在的hbase表修改压缩方式

    业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小.所以这时候可能就不得不考虑使用压缩,但是 ...

  2. hbase开放lzo压缩

    hbase仅仅支持对gzip的压缩,对lzo压缩支持不好. 在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量. 但这须要參考详细的应用场景,即是否值得进行压缩.压缩率是否足够等等.  ...

  3. HBase学习——3.HBase表设计

    1.建表高级属性 建表过程中常用的shell命令 1.1 BLOOMFILTER 默认是 NONE 是否使用布隆过虑及使用何种方式,布隆过滤可以每列族单独启用 使用HColumnDescriptor. ...

  4. HBase 的MOB压缩分区策略介绍

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zNZQhb07Nr/article/details/79832392 HBase应用场景很广泛.社区 ...

  5. Hadoop HBase概念学习系列之HBase表的一些设置(强烈推荐好好领悟)(十三)

    压缩格式:默认压缩格式是NONE.可选值有GZ.LZO.SNAPPY. 版本数:HBase默认定义为3个版本. 以秒为单位的存活时间TTL:使用对象是行中的列簇,一旦达到过期时间,HBase会删除这些 ...

  6. HBase学习之路 (十)HBase表的设计原则

    建表高级属性 下面几个 shell 命令在 hbase 操作中可以起到很大的作用,且主要体现在建表的过程中,看 下面几个 create 属性 1. BLOOMFILTER 默认是 NONE 是否使用布 ...

  7. HBase(九)HBase表以及Rowkey的设计

    一 命名空间 1 命名空间的结构 1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定, 则在 default 默认的命名空间中. 2) RegionServer g ...

  8. hbase表的写入

    hbase列式存储给我们画了一个很美好的大饼,好像有了它,很多问题都可以轻易解决.但在实际的使用过程当中,你会发现没有那么简单,至少一些通用的准则要遵守,还需要根据业务的实际特点进行集群的参数调整,不 ...

  9. 七 HBase表结构设计

      表结构设计之  高表  与 宽表 选择       HBase 中的表可以设计为高表(tall-narrow table) 和 宽表(flat-wide table).         高表 : ...

  10. hbase表的高性能设计

    第7章 HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷 ...

随机推荐

  1. ttf转eot

    Webfont Generator https://www.fontsquirrel.com/tools/webfont-generator 使用@font-face显示web自定义字体,字体获取工具 ...

  2. normalize.css——移动端css初始化推荐

    保护了有价值的默认值 修复了浏览器bug 是模块化的 拥有详细的文档 https://www.jianshu.com/p/9d7ff89757fd

  3. 2023Java面试学习网站推荐

    本文给大家推荐博主收藏的6个程序员面试学习站点,按照项目简介.网站截图.是否收费供大家参考. 1. JavaGuide 网站地址:https://javaguide.cn 项目简介:「Java学习 + ...

  4. 基于java+springboot的外卖点餐网站、外卖点餐管理系统

    该系统是基于java+springboot开发的外卖点餐网站.外卖点餐管理系统.是给师弟开发的课程作业.运行过程中的问题,可以在github咨询作者. 演示地址 前台地址: http://food.g ...

  5. Go-连接redis

  6. QT5.9移植到海思HI3520设备上运行

    前言: 在海思HI3520DV300上调试QT5.9.0有一小段时间了,这里将遇到的比较典型的问题做一个记录,以备后续查询,也可给同行一个参考.本人只使用过QT5.9.0这一个版本,如有描述错误欢迎指 ...

  7. [转帖]gooyfs 的编译 github

    https://github.com/kahing/goofys/issues/527 @maobaolong @PengleiShi I had the same issue as you guys ...

  8. [转帖]vdbench - 性能压力测试工具

    <存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. 1. ...

  9. [转帖]利用Python调用outlook自动发送邮件

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 使用Python发送邮件有两种方式,一种是使用smtp调用邮箱的smtp服务器,另一种是直接调用程序直接发送邮件.而在outlo ...

  10. [转帖]一次SSL握手异常,我发现JDK还有发行版区别

    https://www.cnblogs.com/codelogs/p/16633704.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近,我们一个 ...