HBase性能优化

本文总结了HBase性能优化方法,包括表的设计:预创建Region、优化Row Key、控制Column Family数量、利用In Memory、设置Max Version和Time To Live、管理Compaction与Split。在写表操作中,建议使用多HTable并发写、调整HTable参数、批量写与关闭WAL日志。读表操作中,推荐多HTable并发读、优化Scanner Caching、批量读及利用Blockcache。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase性能优化方法总结(一):表的设计

  1. 表的设计
    1.1 Pre-Creating Regions
    默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。
    1.2 Row Key
    HBase中row key用来检索表中的记录,支持以下三种方式:
    • 通过单个row key访问:即按照某个row key键值进行get操作;
    • 通过row key的range进行scan:即通过设置startRowKey和endRowKey,在这个范围内进行扫描;
    • 全表扫描:即直接扫描整张表中所有行记录。
    在HBase中,row key可以是任意字符串,最大长度64KB,实际应用中一般为10~100bytes,存为byte[]字节数组,一般设计成定长的。
    row key是按照字典序存储,因此,设计row key时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。
    Rowkey规则:
    1、 越小越好
    2、 Rowkey的设计是要根据实际业务来
    3、 散列性
    a) 取反 001 002 100 200
    b) Hash
    1.3 Column Family
    不要在一张表里定义太多的column family。目前Hbase并不能很好的处理超过2~3个column family的表。因为某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O。
    1.4 In Memory
    创建表的时候,可以通过HColumnDescriptor.setInMemory(true)将表放到RegionServer的缓存中,保证在读取的时候被cache命中。
    1.5 Max Version
    创建表的时候,可以通过HColumnDescriptor.setMaxVersions(int maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置setMaxVersions(1)。
    1.6 Time To Live
    创建表的时候,可以通过HColumnDescriptor.setTimeToLive(int timeToLive)设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置setTimeToLive(2 * 24 * 60 * 60)。
    1.7 Compact & Split
    在HBase中,数据在更新时首先写入WA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值