您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何巡檢HBase的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1.集群巡檢
HBase是使用HDFS作為底層存儲的NoSQL數據庫,提供了滿足實時性和隨即讀寫功能的數據庫服務。
每日早晚巡檢HBase服務,檢查各集群的HMaster和RegionServer狀態,是否事務積壓等問題。
1.1 查看Requests Per Second和Num.Regions
若為圖中所示為0,則需要登錄主機查看,通常這種情況會發生在重啟節點主機后發生。
1.2 查看備用HMaster
每個庫正常來說都有3個主節點,一個正在跑,兩個備用,如圖所示。
1.3 查看Software Attributes
圖中所示,比較重要的是兩個標出部分:
1:代表著本庫的zookeeper節點,如果出現異常,總數會不正常的
2:代表著本庫的平均region數,理論超過300就要進行合并操作的,但這個是根據業務的需求進行操作,業務側提出數據庫卡頓了,再進行合并操作即可。
1.4 查看Dead Region Servers
此項是以庫為單位,登錄每個庫的HBase UI,若當前庫內有HBaseregionserver宕掉的節點,則頁面上會顯示出如下情況:
出現這種情況,則說明當前庫有非正常節點,可以嘗試登陸該故障節點,查看故障原因(如HBase進程消失,主機意外重啟,主機死機等)
2.參數調優
2.1 HBase HRegion 最大化壓縮
hbase.hregion.majorcompaction:所有 HStore-
Files“最大化”壓縮之間的時間,要禁用自動的最大化壓縮,請將此值設置為 0。
2.2 RegionServer 小型壓縮線程計數
hbase.regionserver.thread.compaction.small:
regionserver做Minor Compaction時線程池里線程數目,可以設置為5
2.3 HBase Region 分割限制
hbase.regionserver.regionSplitLimit:控制最大的region數量,超過則不可以進行split操作,默認是2147483647,設置1可以禁止自動的split,通過人工, 或者寫腳本在集群空閑時執行。
2.4 HBase 文件最大大小
hbase.hregion.max.filesize:默認是10G, 如果任何一個column familiy里的StoreFile超過這個值, 那么這個Region會一分為二,因為region分 裂會有短暫的region下線時間(通常在5s以內),為減少對業務端的影響,建議手動定時分裂,可以設置大些。
2.5 HBase 客戶端寫入緩沖
hbase.client.write.buffer:客戶端寫buffer,設置autoFlush為false時,當客戶端寫滿buffer才flush 默認為2M,寫緩存大小,推薦設置為5M,單位是字節,當然越大占用的內存越多。
2.6 HBase Region Server 處理程序計數
hbase.regionserver.handler.count:該設置決定了處理RPC的線程數量,默認值是30,通常可以調大,但不是越大越好,設置過大會占用過多的內存, 導致頻繁的gc,或者出現oom。
2.7 HFile 塊緩存大小
hfile.block.cache.size:默認值0.25,regionser-
ver的block cache的內存大小限制,在偏向讀的業務中,可以適當調大該值,需要注意的是 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:默認值0.4 這個參數的作用是防止內存占用過大,當ReigonServer內所有region的memstores所占用內存總和達到heap的 40%時,HBase會強制block所有的更新并flush這些region以釋放所有memstore占用的內存。
2.9 Memstore 刷新的低水位線
hbase.regionserver.global.memstore.lowerLimit,hbase.regionserver.global.memstore.size.lower.limit:默認值0.35 同upperLimit,只不過lowerLimit在所有region的memstores所占用內存達到Heap的35%時,不flush所有的 memstore。它會找一個memstore內存占用最大的region,做個別flush,此時寫更新還是會被block。lowerLimit 算是一個在所有region強制flush導致性能降低前的補救措施。在日志中,表現為 “** Flush thread woke up with memory above low water
2.10 HBase Memstore 刷新大小
hbase.hregion.memstore.flush.size:如 memst-
ore 大小超過此值(字節數),Memstore 將刷新到磁盤。這個參數的作用是當單個Region內所有的 memstore大小總和超過指定值時,flush該region的所有memstore。RegionServer的flush是通過將請求添加一個 隊列,模擬生產消費模式來異步處理的。那這里就有一個問題,當隊列來不及消費,產生大量積壓請求時,可能會導致內存陡增,最壞的情況是觸發OOM。
感謝各位的閱讀!關于“如何巡檢HBase”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。