Hbase调优详情
高可用(high?available->HA)
在HBase中HMaster負責監控RegionServer的生命周期,均衡RegionServer的負載,如果HMaster掛掉了,那么整個HBase集群將陷入不健康的狀態,并且此時的工作狀態并不會維持太久。所以HBase支持對HMaster的高可用配置。
1.關閉HBase集群(如果沒有開啟則跳過此步)
[root@hadoop101 hbase-1.3.1]$ bin/stop-hbase.sh
2.在conf目錄下創建backup-masters文件
[root@hadoop101 hbase-1.3.1]$ touch conf/backup-masters
3.在backup-masters文件中配置高可用HMaster節點
[root@hadoop101 hbase-1.3.1]$ echo hadoop103 > conf/backup-masters
4.將backup-masters分發到其他節點
5.啟動集群并打開頁面測試查看
http://hadooo101:16010?
?
RowKey設計(rowkey design)
一條數據的唯一標識就是rowkey,那么這條數據存儲于哪個分區,取決于rowkey處于哪個一個預分區的區間內,設計rowkey的主要目的 ,就是讓數據均勻的分布于所有的region中,在一定程度上防止數據傾斜。接下來我們就談一談rowkey常用的設計方案。
注意:RowKey如何設計必須結合實際業務場景
案例一
案例二
?
| ? ? 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的优化【面试推荐】
- 下一篇: 大剑无锋之Hive调优【面试推荐】