HBase优化设计

本文深入探讨了HBase的优化设计,包括表的预分区、Rowkey和列族设计、内存管理、版本控制以及写入和读取操作的优化策略。Rowkey设计强调散列和唯一性,避免热点现象。写操作中,权衡WAL使用、Put批量提交和异步提交,以及合理设置Region数量和读写均衡。读操作则关注scan缓存、批量get和指定列族请求,以及BlockCache和Compaction的优化。
摘要由CSDN通过智能技术生成

HBase优化设计

1.1 表的设计

对表的Region进行预分区, 加快新建表写入批量写
rowkey散列设计, 考虑业务范围查询
列族最好1个, 不超过2个
版本号一般为1(只保留最新), 数据也可以设置TTL
minor compact尽量错峰(合理设置触发条件, 定时任务合并), major compact必须错峰

1.1.1 Pre-Creating Regions(预分区)

  1. 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。
  2. 一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。
  3. 一般一个节点管理 200 左右region, 每个region尽量不超过10G
//第一种实现方式是使用admin对象的切分策略
//定义key的起始值, 结束值, hbase初始分区数量
//由hbase根据上面3个值进行自动分区
byte[] startKey = ...;      // your lowest key
byte[] endKey = ...;        // your highest key
int numberOfRegions = ...;  // # of regions to create
admin.createTable(table, startKey, endKey, numberOfRegions);
/*
//第二种实现方式是用户自定义切片
//byte[][] splits = ...;   // create your own splits

byte[][] splits = new byte[][] { Bytes.toBytes("100"),
                Bytes.toBytes("200"), Bytes.toBytes("400"),
                Bytes.toBytes("500") };
//第一个region:“ to 100”
//第二个region:“100 to 200”
//第三个region:“200 to 400”
//第四个region:“400 to 500”
//第五个region:“500 to ”
admin.createTable(table, splits);
*/
/**
  * 第二种预分区
  * @param partition 最小10
  * @return 分区[10-1000]
  */
 private static byte[][] initRegion(int partition) {
   
     byte[][] region = new byte[partition - 1][];
     if (partition <= 10) {
   
         // 默认最少10个预分区
         partition = 10;
         region = new byte[partition - 1][];
         for (int i = 0; i < partition - 1; i++) {
   
             region[i] = ("" + (i + 1)).getBytes();
         }
     } else if (partition <= 100){
   
         double step = 100d 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值