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.enabled
if (conf.getBoolVar(ConfVars.METASTORE_METRICS)) {
try {
MetricsFactory.init(conf);
} catch (Exception e) {
// log exception, but ignore inability to start
LOG.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 {
@Override
public void run() {
Stopwatch sw = new Stopwatch();
// 获取GC情况,GC次数和GC耗时ms
Map<String, GcTimes> gcTimesBeforeSleep = getGcTimes();
while (shouldRun) {
sw.reset().start();
try {
// 监控线程自我休眠500ms
Thread.sleep(SLEEP_INTERVAL_MS);
} catch (InterruptedException ie) {
return;
}
// 上次查询时间-减去休眠就是暂停的耗时
long extraSleepTime = sw.elapsed(TimeUnit.MILLISECONDS) - SLEEP_INTERVAL_MS;
Map<String, GcTimes> gcTimesAfterSleep = getGcTimes();
// warnThresholdMs默认10000ms
if (extraSleepTime > warnThresholdMs) {
++numGcWarnThresholdExceeded;
LOG.warn(formatMessage(
extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep));
// 指标jvm.pause.info-threshold进行+1
incrementMetricsCounter(MetricsConstant.JVM_PAUSE_WARN, 1);
}
// infoThresholdMs默认1000ms
else if (extraSleepTime > infoThresholdMs) {
++numGcInfoThresholdExceeded;
LOG.info(formatMessage(
extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep));
// 指标jvm.pause.warn-threshold进行+1
incrementMetricsCounter(MetricsConstant.JVM_PAUSE_INFO, 1);
}
// jvm.pause.extraSleepTime 累计时间? ms
incrementMetricsCounter(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>() {
@Override
public 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>() {
@Override
public Counter load(String key) {
Counter counter = new Counter();
metricRegistry.register(key, counter);
return counter;
}
}
);
meters = CacheBuilder.newBuilder().build(
new CacheLoader<String, Meter>() {
@Override
public 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 name
applicationName, // Component name
applicationName, // Component description
"General"); // Name for each metric record
metrics2Reporter.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 :介绍指标的部分配置。