高可用(high available->HA

在HBase中HMaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果HMaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对HMaster的高可用配置。

1.关闭HBase集群(如果没有开启则跳过此步)

[[email protected] hbase-1.3.1]$ bin/stop-hbase.sh

2.在conf目录下创建backup-masters文件

[[email protected] hbase-1.3.1]$ touch conf/backup-masters

3.在backup-masters文件中配置高可用HMaster节点

[[email protected] hbase-1.3.1]$ echo hadoop103 > conf/backup-masters

4.将backup-masters分发到其他节点

5.启动集群并打开页面测试查看

http://hadooo101:16010 

Hbase调优详情

 


RowKey设计(rowkey design)

一条数据的唯一标识就是rowkey,那么这条数据存储于哪个分区,取决于rowkey处于哪个一个预分区的区间内,设计rowkey的主要目的 ,就是让数据均匀的分布于所有的region中,在一定程度上防止数据倾斜。接下来我们就谈一谈rowkey常用的设计方案。

注意:RowKey如何设计必须结合实际业务场景

案例一

Hbase调优详情

案例二

Hbase调优详情

 

  1. rowkey涉及三原则:
    1. 长度原则
    2. 散列原则
    3. 唯一原则
  2. 在哪几个方面进行考虑?

 

 

foo0001

foo0002

foo0003

foo0004

 

a、Salt(加盐)

a-boo0003

b-foo0001

c-foo0003

c-foo0004

d-foo0002

b、hash (hash算法)

c、Reversing the Key(倒序:身份证号|手机号)

7.3预分区

每一个region维护着startRowKey与endRowKey[1,100),如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高HBase性能。
    注意:手动分区(预分区)需要对业务数据量有把控

1.手动设定预分区

hbase> create 'staff1','info',SPLITS => ['1000','2000','3000','4000']


 

内存优化

HBase操作过程中需要大量的内存开销,毕竟Table是可以缓存在内存中的,一般会分配整个可用内存的70%给HBase的Java堆。但是不建议分配非常大的堆内存,因为GC(gabage collection)过程持续太久会导致RegionServer处于长期不可用状态,一般16~48G内存(128G)就可以了,如果因为框架占用内存过高导致系统内存不足,框架一样会被系统服务拖死。

 

内存:堆内内存(JVM)[on-heap]、堆外内存(受操作系统管理)[off-heap]

 

Hbase调优详情

相关文章: