HBASE使用策略

HBase 并不快,只是当数据量很大的时候它慢的不明显

不适合使用 HBase 的场景

  • 主要需求是数据分析,比如做报表。
  • 单表数据量不超过千万。

适合使用 HBase 的场景

  • 单表数据量超千万,而且并发还挺高。
  • 数据分析需求较弱,或者不需要那么灵活或者实时。

查询,插入,删除数据
client->zookeeper->regionserver
regionserver:存放数据
zookeeper:存储描述信息,比如数据存放在哪个regionserver上,zookeeper挂掉,节点都无法连接
需要一提:查询数据不涉及master,master上只是管理表的结构信息,master挂了依然可以查询,不过表管理的能力会丧失。

master
功能:建表、删表、移动 Region、合并等操作
特性:跨regionserver的操作,单独regionserver无法进行的交给master
好处:master宕机,集群依然可以进行核心工作

重要性:zookeeper>master

压缩器

启用压缩器,建议snappy

hbase> alter 'mytable',{NAME =>'mycf',COMPRESSION=>'snappy'}

共享 Hadoop 内置的压缩器

hbase --config $HBASE_HOME/conf org.apache.hadoop.util.NativeLibraryChecker

报错

util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
using builtin-java classes where applicable
    Native library checking:
    hadoop: false
    zlib: false
    snappy: false
    1z4: false
    bzip2: false

解决方法hbase-env.sh加入下列语句

export HBASE_LIBRARY_PATH=Hadoop的Native包所在路径

各个压缩器的对比

Snappy 是 Google 开发的压缩器,有以下特点:
快速:压缩速度达到 250MB/s;
稳定:已经用于 Google 多个产品长达数年;
健壮:Snappy 的解压器可以保证在数据被损坏的时候也不会太糟;
免费开源。
安装完成后,需要在hbase-env.sh加入下面的语句:

export HBASE_LIBRARY_PATH=编码器so文件所在路径:$HBASE_LIBRARY_PATH

GZ 压缩器
一般情况下如果不是对速度要求很低的归档文件,一般不建议使用GZ压缩器,GZ 压缩器的特点:
GZ 压缩器拥有最高的压缩比;
速度较慢,占用较多CPU;
安装简单。
Java 已经自带了一个 GZ 压缩器,所以 GZ 压缩器虽然不是性能最好的,但是却是最容易使用的,你什么都不需要设置,只需要直接修改列族的 COMPRESSION 属性为 GZ 即可。

alter test1',{NAME=>'mycf',COMPRESSION=>'GZ'}

LZO 压缩器
LZ4 的特点:
拥有低丢失率;
速度很快,可以达到400M/s每核。
LZ4 比 Snappy 更快,LZ4 压缩器已经集成在 libhadoop.so 中,所以只需要让 HBase 加载Hadoop 自带的原生库即可。

数据块编码和压缩器在以后建表时候还是可以考虑的,官方推荐的 Snappy 压缩器以及前缀编码都是即简单又有效的调优方法。

    原文作者:怡仔仔仔
    原文地址: https://www.jianshu.com/p/abf40e304415
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞