名詞解釋:
JMX:Java Management Extensions,用于用于Java程序擴展監(jiān)控和管理項。
GC:Garbage Collection,垃圾收集,垃圾回收機制。
1、概述
說到對Hadoop和 HBase的集群監(jiān)控,大家知道的和用的最多的可能還是第3方的監(jiān)控工具,cacti,ganglia,zabbix之類的。其實Hadoop本身是帶有監(jiān)控接口的,這個接口非常詳細,也非常方便,就是JMX。
JMX全稱是Java Management Extensions,用于Java程序擴展監(jiān)控和管理項。而許多Hadoop系統(tǒng)都提供了豐富的JMX監(jiān)控項,所以我們可以直接從HBase系統(tǒng)本身提供的JMX信息獲取我們需要的監(jiān)控項。HJMX web頁面的數(shù)據(jù)格式是 json 格式。
2、指標來源
hbase的jmx在1.0后分開了master和regionserver的jmx監(jiān)控。
啟動 HBase 后,如果要查看查看 Master 的指標,請連接到 Master 的 Web UI, 默認為?http:// localhost:60010?或 HBase 1.0+中的端口 16010)
如果要查看查看 regionServer的指標,請訪問區(qū)域服務(wù)器的 Web UI,默認情況下為?http:// REGIONSERVER_HOSTNAME:60030?(或 HBase 1.0+中的端口 16030)。
小技巧:
如果想要在列表中包含指標描述 - 這在你探索可用內(nèi)容時非常有用,添加查詢字符串?description=true
,如:?http://REGIONSERVER_HOSTNAME:60030/jmxdescription=true?。并非所有 bean 和屬性都有描述。
由于信息比較多,也提供了一個qry=name的方式獲取具體某一項所需的數(shù)據(jù),例如:http://namenode:50070/jmx?qry=hadoop:service=NameNode,name=NameNodeInfo只收集namenode相關(guān)的數(shù)據(jù)。
所以我們可以用多線程或多進程同時采集多個指標項,同時也要注意在每個線程處理的時候數(shù)應(yīng)該是異步的,否則同步可能導致某一個指標項采集阻塞, 使得之后的所有指標項在一個采集周期內(nèi)無法正常返回數(shù)據(jù)。
3、監(jiān)控指標說明
(1)主機基本監(jiān)控項
CPU,內(nèi)存,磁盤,網(wǎng)絡(luò) 主機四大基本監(jiān)控項,這4項機器監(jiān)控保證我們運行我們HBase集群的機器是正常的。
數(shù)據(jù)來源:獲取對象為java.lang:type=OperatingSystem,我們以http://xxxxxx:60010/jmx?qry=java.lang:type=OperatingSystem為例,可以訪問到如下信息:
?
指標項 | 說明 |
---|---|
FreePhysicalMemorySize | 空閑物理內(nèi)存大小 |
ProcessCpuLoad | 進程cpu使用率 |
SystemCpuLoad | 系統(tǒng)cpu使用率 |
AvailableProcessors | 處理器核數(shù) |
(2)JVM監(jiān)控項
HBase 集群涉及的系統(tǒng) HDFS,HBase,ZooKeeper都是用 Java 編寫的,運行在 JVM 中,必須采集 JVM 相關(guān)的監(jiān)控項。 Hbase 中對于 JVM 的監(jiān)控數(shù)據(jù),主要是 JvmMetrics 的對象來進行的。
JvmMetrics 主要統(tǒng)計的信息包括:內(nèi)存的使用狀態(tài)信息; GC 的統(tǒng)計信息;線程的統(tǒng)計信息;以及事件的統(tǒng)計信息。
數(shù)據(jù)來源:獲取對象為Hadoop:service=HBase,name=JvmMetrics,我們以http://xxxxxx:60010/jmx?qry=Hadoop:service=HBase,name=JvmMetrics為例,可以訪問到如下信息:
?
類型 | 指標項 | 說明 |
---|---|---|
內(nèi)存 | MemNonHeapUsedM | JVM 當前已經(jīng)使用的 NonHeapMemory 的大小 |
內(nèi)存 | MemNonHeapMaxM | JVM 配置的 NonHeapMemory 的大小 |
內(nèi)存 | MemHeapUsedM | JVM 當前已經(jīng)使用的 HeapMemory 的大小 |
內(nèi)存 | MemHeapMaxM | JVM 配置的 HeapMemory 的大小 |
內(nèi)存 | MemMaxM | JVM 運行時的可以使用的最大的內(nèi)存的大小 |
GC | GcCountParNew | 新生代GC次數(shù) |
GC | GcTimeMillisParNew | 新生代GC耗時(ms) |
GC | GcCountConcurrentMarkSweep | 老年代GC次數(shù) |
GC | GcTimeMillisConcurrentMarkSweep | 老年代GC耗時 |
線程 | ThreadsNew | 當前線程的處于 NEW 狀態(tài)下的線程數(shù)量 |
線程 | ThreadsRunnable | 當前線程的處于 RUNNABLE 狀態(tài)下的線程數(shù)量 |
線程 | ThreadsBlocked | 當前線程的處于 BLOCKED 狀態(tài)下的線程數(shù)量 |
線程 | ThreadsWaiting | 當前線程的處于 WAITING 狀態(tài)下的線程數(shù)量 |
線程 | ThreadsTimedWaiting | 當前線程的處于 TIMED_WAITING 狀態(tài)下的線程數(shù)量 |
線程 | ThreadsTerminated | 當前線程的處于 TERMINATED 狀態(tài)下的線程數(shù)量 |
事件 | LogFatal | 固定時間間隔內(nèi)的 Fatal 的數(shù)量 |
事件 | LogError | 固定時間間隔內(nèi)的 Error 的數(shù)量 |
事件 | LogWarn | 固定時間間隔內(nèi)的 Warn 的數(shù)量 |
事件 | LogInfo | 固定時間間隔內(nèi)的 Info 的數(shù)量 |
(3)HBase集群各系統(tǒng)存活監(jiān)控項
HBase集群各個系統(tǒng)的進程是否存活是必須也是最基本的監(jiān)控項。具體有hmaster;regionserver;namenode;datanode;journalnode;zkfc;zookeeper的存活監(jiān)控。
具體判斷存活的方式我們可以去判斷各系統(tǒng)相應(yīng)的進程是否存在,也可以去判斷各系統(tǒng)的web頁面或者jmx頁面是否正常。
? ? ? ?3.1? master監(jiān)控
數(shù)據(jù)來源:獲取對象為Hadoop:service=HBase,name=Master,sub=Server,我們以http://xxxxx:60010/jmx?qry=Hadoop:service=HBase,name=Master,sub=Server為例,可以訪問到如下信息:
指標項 | 說明 |
---|---|
tag.liveRegionServers | 活動的region |
tag.deadRegionServers | 停止的region |
3.2??regionserver監(jiān)控
3.2.1? 每個表每個region的數(shù)據(jù)
數(shù)據(jù)來源:獲取對象為Hadoop:service=HBase,name=RegionServer,sub=Regions,我們以http://xxxx:60030/jmx?qry=Hadoop:service=HBase,name=RegionServer,sub=Regions為例,可以訪問到如下信息(以下僅展示一部分):
?
指標項說明
每個表每個region的的指標項說明
第一個xxx代表namespace名
第二個xxx代表表名
第三個xxx代表region的ID
指標項 | 說明 |
---|---|
Namespace_xxx_table_xxx_region_xxx_metric_storeCount | Store個數(shù) |
Namespace_xxx_table_xxx_region_xxx_metric_storeFileCount | StoreFile個數(shù) |
Namespace_xxx_table_xxx_region_xxx_metric_memStoreSize | memStrore大小 |
Namespace_xxx_table_xxx_region_xxx_metric_storeFileSize | storeFile大小 |
Namespace_xxx_table_xxx_region_xxx_metric_compactionsCompletedCount | 合并完成次數(shù) |
Namespace_xxx_table_xxx_region_xxx_metric_numBytesCompactedCount | 合并文件總大小 |
Namespace_xxx_table_xxx_region_xxx_metric_numFilesCompactedCount | 合并完成文件個數(shù) |
3.2.2? 每個regionserver的監(jiān)控數(shù)據(jù)
大致分為server、IPC、WAL、Memory、MemoryPool四類,數(shù)據(jù)較長,以下僅展示一部分
?
?
?
?
下面介紹一些最重要的 RegionServer 指標(摘自HBase官網(wǎng)):
hbase.regionserver.regionCount:區(qū)域服務(wù)器托管的區(qū)域數(shù)量
hbase.regionserver.storeFileCount:當前由 regionserver 管理的磁盤上的存儲文件數(shù)
hbase.regionserver.storeFileSize:磁盤上存儲文件的聚合大小
hbase.regionserver.hlogFileCount:尚未歸檔的預寫日志數(shù)
hbase.regionserver.totalRequestCount:收到的請求總數(shù)
hbase.regionserver.readRequestCount:收到的讀取請求數(shù)
hbase.regionserver.writeRequestCount:收到的寫入請求數(shù)
hbase.regionserver.numOpenConnections:RPC 層的打開連接數(shù)
hbase.regionserver.numActiveHandler:主動為請求提供服務(wù)的 RPC 處理程序的數(shù)量
hbase.regionserver.numCallsInGeneralQueue:當前排隊的用戶請求數(shù)
hbase.regionserver.numCallsInReplicationQueue:從復制中收到的當前排隊操作的數(shù)量
hbase.regionserver.numCallsInPriorityQueue:當前排隊的優(yōu)先級(內(nèi)部管家)請求的數(shù)量
hbase.regionserver.flushQueueLength:memstore 刷新隊列的當前深度。如果增加,我們落后于清除 HDFS 的存儲庫。
hbase.regionserver.updatesBlockedTime:已阻止更新的毫秒數(shù),因此可以刷新 memstore
hbase.regionserver.compactionQueueLength:壓縮請求隊列的當前深度。如果增加,我們落后于 storefile 壓縮。
hbase.regionserver.blockCacheHitCount:塊緩存命中數(shù)
hbase.regionserver.blockCacheMissCount:塊緩存未命中數(shù)
hbase.regionserver.blockCacheExpressHitPercent:打開緩存請求的時間百分比達到緩存
hbase.regionserver.percentFilesLocal:可從本地 DataNode 讀取的存儲文件數(shù)據(jù)的百分比,0-100
hbase.regionserver. <op>_<measure></measure></op>操作延遲,其中<op>是 Append,Delete,Mutate,Get,Replay,Increment 之一;其中<measure>是 min,max,mean,median,75th_percentile,95th_percentile,99th_percentile</measure> </op>中的一個
hbase.regionserver.slow <op>計數(shù)</op>:我們認為操作的數(shù)量很慢,其中<op>是以上列表中的一個</op>
hbase.regionserver.GcTimeMillis:垃圾收集所花費的時間,以毫秒為單位
hbase.regionserver.GcTimeMillisParNew:在年輕一代的垃圾收集中花費的時間,以毫秒為單位
hbase.regionserver.GcTimeMillisConcurrentMarkSweep:在舊一代的垃圾收集中花費的時間,以毫秒為單位
hbase.regionserver.authenticationSuccesses:身份驗證成功的客戶端連接數(shù)
hbase.regionserver.authenticationFailures:客戶端連接驗證失敗的次數(shù)
hbase.regionserver.mutationsWithoutWALCount:提交的寫入計數(shù)帶有一個標志,指示它們應(yīng)繞過寫入日志
IPC類:
TotalCallTime_mean:總調(diào)用耗時(包括隊時間和處理時間)
TotalCallTime_95th_percentile:調(diào)用P95耗時(包括隊時間和處理時間)
TotalCallTime_99th_percentile:調(diào)用P99耗時(包括隊時間和處理時間)文章來源:http://www.zghlxwxcb.cn/news/detail-703463.html
QueueCallTime_mean:隊列調(diào)用耗時文章來源地址http://www.zghlxwxcb.cn/news/detail-703463.html
到了這里,關(guān)于HBase JMX 指標學習的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!