【建議收藏】HBase配置檢查清單
點(diǎn)擊上方 "大數(shù)據(jù)肌肉猿"關(guān)注, 星標(biāo)一起成長
后臺回復(fù)【加群】,進(jìn)入高質(zhì)量學(xué)習(xí)交流群
2021年大數(shù)據(jù)肌肉猿公眾號獎(jiǎng)勵(lì)制度

來自:大數(shù)據(jù)研習(xí)社
1.集群巡檢
HBase是使用HDFS作為底層存儲的NoSQL數(shù)據(jù)庫,提供了滿足實(shí)時(shí)性和隨即讀寫功能的數(shù)據(jù)庫服務(wù)。
每日早晚巡檢HBase服務(wù),檢查各集群的HMaster和RegionServer狀態(tài),是否事務(wù)積壓等問題。
1.1 查看Requests Per Second和Num.Regions
若為圖中所示為0,則需要登錄主機(jī)查看,通常這種情況會發(fā)生在重啟節(jié)點(diǎn)主機(jī)后發(fā)生。

1.2 查看備用HMaster
每個(gè)庫正常來說都有3個(gè)主節(jié)點(diǎn),一個(gè)正在跑,兩個(gè)備用,如圖所示。

1.3 查看Software Attributes
圖中所示,比較重要的是兩個(gè)標(biāo)出部分:
1:代表著本庫的zookeeper節(jié)點(diǎn),如果出現(xiàn)異常,總數(shù)會不正常的
2:代表著本庫的平均region數(shù),理論超過300就要進(jìn)行合并操作的,但這個(gè)是根據(jù)業(yè)務(wù)的需求進(jìn)行操作,業(yè)務(wù)側(cè)提出數(shù)據(jù)庫卡頓了,再進(jìn)行合并操作即可。

1.4 查看Dead Region Servers
此項(xiàng)是以庫為單位,登錄每個(gè)庫的HBase UI,若當(dāng)前庫內(nèi)有HBaseregionserver宕掉的節(jié)點(diǎn),則頁面上會顯示出如下情況:

出現(xiàn)這種情況,則說明當(dāng)前庫有非正常節(jié)點(diǎn),可以嘗試登陸該故障節(jié)點(diǎn),查看故障原因(如HBase進(jìn)程消失,主機(jī)意外重啟,主機(jī)死機(jī)等)
2.參數(shù)調(diào)優(yōu)
2.1 HBase HRegion 最大化壓縮
hbase.hregion.majorcompaction:所有 HStore-
Files“最大化”壓縮之間的時(shí)間,要禁用自動(dòng)的最大化壓縮,請將此值設(shè)置為 0。

2.2 RegionServer 小型壓縮線程計(jì)數(shù)
hbase.regionserver.thread.compaction.small:
regionserver做Minor Compaction時(shí)線程池里線程數(shù)目,可以設(shè)置為5

2.3 HBase Region 分割限制
hbase.regionserver.regionSplitLimit:控制最大的region數(shù)量,超過則不可以進(jìn)行split操作,默認(rèn)是2147483647,設(shè)置1可以禁止自動(dòng)的split,通過人工, 或者寫腳本在集群空閑時(shí)執(zhí)行。

2.4 HBase 文件最大大小
hbase.hregion.max.filesize:默認(rèn)是10G, 如果任何一個(gè)column familiy里的StoreFile超過這個(gè)值, 那么這個(gè)Region會一分為二,因?yàn)閞egion分 裂會有短暫的region下線時(shí)間(通常在5s以內(nèi)),為減少對業(yè)務(wù)端的影響,建議手動(dòng)定時(shí)分裂,可以設(shè)置大些。

2.5 HBase 客戶端寫入緩沖
hbase.client.write.buffer:客戶端寫buffer,設(shè)置autoFlush為false時(shí),當(dāng)客戶端寫滿buffer才flush 默認(rèn)為2M,寫緩存大小,推薦設(shè)置為5M,單位是字節(jié),當(dāng)然越大占用的內(nèi)存越多。

2.6 HBase Region Server 處理程序計(jì)數(shù)
hbase.regionserver.handler.count:該設(shè)置決定了處理RPC的線程數(shù)量,默認(rèn)值是30,通常可以調(diào)大,但不是越大越好,設(shè)置過大會占用過多的內(nèi)存, 導(dǎo)致頻繁的gc,或者出現(xiàn)oom。

2.7 HFile 塊緩存大小
hfile.block.cache.size:默認(rèn)值0.25,regionser-
ver的block cache的內(nèi)存大小限制,在偏向讀的業(yè)務(wù)中,可以適當(dāng)調(diào)大該值,需要注意的是 hbase.regionserver.global.memstore.upperLimit的值和hfile.block.cache.size的值之和必須小于0.8。

2.8 RegionServer 中所有 Memstore 的最大大小
hbase.regionserver.global.memstore.upperLimit,hbase.regionserver.global.memstore.size:默認(rèn)值0.4 這個(gè)參數(shù)的作用是防止內(nèi)存占用過大,當(dāng)ReigonServer內(nèi)所有region的memstores所占用內(nèi)存總和達(dá)到heap的 40%時(shí),HBase會強(qiáng)制block所有的更新并flush這些region以釋放所有memstore占用的內(nèi)存。
2.9 Memstore 刷新的低水位線
hbase.regionserver.global.memstore.lowerLimit,hbase.regionserver.global.memstore.size.lower.limit:默認(rèn)值0.35 同upperLimit,只不過lowerLimit在所有region的memstores所占用內(nèi)存達(dá)到Heap的35%時(shí),不flush所有的 memstore。它會找一個(gè)memstore內(nèi)存占用最大的region,做個(gè)別flush,此時(shí)寫更新還是會被block。lowerLimit 算是一個(gè)在所有region強(qiáng)制flush導(dǎo)致性能降低前的補(bǔ)救措施。在日志中,表現(xiàn)為 “** Flush thread woke up with memory above low water
2.10 HBase Memstore 刷新大小
hbase.hregion.memstore.flush.size:如 memst-
ore 大小超過此值(字節(jié)數(shù)),Memstore 將刷新到磁盤。這個(gè)參數(shù)的作用是當(dāng)單個(gè)Region內(nèi)所有的 memstore大小總和超過指定值時(shí),flush該region的所有memstore。RegionServer的flush是通過將請求添加一個(gè) 隊(duì)列,模擬生產(chǎn)消費(fèi)模式來異步處理的。那這里就有一個(gè)問題,當(dāng)隊(duì)列來不及消費(fèi),產(chǎn)生大量積壓請求時(shí),可能會導(dǎo)致內(nèi)存陡增,最壞的情況是觸發(fā)OOM。

--end--
掃描下方二維碼 添加好友,備注【交流】 可私聊交流,也可進(jìn)資源豐富學(xué)習(xí)群
更文不易,點(diǎn)個(gè)“在看”支持一下??
