Hbase性能監控

Hbase架構

要理解Hbase性能監控指標,首先要理解Hbase底層工作原理,不然對指標的度量,價值,展示方法的理解都會有問題…

Hbase工作原理:
http://opfanswyx.top/2018/04/18/Hbase%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86/

Hbase發行版本較多,這裏以CDH版本爲主,對各版本的差異性未進行研究

用以生產環境的Hbase版本比較:
https://blog.csdn.net/lichangzai/article/details/51564873

《HBase權威指南》中指出的監控指標

大致分爲以下幾種:

Master監控指標

Cluster requests 集羣請求總數
Split time重啓後拆分預寫日誌的時間
Split size拆分預寫日誌的大小

Region服務器監控指標

塊緩存監控指標

    Count 緩存中保存的塊數目
    Size 佔用的java堆空間大小
    Free 堆空間爲緩存保留的可用空間
    Evicted 統計當堆空間受限時將被移除的塊的數目
    Hit 塊緩存追蹤緩存命中
    Miss 緩存失效
    Hit ratio 命中緩存總數與請求緩存總數的關係

合併監控

    Compaction size 需要合併的存儲文件總大小
    Compaction time 需要合併的存儲操作花費時間
    Compaction queue size 一個region服務器有多少文件當前正在排隊等待合併

Memstore監控

    Memstore size MB 服務器上所有memstore總共佔用的堆大小,即所有在線region的memstore的總和
    Flush queue size 將要被刷寫的region的數目
    Flush size 刷寫到磁盤上的memstore大小
    Flush time 本次刷寫所佔用的時間

存儲監控指標

    Store file 所有存儲文件的數目,涉及當前機器管理的所有region的存儲文件
    Store 顯示了服務器上所有region的存儲文件數目
    Store file index MB 所有存儲文件的塊索引和元數據索引的總和大小

I/O監控指標

    Fs read latency 文件系統的讀延遲,從存儲文件中裝載塊時的延時。
    Fs write latency 寫延遲,收集所有寫操作的數據(寫存儲文件和預寫日誌)
    Fs sync latency 預寫日誌記錄同步到文件系統的延遲(這個延時監控指標可以提供底層I/O性能的相關信息,應密切關注)

其他監控指標

    Read request count 總的讀操作get()
    Write request count 總的寫操作put()當前region服務器彙總所有在線region的
    Request 自上次輪詢之後目前每秒的請求數
    Regions 目前region服務器在線的region數目

RPC監控指標

JVM監控指標

內存佔用監控指標

垃圾回收監控指標

    Gc count 垃圾回收的次數
    Gc time上次輪詢至今累計的垃圾回收佔用的時間

線程監控指標

系統時間監控指標

    Log error 自上次輪詢至今,錯誤級別日誌消息的數目

Info監控指標

Date hbase編譯日期
Version hbase版本
Revision 編譯使用的源碼庫版本
url 源碼庫的url地址
user hbase編譯者
hdfsdate hdfs編譯日期
hdfsversion hbase版本
hdfsrevision hdfs使用的源碼庫版本
hdfsurl hdfs源碼庫url地址
hdfsuser hefs編譯者

Hbase監控指標

Hbase監控指標研究過程中參考文章:
1. https://blog.bcmeng.com/post/hbase-monitor.html
2. https://www.tuicool.com/articles/zQNrM3
3. https://www.tuicool.com/articles/YbQbIj
4. https://www.tuicool.com/articles/imArAb
5. https://blog.csdn.net/englishsname/article/details/53883682
6. http://www.54tianzhisheng.cn/2017/10/21/HBase-metrics/

採集的監控數據主要包括以下幾個方面:

  1. 某臺機器 OS 層面上的數據,例如 CPU、內存、磁盤、網絡、load、網絡流量等;
  2. 某臺 regionserver(或master)機器 jvm 的狀態,例如關於線程的信息,GC 的次數和時間,內存使用狀況,以及 ERROR、WARN、Fatal 事件出現的次數;
  3. regionserver(或 master)進程中的統計信息。

hbase的jmx在1.0後分開了master和regionserver的jmx監控,其中master的頁面在master_hostname:60010/jmx頁面中,regionserver在regionserver_hostname:60030/jmx中,如果想更詳細的信息使用
http://regionserver_hostname:60030/jmx?description=true。數據的格式一般是最外層一個beans的key,裏面的value是一個jsonarray。arrayobject裏面可能包含jsonobject或者jsonarray。

HBase發佈遵循Hadoop的API指標。從HBase 0.95開始,HBase被配置爲發出默認的度量集合,其默認採樣週期爲每10秒。 要爲給定的區域服務器配置指標,需編輯conf / hadoop-metrics2-hbase.properties文件。 重新啓動區域服務器以使更改生效。要更改默認接收器的採樣率,請編輯以* .period開頭的行。 要過濾發佈哪些指標或擴展指標框架,請參閱
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/metrics2/package-summary.html

通常,度量單位在名稱中(如公制KB)。 否則,請使用以下準則。 如有疑問,可能需要檢查給定度量標準的來源。
涉及某個時間點的度量標準通常表示爲時間戳。
涉及年齡的指標(例如ageOfLastShippedOp)通常以毫秒錶示。
涉及內存大小的指標以字節爲單位。
隊列的大小(例如sizeOfLogQueue)表示爲隊列中的項目數。 通過乘以塊大小來確定大小(HDFS中默認爲64 MB)。
涉及諸如給定類型操作(如logEditsRead)的數量的度量標準被表示爲整數

Master server性能指標參數整理

"name" : "java.lang:type=Memory",
內存信息-堆內存-非堆內存

"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Control

"name" : "Hadoop:service=HBase,name=Master,sub=AssignmentManger",

"name" : "Hadoop:service=HBase,name=UgiMetrics",
用戶和組相關指標-成功的kerberos登錄-數量/時間

"name" : "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",(標記清除)

"name" : "java.nio:type=BufferPool,name=mapped"

"name" : "Hadoop:service=HBase,name=Master,sub=IPC"
進程間通信
    rumActiveHandler 主動爲請求提供服務的RPC處理程序的數量
    numCallsInGeneralQueue 當前入隊的用戶請求的數量
    numCallsInReplicationQueue 從複製中接收的當前入隊操作的數量
    numCallsInPriorityQueue 當前入隊的優先級(內部管家)請求的數量
    numOpenConnections該regionserver打開的連接數
    receivedBytes收到數據量
    sentBytes發出數據量

"name" : "java.lang:type=Compilation",

"name" : "java.lang:type=MemoryPool,name=CMS Perm Gen",(非heap永久代)

"name" : "java.lang:type=OperatingSystem",
Os操作系統
    OpenFileDescriptorCount 當前機器打開文件數
    FreePhysicalMemorySize  空虛物理內存大小
    AvailableProcessors 可用cpu個數
    ProcessCpuLoad  處理cpu負載
    SystemCpuLoad   系統cpu負載

"name" : "Hadoop:service=HBase,name=Master,sub=Balancer"
平衡器

"name" : "java.lang:type=MemoryManager,name=CodeCacheManager",
編解碼器

"name" : "java.lang:type=MemoryPool,name=CMS Old Gen",(非heap老年代)

"name" : "java.lang:type=GarbageCollector,name=Copy"(複製)

"name" : "Hadoop:service=HBase,name=JvmMetrics"
JVM監控:
    內存的使用狀態信息-非堆-堆內存
    GC的統計信息
    線程的統計信息
    事件的統計信息-fatal-error-warn-info

"name" : "java.lang:type=MemoryPool,name=Code Cache",(非heap代碼緩存區)

"name" : "java.lang:type=Runtime",

"name" : "java.nio:type=BufferPool,name=direct",

"name" : "java.lang:type=ClassLoading",(動態裝載)

"name" : "java.lang:type=Threading", 

"name" : "java.util.logging:type=Logging",

"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Stats",

"name" : "java.lang:type=MemoryPool,name=Eden Space",(JVM伊甸園)

"name" : "com.sun.management:type=HotSpotDiagnostic",

"name" : "Hadoop:service=HBase,name=Master,sub=Server",
服務器信息
    numRegionServers活區域服務器的數量
    numDeadRegionServers死區域服務器的數量
    clusterRequests集羣請求總數

"name" : "java.lang:type=MemoryPool,name=Survivor Space",(倖存者區)

"name" : "Hadoop:service=HBase,name=Master,sub=FileSystem",

HLOG

"name" : "JMImplementation:type=MBeanServerDelegate",

Region server性能指標參數整理

"name" : "JMImplementation:type=MBeanServerDelegate",

"name" : "java.lang:type=Runtime",

"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Control",

"name" : "java.lang:type=Threading",

"name" : "java.lang:type=OperatingSystem",
操作系統:
    OpenFileDescriptorCount 當前機器打開文件數
    FreePhysicalMemorySize  空虛物理內存大小
    AvailableProcessors 可用cpu個數
    ProcessCpuLoad  處理cpu負載
    SystemCpuLoad   系統cpu負載

"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Stats",

"name" : "java.lang:type=MemoryPool,name=Code Cache",(非heap代碼緩存區)

"name" : "java.nio:type=BufferPool,name=direct",

"name" : "java.lang:type=Compilation",

"name" : "Hadoop:service=HBase,name=tracing",

"name" : "java.lang:type=MemoryManager,name=CodeCacheManager",

"name" : "java.util.logging:type=Logging",

"name" : "java.lang:type=ClassLoading",(動態裝載)

"name" : "java.lang:type=MemoryManager,name=Metaspace Manager",

"name" : "Hadoop:service=HBase,name=RegionServer,sub=Regions",
Regionserver上的region區域信息統計

"name" : "Hadoop:service=HBase,name=RegionServer,sub=Replication",

"name" : "java.lang:type=MemoryPool,name=Metaspace",

"name" : "java.lang:type=MemoryPool,name=Par Eden Space"(非heap永久代),

"name" : "java.lang:type=GarbageCollector,name=ParNew",

"name" : "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",

"name" : "Hadoop:service=HBase,name=JvmMetrics",
JVM監控:
    內存的使用狀態信息-非堆-堆內存
    GC的統計信息
        GcTimeMillis -GC總時間
        GcTimeMillisParNew ParNew -GC時間
        GcCount -GC總次數
        GcCountConcurrentMarkSweep -ConcurrentMarkSweep總次數
    GcTimeMillisConcurrentMarkSweep-ConcurrentMarkSweep GC時間
    線程的統計信息ThreadsBlocked堵塞線程數量
        ThreadsTimedWaiting等待線程數量
    事件的統計信息-fatal-error-warn-info

"name" : "Hadoop:service=HBase,name=RegionServer,sub=WAL",
WAL寫log系統
    附加到WAL的數據大小(以字節爲單位)
    花時間將WAL同步到HDFS
    SyncTime_meanWAL寫hdfs的平均時間


"name" : "Hadoop:service=HBase,name=RegionServer,sub=Server",
Regionserver
    region區域數量
    store倉庫數量
    WAL文件數量,大小
    Storfile數量,大小
    Memstore大小
    totalRequestCount   總請求數
    readRequestCount讀請求數
    writeRequestCount寫請求數
    compactionsCompletedCount合併完成次數
    numBytesCompactedCount合併文件總大小
    numFilesCompactedCount合併完成文件個數
    compactedCellsCount合併cell個數
    majorCompactedCellsCount大合併cell個數
    flushedCellsSize flush到磁盤的大小
    blockedRequestCount因memstore大於閾值而引發flush的次數
    splitRequestCount region分裂請求次數
    splitSuccessCounnt region分裂成功次數
    hlogFileSize WAL文件大小 
    hlogFileCount WAL文件個數

"name" : "java.lang:type=MemoryPool,name=Compressed Class Space",
"name" : "Hadoop:service=HBase,name=RegionServer,sub=IPC",
進程間通信
    numOpenConnections該regionserver打開的連接數
    numActiveHandler rpc handler數
    receivedBytes收到數據量
    sentBytes發出數據量

"name" : "java.lang:type=Memory",

    HeapMemoryUsage堆內存的使用率

"name" : "java.nio:type=BufferPool,name=mapped",

"name" : "java.lang:type=MemoryPool,name=Par Survivor Space",

"name" : "com.sun.management:type=DiagnosticCommand",

"name" : "Hadoop:service=HBase,name=UgiMetrics",

"name" : "com.sun.management:type=HotSpotDiagnostic",

"name" : "java.lang:type=MemoryPool,name=CMS Old Gen",
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章