hbase 分区表-hbasemob分区策略(7-4-62)

更新时间:2024-07-18 分类:HBase 浏览量:2

HBase本文目录一览:

  • 1、hbase预分区表能调整吗
  • 2、hbase分区会自动裂变吗
  • 3、HBase写数据的异常问题以及优化
  • 4、hbase手动split分区数没变
  • 5、HBase调优:预分区与行键设计

hbase预分区表能调整吗

默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。

预分区后,可以从 HBase ui 页面观察到: HBase API 建预分区表 为防止热点问题,同时避免 Region Split 后,部分 Region 不再写数据或者很少写数据。

HFileOutputFormat的作用在于使得输出的HFile文件能够适应单个region。使用TotalOrderPartitioner类将map输出结果分区到各个不同的key区间中,每一个key区间都相应着HBase表的region。

hbase分区会自动裂变吗

1、HBase 在创建表的时候,会自动为表分配一个Region,当一个 Region 达到拆分条件时(shouldSplit 为 true),HBase 中该 Region 将会进行 split,分裂为2个 Region,以此类推。

2、使用上述解决方案后本次异常依旧存在,并且HMaster和HRegionServer都不断的自动挂掉。

3、会分裂),一个region对应一个或多个store,一个列族对应一个store,一个store由一个memstore和零个或多个storefile组成,storefile就是hdfs中的hfile,hbase写入数据到hdfs的过程其实是不断追加hfile的过程。

4、HBase的配置文件在conf/目录下。在分布式模式下,当修改类hbase的配置文件后,需要同步到集群中的其他节点上。HBase不会自动同步。可以使用rsync、scp等工具进行同步。对于大部分配置,需要重启使之生效。

5、自然split的几率也会大大降低。当然随着数据量的不断增长,该split的还是要进行split。像这样预先创建hbase表分区的方式,称之为预分区。

HBase写数据的异常问题以及优化

HBase数据写入通常会遇到两类问题,一类是写性能较差,另一类是数据根本写不进去。

BloomFilter的数据存在StoreFile的meta中,一旦写入无法更新,因为StoreFile是不可变的。

对于读端,捕获异常后,可以采取休眠一段时间后进行重试等方式。3)当然,还可以根据实际情况合理调整hbase.client.retries.number和hbase.client.pause配置选项。

逻辑故障 逻辑故障中的一种常见情况就是配置错误,就是指因为网络设备的配置原因而导致的网络异常或故障。

hbase手动split分区数没变

1、当数据越来越多,Region 的 size 越来越大时,达到默认的阈值时(根据不同的拆分策略有不同的阈值),HBase 中该 Region 将会进行 split,会找到一个 MidKey 将 Region 一分为二,成为 2 个 Region。

2、当 Region 管理的数据过多时,可以通过手动或自动的方式触发 HBase Split 将一个 Region 分裂成两个新的子 Region,并对父 Region 进行清除处理(不会立即清除)。

3、以fileServer为例,在使用默认的split策略--IncreasingToUpperBoundRegionSplitPolicy 的情况下,16个预分区Region, 则单个Resion容量达到 min(32,50),即32GB时分裂。

4、实现负载均衡。split是HBase数据管理的基本单位,相当于关系型数据中的分区,HBase通过把数据分配到一定数量的split来达到负载均衡的目的。

HBase调优:预分区与行键设计

像这样预先创建hbase表分区的方式,称之为预分区。hash(主键) + 年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。

像这样预先创建hbase表分区的方式,称之为预分区。hash(主键)+年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。

已经有自动分区了,为什么还需要预分区? HBase 在创建表的时候,会自动为表分配一个Region,当一个 Region 达到拆分条件时(shouldSplit 为 true),HBase 中该 Region 将会进行 split,分裂为2个 Region,以此类推。

由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。

目前我们已经确定了hbase存储,并且采用预分区的方式并且采用rowkey进行过滤查询,那么现在考虑rowkey的设计。

优化建议:检查RowKey设计以及预分区策略,保证写入请求均衡。 KeyValue大小对写入性能的影响巨大,一旦遇到写入性能比较差的情况,需要考虑是否由于写入KeyValue数据太大导致。