HiveMetaStore的指標分析(一)
文章目錄
- HiveMetaStore的指標分析(一)
- 背景
- 目標部署架構
- hive-site.xml相關配置
- 元數據服務的指標相關配置
- 源碼部分(hive2.3系)
- `JvmPauseMonitor.java`
- `HiveMetaStore`的內部類`HMSHandler`
- MetricsFactory的init(conf)方法
- `CodahaleMetrics.java`
- 具體指標對象
- 指標導出
- JsonFileReporter輸出的文件內容示例
- 其他
- 騰訊云的hive-metastore指標
- 參考資料
背景
對當前單獨部署的HiveMetaStore服務進行指標監控。
目標部署架構
驗證步驟
-
場景一:
Metastore服務開啟監控,指標輸出方式采用默認。HiveServer2采用直連數據庫的方式創建MetaStoreClient,其配置文件中也開啟了metastore指標監控,同時開啟WebUI。
現象:每個HiveServer2服務都可以通過WebUI看到指標dump。但是,每個HiveServer2的實際訪問的指標并非從Metastore組中獲取的指標。是Client端側的指標,且每個節點之間沒有關聯。
-
場景二:
Metastore服務開啟監控,指標輸出方式采用默認。。HiveServer2采用連接Metastore服務組的方式工作,其配置文件中也開啟了metastore指標監控,同時開啟WebUI。
現象:每個HiveServer2服務都可以通過WebUI看到指標dump。但是沒有Metastore相關的指標。
結論:以上兩種方式,通過HiveServer2的WebUI服務都無法獲取到單獨的Metastore的服務指標。
-
場景三:
單純的開啟Metastore服務的監控,并將指標輸出json文件中。
現象:每個Metastore服務都生成自己的json文件,但是目前的版本在更新問價的時候會無法
.json
文件,只會定時的更新.json.tmp
文件。
說明,以目標部署架構為例,單純的MetaStore服務的指標是單純的自己輸出的。要么讀取json文件,通過開啟服務的JMX,在通過分別訪問各個Metastore節點的JMX服務獲取指標。
hive-site.xml相關配置
元數據服務的指標相關配置
-
開啟指標功能
hive.metastore.metrics.enabled
:true
-
指定指標功能實現類
hive.service.metrics.class
:org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics
-
指標輸出的類型
hive.service.metrics.reporter
:"JMX,CONSOLE,JSON_FILE,HADOOP2"
-
指標輸出的JSON文件位置
hive.service.metrics.file.location
:“/tmp/report.json
” -
指標輸出的JSON文件更新頻率
hive.service.metrics.file.frequency
:5s
-
指標輸出到hadoop2組件指標中的名稱
hive.service.metrics.hadoop2.component
:"hivemetestore"
-
指標輸出到hadoop2組件指標中的時間間隔
hive.service.metrics.hadoop2.frequency
:30s
源碼部分(hive2.3系)
在HiveMetaStore.java
文件中main方法內,會根據配置去決定是否啟動指標服務類。
//Start Metrics for Standalone (Remote) Mode - hive.metastore.metrics.enabledif (conf.getBoolVar(ConfVars.METASTORE_METRICS)) {try {MetricsFactory.init(conf);} catch (Exception e) {// log exception, but ignore inability to startLOG.error("error in Metrics init: " + e.getClass().getName() + " "+ e.getMessage(), e);}}Lock startLock = new ReentrantLock();Condition startCondition = startLock.newCondition();AtomicBoolean startedServing = new AtomicBoolean();// 方法中會啟動JvmPauseMonitor監控器startMetaStoreThreads(conf, startLock, startCondition, startedServing);// 方法中去實例化了HMSHandler,用戶處理客戶端過來的請求startMetaStore(cli.getPort(), ShimLoader.getHadoopThriftAuthBridge(), conf, startLock,startCondition, startedServing);
JvmPauseMonitor.java
用來監控JVM的暫停情況。通過Daemon線程,默認每隔500ms計算一次。jvm暫停統計級別分為warn和info級別。如果暫停超過1000ms則info級別次數+1,如果超過10000ms,則warn級別+1。
private class Monitor implements Runnable {@Overridepublic void run() {Stopwatch sw = new Stopwatch();// 獲取GC情況,GC次數和GC耗時msMap<String, GcTimes> gcTimesBeforeSleep = getGcTimes();while (shouldRun) {sw.reset().start();try {// 監控線程自我休眠500msThread.sleep(SLEEP_INTERVAL_MS);} catch (InterruptedException ie) {return;}// 上次查詢時間-減去休眠就是暫停的耗時long extraSleepTime = sw.elapsed(TimeUnit.MILLISECONDS) - SLEEP_INTERVAL_MS;Map<String, GcTimes> gcTimesAfterSleep = getGcTimes();// warnThresholdMs默認10000msif (extraSleepTime > warnThresholdMs) {++numGcWarnThresholdExceeded;LOG.warn(formatMessage(extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep));// 指標jvm.pause.info-threshold進行+1incrementMetricsCounter(MetricsConstant.JVM_PAUSE_WARN, 1);} // infoThresholdMs默認1000ms else if (extraSleepTime > infoThresholdMs) {++numGcInfoThresholdExceeded;LOG.info(formatMessage(extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep));// 指標jvm.pause.warn-threshold進行+1incrementMetricsCounter(MetricsConstant.JVM_PAUSE_INFO, 1);}// jvm.pause.extraSleepTime 累計時間? msincrementMetricsCounter(MetricsConstant.JVM_EXTRA_SLEEP, extraSleepTime);totalGcExtraSleepTime += extraSleepTime;gcTimesBeforeSleep = gcTimesAfterSleep;}}private void incrementMetricsCounter(String name, long count) {Metrics metrics = MetricsFactory.getInstance();if (metrics != null) {try {metrics.incrementCounter(name, count);} catch (Exception e) {LOG.warn("Error Reporting JvmPauseMonitor to Metrics system", e);}}}}
HiveMetaStore
的內部類HMSHandler
startFunction
和endFunction
是包裹以下元數據的操作,進行指標的采集控制。由這兩個包裹的方法,除了本身的Timer指標(增加前綴api_
)外,還會增加counters類型指標,不過在Timer指標名的基礎上再增加active_calls_
前綴,即active_calls_api_
。
以下指標還會增加前綴api_
,
-
庫相關
create_database
get_database
alter_database
drop_database
get_databases
get_all_databases
-
表相關
create_table
drop_table
get_table
get_tables
get_tables_by_type
get_all_tables
get_table_metas
get_multi_table
get_table_names_by_filter
get_table_statistics_req
alter_table
-
分區相關
append_partition
append_partition_by_name
drop_partition_by_name
get_partitions_ps
get_partitions_ps_with_auth
get_partitions_names_ps
add_partitions
add_partition
drop_partition
get_partition
alter_partition
get_partition_with_auth
get_partitions_pspec
get_partition_names
get_partition_by_name
get_partitions_by_expr
get_num_partitions_by_filter
get_num_partitions_by_expr
get_partitions_by_names
get_partitions_by_filter
get_partitions_by_filter_pspec
get_partitions_statistics_req
-
其他
create_type
get_type
drop_type
drop_constraint
add_primary_key
add_foreign_key
get_column_privilege_set
add_index
alter_index
drop_index_by_name
get_index_by_name
get_index_names
get_indexes
get_column_statistics_by_table
get_fields_with_environment_context
get_schema_with_environment_context
get_column_statistics_by_partition
write_column_statistics
write_partition_column_statistics
delete_column_statistics_by_partition
delete_column_statistics_by_table
get_config_value
delete_column_statistics_by_partition
cancel_delegation_token
renew_delegation_token
get_delegation_token
add_token
remove_token
get_token for
+XXXget_all_token_identifiers.
add_master_key.
update_master_key.
remove_master_key.
get_master_keys.
partition_name_has_valid_characters
get_functions
get_all_functions
get_function
get_aggr_stats_for
get_foreign_keys
例如get_database
操作
public Database get_database(final String name) throws NoSuchObjectException, MetaException {startFunction("get_database", ": " + name);Database db = null;Exception ex = null;try {db = get_database_core(name);firePreEvent(new PreReadDatabaseEvent(db, this));} catch (MetaException e) {ex = e;throw e;} catch (NoSuchObjectException e) {ex = e;throw e;} finally {endFunction("get_database", db != null, ex);}return db;}
MetricsFactory的init(conf)方法
/*** Initializes static Metrics instance. 目前默認的實現類是 org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics*/
public synchronized static void init(HiveConf conf) throws Exception {if (metrics == null) {Class metricsClass = conf.getClassByName(conf.getVar(HiveConf.ConfVars.HIVE_METRICS_CLASS));Constructor constructor = metricsClass.getConstructor(HiveConf.class);metrics = (Metrics) constructor.newInstance(conf);}
}
CodahaleMetrics.java
通過有參構造函數,實例化CodahaleMetrics。里面一共涉及4個指標類型。timers
,counters
,meters
,gauges
。
public CodahaleMetrics(HiveConf conf) {this.conf = conf;//Codahale artifacts are lazily-created.timers = CacheBuilder.newBuilder().build(new CacheLoader<String, com.codahale.metrics.Timer>() {@Overridepublic com.codahale.metrics.Timer load(String key) {Timer timer = new Timer(new ExponentiallyDecayingReservoir());metricRegistry.register(key, timer);return timer;}});counters = CacheBuilder.newBuilder().build(new CacheLoader<String, Counter>() {@Overridepublic Counter load(String key) {Counter counter = new Counter();metricRegistry.register(key, counter);return counter;}});meters = CacheBuilder.newBuilder().build(new CacheLoader<String, Meter>() {@Overridepublic Meter load(String key) {Meter meter = new Meter();metricRegistry.register(key, meter);return meter;}});gauges = new ConcurrentHashMap<String, Gauge>();//register JVM metrics - java虛擬機的相關指標集registerAll("gc", new GarbageCollectorMetricSet());registerAll("buffers", new BufferPoolMetricSet(ManagementFactory.getPlatformMBeanServer()));registerAll("memory", new MemoryUsageGaugeSet());registerAll("threads", new ThreadStatesGaugeSet());registerAll("classLoading", new ClassLoadingGaugeSet());//Metrics reporter -進行指標的輸出Set<MetricsReporting> finalReporterList = new HashSet<MetricsReporting>();// 默認的導出類型是JSON_FILE, JMX。List<String> metricsReporterNames = Lists.newArrayList(Splitter.on(",").trimResults().omitEmptyStrings().split(conf.getVar(HiveConf.ConfVars.HIVE_METRICS_REPORTER)));if (metricsReporterNames != null) {for (String metricsReportingName : metricsReporterNames) {try {MetricsReporting reporter = MetricsReporting.valueOf(metricsReportingName.trim().toUpperCase());finalReporterList.add(reporter);} catch (IllegalArgumentException e) {LOGGER.warn("Metrics reporter skipped due to invalid configured reporter: " + metricsReportingName);}}}initReporting(finalReporterList);}
具體指標對象
GarbageCollectorMetricSet
:一組用于垃圾收集計數和運行時間的儀表。BufferPoolMetricSet
:一組測量JVM的直接和映射緩沖池的計數、使用情況和容量的指標。這些JMX對象僅在Java 7及以上版本上可用。MemoryUsageGaugeSet
:一組用于JVM內存使用的指標,包括堆與非堆內存的統計信息,以及特定于gc的內存池。ThreadStatesGaugeSet
:一組用于各種狀態和死鎖檢測的線程數量的量規。ClassLoadingGaugeSet
:JVM類加載器使用情況的一組指標。
指標導出
/*** Should be only called once to initialize the reporters*/private void initReporting(Set<MetricsReporting> reportingSet) {for (MetricsReporting reporting : reportingSet) {switch (reporting) {case CONSOLE:final ConsoleReporter consoleReporter = ConsoleReporter.forRegistry(metricRegistry).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build();consoleReporter.start(1, TimeUnit.SECONDS);reporters.add(consoleReporter);break;case JMX:final JmxReporter jmxReporter = JmxReporter.forRegistry(metricRegistry).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build();jmxReporter.start();reporters.add(jmxReporter);break;case JSON_FILE:final JsonFileReporter jsonFileReporter = new JsonFileReporter();jsonFileReporter.start();reporters.add(jsonFileReporter);break;case HADOOP2:String applicationName = conf.get(HiveConf.ConfVars.HIVE_METRICS_HADOOP2_COMPONENT_NAME.varname);long reportingInterval = HiveConf.toTime(conf.get(HiveConf.ConfVars.HIVE_METRICS_HADOOP2_INTERVAL.varname),TimeUnit.SECONDS, TimeUnit.SECONDS);final HadoopMetrics2Reporter metrics2Reporter = HadoopMetrics2Reporter.forRegistry(metricRegistry).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build(DefaultMetricsSystem.initialize(applicationName), // The application-level nameapplicationName, // Component nameapplicationName, // Component description"General"); // Name for each metric recordmetrics2Reporter.start(reportingInterval, TimeUnit.SECONDS);break;}}}
在hive2版本有4類導出器
ConsoleReporter
:通過調度線程,按周期將指標輸出到日志里面。JmxReporter
:一個報告器,用于監聽新指標,并將發送其作為名稱標注的 MBeans。JsonFileReporter
:通過Timer,定時調度,將指標寫入目標文件中。HadoopMetrics2Reporter
:通過調度線程,按周期將指標更新到度量對象dropwizardGauges
,dropwizardCounters
,dropwizardHistograms
,dropwizardMeters
,dropwizardTimers
中,再由hadoop2的指標系統去獲取轉換由 dropwizard 收集的當前指標,并將其添加到Hadoop2的指標系統中。
JsonFileReporter輸出的文件內容示例
-
回收
- gc.PS-MarkSweep.count:標記次數
- gc.PS-MarkSweep.time:標記耗時ms
- gc.PS-Scavenge.count:清除次數
- gc.PS-Scavenge.time:清除耗時ms
-
內存
-
memory.heap.committed:JVM 已經提交的 HeapMemory 的大小, byte
-
memory.heap.init:JVM 初始 HeapMem 的大小
-
memory.heap.usage:已使用內存占比
-
memory.heap.max:JVM 配置的 HeapMemory 的大小
-
memory.heap.used:已使用堆內存大小, byte
-
memory.non-heap.committed:JVM 當前已經提交的 NonHeapMemory 的大小, byte
-
memory.non-heap.init:JVM 初始 NonHeapMem 的大小, byte
-
memory.non-heap.max:JVM 配置的 NonHeapMemory 的數大小, byte
-
memory.non-heap.usage:已使用NonHeapMemory 內存占比
-
memory.non-heap.used:JVM 當前已經使用的 NonHeapMemory 的大小, byte
-
memory.pools.Code-Cache.usage:代碼緩存區使用占比
-
memory.pools.Compressed-Class-Space.usage:壓縮類空間空間使用占比
-
memory.pools.Metaspace.usage:Metaspace 區內存使用占比
-
memory.pools.PS-Eden-Space.usage:Eden區內存使用占比
-
memory.pools.PS-Old-Gen.usage:Old區內存使用占比
-
memory.pools.PS-Survivor-Space.usage:Survivo區內存使用占比
-
memory.total.committed:保證可用于堆或非堆的總內存量
-
memory.total.init:堆或非堆初始化的內存量
-
memory.total.max:堆或非堆配置的最大中內存量
-
memory.total.used:堆或非堆使用的總內存量
-
-
線程
- threads.count:總線程數
- threads.daemon.count:常駐線程數
- threads.deadlock.count:死鎖線程數
-
counters下
active_calls_*
系列:正在執行的方法的個數,方法主要在HiveMetaStore
的內部類HMSHandler
中。 -
timers下
api_
系列:執行的方法響應(個數,平均、最大、最小、中位數耗時等等),方法主要在HiveMetaStore
的內部類HMSHandler
中。
{"version" : "3.0.0","gauges" : {"buffers.direct.capacity" : {"value" : 0},"buffers.direct.count" : {"value" : 0},"buffers.direct.used" : {"value" : 0},"buffers.mapped.capacity" : {"value" : 0},"buffers.mapped.count" : {"value" : 0},"buffers.mapped.used" : {"value" : 0},"classLoading.loaded" : {"value" : 6932},"classLoading.unloaded" : {"value" : 0},"gc.PS-MarkSweep.count" : {"value" : 2},"gc.PS-MarkSweep.time" : {"value" : 250},"gc.PS-Scavenge.count" : {"value" : 5},"gc.PS-Scavenge.time" : {"value" : 92},"init_total_count_dbs" : {"value" : 489},"init_total_count_partitions" : {"value" : 51089},"init_total_count_tables" : {"value" : 13733},"memory.heap.committed" : {"value" : 991428608},"memory.heap.init" : {"value" : 1073741824},"memory.heap.max" : {"value" : 991428608},"memory.heap.usage" : {"value" : 0.22776332070498415},"memory.heap.used" : {"value" : 225811072},"memory.non-heap.committed" : {"value" : 62717952},"memory.non-heap.init" : {"value" : 2555904},"memory.non-heap.max" : {"value" : -1},"memory.non-heap.usage" : {"value" : -6.1740872E7},"memory.non-heap.used" : {"value" : 61740872},"memory.pools.Code-Cache.usage" : {"value" : 0.04560165405273438},"memory.pools.Compressed-Class-Space.usage" : {"value" : 0.004726290702819824},"memory.pools.Metaspace.usage" : {"value" : 0.9850643484933036},"memory.pools.PS-Eden-Space.usage" : {"value" : 0.5518231919863521},"memory.pools.PS-Old-Gen.usage" : {"value" : 0.07657499299391471},"memory.pools.PS-Survivor-Space.usage" : {"value" : 0.9316617525540866},"memory.total.committed" : {"value" : 1054146560},"memory.total.init" : {"value" : 1076297728},"memory.total.max" : {"value" : 991428607},"memory.total.used" : {"value" : 287551944},"threads.blocked.count" : {"value" : 0},"threads.count" : {"value" : 27},"threads.daemon.count" : {"value" : 16},"threads.deadlock.count" : {"value" : 0},"threads.deadlocks" : {"value" : [ ]},"threads.new.count" : {"value" : 0},"threads.runnable.count" : {"value" : 4},"threads.terminated.count" : {"value" : 0},"threads.timed_waiting.count" : {"value" : 7},"threads.waiting.count" : {"value" : 16}},"counters" : {"active_calls_api_get_database" : {"count" : 0},"active_calls_api_get_tables" : {"count" : 0},"active_calls_api_init" : {"count" : 0},"active_calls_api_set_ugi" : {"count" : 0},"jvm.pause.extraSleepTime" : {"count" : 6},"open_connections" : {"count" : 1}},"histograms" : { },"meters" : { },"timers" : {"api_get_database" : {"count" : 54,"max" : 99.228759,"mean" : 11.107232182804301,"min" : 10.091598,"p50" : 11.098374,"p75" : 11.503314,"p95" : 12.130782,"p98" : 12.130782,"p99" : 12.130782,"p999" : 12.913863,"stddev" : 0.6771821794059291,"m15_rate" : 0.0,"m1_rate" : 0.0,"m5_rate" : 0.0,"mean_rate" : 0.0,"duration_units" : "milliseconds","rate_units" : "calls/millisecond"},"api_get_tables" : {"count" : 18,"max" : 31.114395,"mean" : 9.939109200622983,"min" : 9.404240999999999,"p50" : 9.841852,"p75" : 10.122354,"p95" : 10.122354,"p98" : 10.122354,"p99" : 10.122354,"p999" : 10.203377999999999,"stddev" : 0.18434488642295546,"m15_rate" : 0.0,"m1_rate" : 0.0,"m5_rate" : 0.0,"mean_rate" : 0.0,"duration_units" : "milliseconds","rate_units" : "calls/millisecond"},"api_init" : {"count" : 1,"max" : 3225.4620339999997,"mean" : 3225.4620339999997,"min" : 3225.4620339999997,"p50" : 3225.4620339999997,"p75" : 3225.4620339999997,"p95" : 3225.4620339999997,"p98" : 3225.4620339999997,"p99" : 3225.4620339999997,"p999" : 3225.4620339999997,"stddev" : 0.0,"m15_rate" : 0.0,"m1_rate" : 0.0,"m5_rate" : 0.0,"mean_rate" : 0.0,"duration_units" : "milliseconds","rate_units" : "calls/millisecond"},"api_set_ugi" : {"count" : 1,"max" : 0.284408,"mean" : 0.284408,"min" : 0.284408,"p50" : 0.284408,"p75" : 0.284408,"p95" : 0.284408,"p98" : 0.284408,"p99" : 0.284408,"p999" : 0.284408,"stddev" : 0.0,"m15_rate" : 0.0,"m1_rate" : 0.0,"m5_rate" : 0.0,"mean_rate" : 0.0,"duration_units" : "milliseconds","rate_units" : "calls/millisecond"}}
}
其他
#這個類定義了Hive進程生成的一些指標。
org.apache.hadoop.hive.common.metrics.common.MetricsConstant#可以用來度量和記錄一段代碼所花費的時間。
org.apache.hadoop.hive.ql.log.PerfLogger
騰訊云的hive-metastore指標
標題 | 指標名稱 | 指標單位 | 指標含義 |
---|---|---|---|
GC 次數 | YGC | 次 | Young GC 次數 |
FGC | 次 | Full GC 次數 | |
GC 時間 | FGCT | s | Full GC 消耗時間 |
GCT | s | 垃圾回收時間消耗 | |
YGCT | s | Young GC 消耗時間 | |
內存區域占比 | S0 | % | Survivor 0區內存使用占比 |
E | % | Eden 區內存使用占比 | |
CCS | % | Compressed class space 區內存使用占比 | |
S1 | % | Survivor 1區內存使用占比 | |
O | % | Old 區內存使用占比 | |
M | % | Metaspace 區內存使用占比 | |
JVM 內存 | MemHeapUsedM | MB | JVM 當前已經使用的 HeapMemory 的數量 |
MemHeapCommittedM | MB | JVM 已經提交的 HeapMemory 的數量 | |
MemHeapMaxM | MB | JVM 配置的 HeapMemory 的數量 | |
MemHeapInitM | MB | JVM 初始 HeapMem 的數量 | |
MemNonHeapUsedM | MB | JVM 當前已經使用的 NonHeapMemory 的數量 | |
MemNonHeapCommittedM | MB | JVM 當前已經提交的 NonHeapMemory 的數量 | |
MemNonHeapInitM | MB | JVM 初始 NonHeapMem 的數量 | |
文件描述符數 | OpenFileDescriptorCount | 個 | 已打開文件描述符數量 |
MaxFileDescriptorCount | 個 | 最大文件描述符數 | |
CPU 利用率 | ProcessCpuLoad | % | 進程 CPU 利用率 |
SystemCpuLoad | % | 系統 CPU 利用率 | |
CPU 使用時間占比 | CPURate | seconds/second | CPU 使用時間占比 |
工作線程數 | DaemonThreadCount | 個 | 守護線程數 |
ThreadCount | 個 | 線程總數 | |
CPU 累計使用時間 | ProcessCpuTime | ms | CPU 累計使用時間 |
進程運行時長 | Uptime | s | 進程運行時長 |
GC 額外睡眠時間 | ExtraSleepTime | ms/s | GC 額外睡眠時間 |
alter table 請求時間 | HIVE.HMS.API_ALTER_TABLE | ms | alter table 請求平均時間 |
alter table with env context 請求時間 | HIVE.HMS.API_ALTER_TABLE_WITH_ENV_CONTEXT | ms | alter table with env context 請求平均時間 |
create table 請求時間 | HIVE.HMS.API_CREATE_TABLE | ms | create table 請求平均時間 |
create table with env context 請求時間 | HIVE.HMS.API_CREATE_TABLE_WITH_ENV_CONTEXT | ms | create table with env context 請求平均時間 |
drop table 請求時間 | HIVE.HMS.API_DROP_TABLE | ms | drop table 平均請求時間 |
drop table with env context 請求時間 | HIVE.HMS.API_DROP_TABLE_WITH_ENV_CONTEXT | ms | drop table with env context 平均請求時間 |
get table 請求時間 | HIVE.HMS.API_GET_TABLE | ms | get table 平均請求時間 |
get tables 請求時間 | HIVE.HMS.API_GET_TABLES | ms | get tables 平均請求時間 |
get multi table 請求時間 | HIVE.HMS.API_GET_MULTI_TABLE | ms | get multi table 平均請求時間 |
get table req 請求時間 | HIVE.HMS.API_GET_TABLE_REQ | ms | get table req 平均請求時間 |
get database 請求時間 | HIVE.HMS.API_GET_DATABASE | ms | get database 平均請求時間 |
get databases 請求時間 | HIVE.HMS.API_GET_DATABASES | ms | get databases 平均請求時間 |
get all database 請求時間 | HIVE.HMS.API_GET_ALL_DATABASES | ms | get all databases 平均請求時間 |
get all functions 請求時間 | HIVE.HMS.API_GET_ALL_FUNCTIONS | ms | get all functions 平均請求時間 |
當前活躍 create table 請求數 | HIVE.HMS.ACTIVE_CALLS_API_CREATE_TABLE | 個 | 當前活躍 create table 請求數 |
當前活躍 drop table 請求數 | HIVE.HMS.ACTIVE_CALLS_API_DROP_TABLE | 個 | 當前活躍 drop table 請求數 |
當前活躍 alter table 請求數 | HIVE.HMS.ACTIVE_CALLS_API_ALTER_TABLE | 個 | 當前活躍 alter table 請求數 |
參考資料
相關CWiki
-
Hive+Metrics:指標的總覽頁。提供部分指標的issues鏈接。
-
WebUIforHiveServer2:介紹WebUI可以查詢展示指標。
-
ConfigurationProperties-Metrics :介紹指標的部分配置。