Hbase调优详情
高可用(high?available->HA)
在HBase中HMaster負(fù)責(zé)監(jiān)控RegionServer的生命周期,均衡RegionServer的負(fù)載,如果HMaster掛掉了,那么整個(gè)HBase集群將陷入不健康的狀態(tài),并且此時(shí)的工作狀態(tài)并不會(huì)維持太久。所以HBase支持對(duì)HMaster的高可用配置。
1.關(guān)閉HBase集群(如果沒(méi)有開(kāi)啟則跳過(guò)此步)
[root@hadoop101 hbase-1.3.1]$ bin/stop-hbase.sh
2.在conf目錄下創(chuàng)建backup-masters文件
[root@hadoop101 hbase-1.3.1]$ touch conf/backup-masters
3.在backup-masters文件中配置高可用HMaster節(jié)點(diǎn)
[root@hadoop101 hbase-1.3.1]$ echo hadoop103 > conf/backup-masters
4.將backup-masters分發(fā)到其他節(jié)點(diǎn)
5.啟動(dòng)集群并打開(kāi)頁(yè)面測(cè)試查看
http://hadooo101:16010?
?
RowKey設(shè)計(jì)(rowkey design)
一條數(shù)據(jù)的唯一標(biāo)識(shí)就是rowkey,那么這條數(shù)據(jù)存儲(chǔ)于哪個(gè)分區(qū),取決于rowkey處于哪個(gè)一個(gè)預(yù)分區(qū)的區(qū)間內(nèi),設(shè)計(jì)rowkey的主要目的 ,就是讓數(shù)據(jù)均勻的分布于所有的region中,在一定程度上防止數(shù)據(jù)傾斜。接下來(lái)我們就談一談rowkey常用的設(shè)計(jì)方案。
注意:RowKey如何設(shè)計(jì)必須結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景
案例一
案例二
?
| ? ? foo0001 foo0002 foo0003 foo0004 |
?
a、Salt(加鹽)
| a-boo0003 b-foo0001 c-foo0003 c-foo0004 d-foo0002 |
b、hash (hash算法)
c、Reversing the Key(倒序:身份證號(hào)|手機(jī)號(hào))
| 7.3預(yù)分區(qū) 每一個(gè)region維護(hù)著startRowKey與endRowKey[1,100),如果加入的數(shù)據(jù)符合某個(gè)region維護(hù)的rowKey范圍,則該數(shù)據(jù)交給這個(gè)region維護(hù)。那么依照這個(gè)原則,我們可以將數(shù)據(jù)所要投放的分區(qū)提前大致的規(guī)劃好,以提高HBase性能。 1.手動(dòng)設(shè)定預(yù)分區(qū) hbase> create 'staff1','info',SPLITS => ['1000','2000','3000','4000'] |
?
內(nèi)存優(yōu)化
HBase操作過(guò)程中需要大量的內(nèi)存開(kāi)銷(xiāo),畢竟Table是可以緩存在內(nèi)存中的,一般會(huì)分配整個(gè)可用內(nèi)存的70%給HBase的Java堆。但是不建議分配非常大的堆內(nèi)存,因?yàn)镚C(gabage collection)過(guò)程持續(xù)太久會(huì)導(dǎo)致RegionServer處于長(zhǎng)期不可用狀態(tài),一般16~48G內(nèi)存(128G)就可以了,如果因?yàn)榭蚣苷加脙?nèi)存過(guò)高導(dǎo)致系統(tǒng)內(nèi)存不足,框架一樣會(huì)被系統(tǒng)服務(wù)拖死。
?
內(nèi)存:堆內(nèi)內(nèi)存(JVM)[on-heap]、堆外內(nèi)存(受操作系統(tǒng)管理)[off-heap]
?
總結(jié)
- 上一篇: 大剑无锋之Hbase的优化【面试推荐】
- 下一篇: 大剑无锋之Hive调优【面试推荐】