大数据技术之HBase原理与实战归纳分享-中( 四 )


大数据技术之HBase原理与实战归纳分享-中

文章插图
  • Minor Compaction 控制机制:参与到小合并的文件需要通过参数计算得到,有效的参数有 5 个
    • hbase.hstore.compaction.ratio(默认 1.2F)合并文件选择算法中使用的比率 。
    • hbase.hstore.compaction.min(默认 3) 为 Minor Compaction 的最少文件个数 。
    • hbase.hstore.compaction.max(默认 10) 为 Minor Compaction 最大文件个数 。
    • hbase.hstore.compaction.min.size(默认 128M)为单个 Hfile 文件大小最小值,小于这个数会被合并 。
    • hbase.hstore.compaction.max.size(默认 Long.MAX_VALUE)为单个 Hfile 文件大小最大值,高于这个数不会被合并 。小合并机制为拉取整个 store 中的所有文件,做成一个集合 。之后按照从旧到新的顺序遍历 。
  • 判断条件为:
    • 过小合并,过大不合并 。
    • 文件大小/ hbase.hstore.compaction.ratio < (剩余文件大小和) 则参与压缩 。所有把比值设置过大,如 10 会最终合并为 1 个特别大的文件,相反设置为 0.4,会最终产生 4 个 storeFile 。不建议修改默认值 。
    • 满足压缩条件的文件个数达不到个数要求(3 <= count <= 10)则不压缩 。
分区Region Split也即是分区,Region 切分分为两种,创建表格时候的预分区即自定义分区,同时系统默认还会启动一个切分规则,避免单个 Region 中的数据量太大 。
  • 自定义分区:每一个 region 维护着 startRow 与 endRowKey,如果加入的数据符合某个 region 维护的rowKey 范围,则该数据交给这个 region 维护 。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高 HBase 性能 。
# 手动设定预分区create 'student1','info', SPLITS => ['1000','2000','3000','4000']# 生成 16 进制序列预分区create 'student2','info',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}# 按照文件中设置的规则预分区,创建 student-splits.txt 文件内容如下:aaaabbbbccccdddd# 然后执行:create 'student3', 'info',SPLITS_FILE => 'student-splits.txt'
大数据技术之HBase原理与实战归纳分享-中

文章插图