CDH-TSQL详解(超详细)

2024-01-09 21:04
文章标签 详解 详细 tsql cdh

本文主要是介绍CDH-TSQL详解(超详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、TSQL简介
    • 1. TSQL是什么
    • 2. 用法
    • 3. TSQL的常见的查询方法
      • 3.1 检索角色类型为 DataNode 的所有指标的时间序列数据。
      • 3.2 检索角色类型为 DataNode 的 cpu_user_rate 指标的时间序列数据
      • 3.3 检索所有实体的health_bad_rate指标的时间序列数据
  • 二、TSQL语法
    • 1. 语法
    • 2. TSQL语句的特点
    • 3. 指标表达式(metric expression)
    • 4. 指标表达式函数
    • 5. predicate
      • 5.1 time_series_attribute operator value
      • 5.2 scalar_producing_function(metric_expression) comparator number
      • 5.3 根据时间过滤
        • 5.3.1 按天过滤
        • 5.3.2 按小时过滤
  • 三、属性
    • 1. 时间序列属性
    • 2. 时间序列实体及其属性
  • 总结


前言

本文主要介绍了TSQL(Time Series Query Language)的语法和使用方法。TSQL是一种用于从Cloudera Manager时间序列数据存储中检索时间序列数据的查询语言。通过使用TSQL,我们可以方便地从CDH的API中检索CDH集群各项服务的指标。本文首先介绍了TSQL的基本概念和使用方法,然后详细介绍了TSQL的语法和各种功能,包括指标表达式、predicate、时间过滤等。最后,本文还介绍了TSQL中的一些属性,这些属性可以帮助我们更精确地检索所需的时间序列数据。


一、TSQL简介

1. TSQL是什么

TSQL是Time Series Query Language(时间序列查询语言)的简称。TSQL用于指定从 Cloudera Manager 时间序列数据存储中检索时间序列数据的语句。 一般用于从CDH的API中检索CDH集群各项服务的指标。

2. 用法

API前缀:http://localhost:7180/api/v33

/timeseries?query=TSQL statement

注意:若使用curl命令来发送请求,需要把TSQL statement中间的空格编码为UTF-8字符集。

3. TSQL的常见的查询方法

3.1 检索角色类型为 DataNode 的所有指标的时间序列数据。

select * where roleType=DATANODE

使用示例:

curl -u admin:admin -X GET --header 'Accept: application/json' 'http://localhost:7180/api/v33/timeseries?query=select%20*%20where%20roleType=DATANODE'

3.2 检索角色类型为 DataNode 的 cpu_user_rate 指标的时间序列数据

select cpu_user_rate where roleType=DATANODE

使用示例:

curl -u admin:admin -X GET --header 'Accept: application/json' 'http://localhost:7180/api/v33/timeseries?query=select%20cpu_user_rate%20where%20roleType=DATANODE'

3.3 检索所有实体的health_bad_rate指标的时间序列数据

select health_bad_rate

使用示例:

curl -u admin:admin -X GET --header 'Accept: application/json' 'http://localhost:7180/api/v33/timeseries?query=select%20health_bad_rate'

二、TSQL语法

1. 语法

SELECT [metric expression] WHERE [predicate]

2. TSQL语句的特点

  1. 语句 select * 是无效的。SELECT * WHERE [predicate]是有效的。在[metric expression]不是*的情况下可以省略[predicate]
  2. 大小写不敏感。
  3. 可以使用分号将多个TSQL语句连接起来。例如:select cpu_user_rate where roleType=DATANODE; select health_bad_rate

3. 指标表达式(metric expression)

  1. 指标表达式生成时间序列是一个由逗号分隔的一个或多个指标表达式语句的列表。指标表达式语句是指标名称、指标表达式函数或常数值,由一个或多个指标表达式操作符连接。

  2. 指标表达式支持二进制操作符:+,-,*,/。

4. 指标表达式函数

函数是否返回标量(Y/N)描述
avg(metric expression)N计算时间序列的平均值
count_service_roles()Y返回角色的数量。1. count_service_roles(roleType, roleState) - 返回指定roleType和roleState的角色数量。例如,count_service_roles(datanode, running) 返回正在运行的DataNode数量。2. count_service_roles(roleType) - 返回具有指定roleType的角色数量。3. count_service_roles() - 返回角色总数。例如,select events_critical where count_service_roles() > 100 将返回角色数大于100时 event_critical 指标的数据。
dt(metric expression)N负值的导数。表示每秒指标表达式的变化。
dt0(metric expression)N跳过负值的导数(用于处理计数器重置)
getClusterFact(string factName, double defaultValue)Y获取有关集群的事实。目前支持一个事实:numCores(核心数)。如果无法确定核心数,则返回defaultValue。
getHostFact(string factName, double defaultValue)Y获取有关主机的事实。目前支持一个事实:numCores(核心数)。如果无法确定核心数,则返回defaultValue。
greatest(metric expression, scalar metric expression)N比较两个指标表达式,其中一个是标量指标表达式。返回一个时间序列,其中每个点的结果是通过评估 max(point, scalar metric expression) 得到的。
integral(metric expression)N计算流的积分值,并返回一个时间序列流,其中每个数据点是原始流对应数据点的积分值。例如,select integral(maps_failed_rate) 将返回maps失败数量的计数。
counter_delta(metric expression)N计算流中计数器的差值,并返回一个时间序列流,其中每个数据点是原始流中相应数据点的计数器值与前一个数据点的差值。例如:select counter_delta(maps_failed_rate)返回失败maps的数量。此方法比integral()函数更准确。注意事项:1. 此函数仅适用于单个时间序列流。对于跨实体聚合的流,继续使用integral()函数。2. 如果您将此方法应用于版本低于5.7的Cloudera Manager创建的时间序列流,Cloudera Manager会使用integral()函数填充旧数据点。
last(metric expression)Y返回时间序列的最后一个数据点。例如,要检索cpu_percent指标时间序列的最后一个数据点,使用表达式 select last(cpu_percent)。
least(metric expression, scalar metric expression)N比较两个指标表达式,其中一个是标量指标表达式。返回一个时间序列,其中每个点是评估min(point,scalar metric expression)的结果。
max(metric expression)Y计算时间序列的最大值。例如:select max(cpu_percent)
min(metric expression)Y计算时间序列的最小值。
moving_avg(metric expression, time_window_sec)N计算时间序列在以秒为单位指定的时间窗口time_window_sec上的移动平均值(2、0.1等)
stats(metric expression, stats name)N某些时间序列流对每个数据点都有额外的统计信息。这些包括time-series streams, cross-entity aggregates, 和 rate指标。以下统计信息可用于聚合和跨实体聚合:max、min、avg、std_dev和sample。对于rate度量,可以使用“计数器”统计信息获得底层计数器值。例如,stats(fd_open_across_datanode, max)或stats(swap_out_rate, counter)。
sum(metric expression)Y计算时间序列的和值。

5. predicate

predicate用于限制返回序列中的流的数量,并可以采用以下形式之一:

5.1 time_series_attribute operator value

  • time_series_attribute 是支持的属性之一。
  • operator=rlike 之一。
  • value 是一个属性值,符合以下约束条件:
    • 对于包含空格或以 xxxName 形式(如 displayName)的属性值,使用带引号的字符串。
    • rlike 运算符对应的值必须用引号括起来。例如:hostname rlike "host[0-2]+.*"
    • value 支持任何正则表达式。

5.2 scalar_producing_function(metric_expression) comparator number

  • scalar_producing_function 是任何接受时间序列并产生标量结果的函数。例如: min 或 max。
  • metric_expression 是有效的指标表达式。
  • comparator是比较运算符<, <=, =, !=, >=, >
  • number 可以是任何数字表达式或带单位的数字表达式。例如: 3、3mb、3s 都是有效数字表示法. 合法单位有:
    • 时间 - ms (毫秒), s (秒), m (分钟), h (小时),d(天)。
    • 字节 - b(字节),kb 或 kib(千字节),mb 或 mib(兆字节),gb 或 gib(吉字节),tb 或 tib,pb 或 pib。
    • 每秒钟传输的字节数 - 字节和时间:bps, kbps, kibps, mbps,mibps等。例如,每秒传输5千字节为 5kb/s。
    • 字节数乘以时间 - 字节和时间的组合:bms、bs、bm、bh、bd 等。例如,每秒传输5千字节为 5ks 或者 5kis。
  • 可以使用 ANDOR 运算符来组合复合predicate。

5.3 根据时间过滤

5.3.1 按天过滤

day in()表达式接受一个参数,该参数包含一个用逗号分隔的星期列表。一周的天数从数字1到数字7。
语法:

day in (#, #, ...)

例如,下面的表达式将流限制为只在工作日发生的事件:

day in (1,2,3,4,5)

在WHERE子句后面添加日期或时间范围表达式。不使用AND关键字。例如:

select fd_open where category = ROLE and roleType = SERVICEMONITOR day in (1,2,3,4,5) 
5.3.2 按小时过滤

hour in 表达式接受一个参数,该参数的时间范围由冒号分隔。有效值为0 ~ 23的整数.
语法:

hour in [#:#]

例如,下面的表达式将流限制为只发生在上午9:00到下午5:00之间的事件:

hour in [9:17]

表达式中组合day in和hour。总是将日表达式放在小时表达式之前。以下示例将流限制为工作日上午9:00到下午5:00:

select fd_open where category = ROLE and roleType = SERVICEMONITOR day in (1,2,3,4,5) hour in [9:17]

三、属性

1. 时间序列属性

属性名和大多数属性值不区分大小写。displayName和serviceType是两个区分大小写的属性。

名称描述
active指示要检索的实体是否必须是活动的。非活动实体是指已从集群中移除或删除的实体。默认情况下,只检索活动实体(即active=true)。要访问已删除或已移除实体的时间序列,请在查询中指定active=false。例如:fd_open WHERE roleType=DATANODE and active=false
agentNameFlume代理名称
applicationNameCloudera Manager监视守护进程的应用程序名称
cacheIdHDFS缓存指令ID
category1. 查询返回的实体类别:CLUSTER、DIRECTORY、DISK、FILESYSTEM、FLUME_SOURCE、FLUME_CHANNEL、FLUME_SINK、HOST、HTABLE、IMPALA_QUERY_STREAM、NETWORK_INTERFACE、ROLE、SERVICE、USER、YARN_APPLICATION_STREAM、YARN_QUEUE。有些指标是为不止一种类型的实体收集的。例如,total_cpu_user收集类别是HOST和ROLE的实体。要检索仅针对主机的数据,使用: total_cpu_user where category=HOST 2. ROLE类别适用于所有角色类型。SERVICE类别适用于所有服务类型。例如,要检索host1上所有角色的已提交堆,使用:jvm_committed_heap_mb where category=ROLE and hostname=“host1”
clusterDisplayName用户自定义的集群显示名称
clusterName集群ID。要通过显示名称指定集群,请使用clusterDisplayName属性。
componentNameFlume组件名称。例如,channel1, sink1。
device磁盘设备名称。例如,sda。
entityName实体名称,显示名加上唯一标识符。例如:HDFS-1-DATANODE-692d141f436ce70aac080aedbe83f887。
expired指示HDFS缓存指令是否过期的布尔值
groupName用户组名
hbaseNamespaceHBase命名空间的名称
hostId主机ID(唯一且不可改变),Cloudera Manager中主机的规范标识符。例如:3d645222-2f7e-4895-ae51-cd43b91f1e7a。
hostname主机名称
hregionNameHBase的区域名称。例如:4cd887662e5c2f3cd5dd227bb03dd760
hregionStartTimeMs从Cloudera Manager监控开始收集HBase区域的指标到UNIX的毫秒数
htableNameHBase表名
iface网络接口名称。例如eth0
logicalPartition指示磁盘是否为逻辑分区的布尔值。适用于磁盘实体类型。
mountpoint挂载点名称。例如:/var、/mnt/homes
nameserviceNameHDFS名称服务的名称
ownerName所有者用户名
partition分区名称。适用于分区实体类型。
path与时间序列实体相关联的文件系统路径
poolName池名。例如hdfs cache pool, yarn pool
queueNameYARN队列的名称
rackId挂载点ID。例如,/default。
roleConfigGroup角色所属的角色组
roleName角色ID。例如HBASE-1-REGIONSERVER-0b0ad09537621923e2b460e5495569e7。
roleState角色状态:BUSY、HISTORY_NOT_AVAILABLE、NA、RUNNING、STARTING、STOPPED、STOPPED、UNKNOWN
roleType角色类型:ACTIVITYMONITOR、AGENT、ALERTPUBLISHER、BEESWAX_SERVER、CATALOGSERVER、DATANODE、EVENTSERVER、FAILOVERCONTROLLER、HBASE_INDEXER、HBASERESTSERVER、HBASETHRIFTSERVER、hiveetastore、HIVESERVER2、HOSTMONITOR、HTTPFS、HUESERVER、IMPALAD、JOBHISTORY、JOBTRACKER、JOURNALNODE、KT_RENEWER、LLAMA、MASTER、NAVIGATOR、REGIONSERVER、SERVICEMONITOR、NAMENODE、NODEMANAGER、REPORTSMANAGER、SECONDARYNAMENODE、SERVER、SOLR_SERVER、SQOOP_SERVER、STATESTORE、TASKTRACKER。
rollup时间序列存储表汇总类型
schedulerType与池服务关联的调度器类型
serviceDisplayName自定义的服务实体显示名称
serviceName服务ID。要通过显示名称指定服务,请使用serviceDisplayName属性。
serviceState服务状态:HISTORY_NOT_AVAILABLE、NA、RUNNING、STARTING、STOPPED、STOPPED、UNKNOWN
serviceType服务类型:ACCUMULO、FLUME、HDFS、HBASE、HIVE、HUE、IMPALA、KS_INDEXER、MAPREDUCE、MGMT、OOZIE、SOLR、SPARK、SQOOP、YARN、ZOOKEEPER
solrCollectionNameSolr集合名称。例如,my_collection。
solrReplicaNameSolr副本名称。例如,my_collection_shard1_replica1。
solrShardNameSolr分片名称。例如,shard1。
systemTable一个布尔值,表示该HBase表是否是系统表。
tableName表的名称
userName用户名
version集群的版本号。可以是支持的任意CDH主版本。

2. 时间序列实体及其属性

下表显示了可以出现在查询语句的predicate("where"子句)中的实体和相关属性。

实体属性
All RolesroleType, hostId, hostname, rackId, serviceType, serviceName
All ServicesserviceName, serviceType, clusterId, version, serviceDisplayName, clusterDisplayName
AgentroleType, hostId, hostname, rackId, serviceType, serviceName, clusterId, version, agentName, serviceDisplayName, clusterDisplayName
ClusterclusterId, version, clusterDisplayName
DirectoryroleName, hostId, path, roleType, hostname, rackId, serviceType, serviceName, clusterId, version, agentName, hostname, clusterDisplayName
Diskdevice, logicalPartition, hostId, rackId, clusterId, version, hostname, clusterDisplayName
File SystemhostId, mountpoint, rackId, clusterId, version, partition, hostname, clusterDisplayName
Flume ChannelserviceName, hostId, rackId, roleName, flumeComponent, roleType, serviceType, clusterId, version, agentName, serviceDisplayName, clusterDisplayName
Flume SinkserviceName, hostId, rackId, roleName, flumeComponent, roleType, serviceType, clusterId, version, agentName, serviceDisplayName, clusterDisplayName
Flume SourceserviceName, hostId, rackId, roleName, flumeComponent, roleType, serviceType, clusterId, version, agentName, serviceDisplayName, clusterDisplayName
HDFS Cache PoolserviceName, poolName, nameserviceName, serviceType, clusterId, version, groupName, ownerName, serviceDisplayName, clusterDisplayName
HNamespaceserviceName, namespaceName, serviceType, clusterId, version, serviceDisplayName, clusterDisplayName
HosthostId, rackId, clusterId, version, hostname, clusterDisplayName
HRegionhtableName, hregionName, hregionStartTimeMs, namespaceName, serviceName, tableName, serviceType, clusterId, version, roleType, hostname, roleName, hostId, rackId , serviceDisplayName, clusterDisplayName
HTablenamespaceName, serviceName, tableName, serviceType, clusterId, version, serviceDisplayName, clusterDisplayName
NetworkInterface hostId, networkInterface, rackId, clusterId, version, hostname, clusterDisplayName
RackrackId
ServiceserviceName, serviceType, clusterId, serviceDisplayName
Solr CollectionserviceName, serviceType, clusterId, version, serviceDisplayName, clusterDisplayName
Solr ReplicaserviceName, solrShardName, solrReplicaName, solrCollectionName, serviceType, clusterId, version, roleType, hostId, hostname, rackId, roleName, serviceDisplayName, clusterDisplayName
Solr SeriesShard serviceName, solrCollectionName, solrShardName, serviceType, clusterId, version, serviceDisplayName, clusterDisplayName
TimeTable tableName, roleName, roleType, applicationName, rollup, path
UseruserName
YARN PoolserviceName, queueName, schedulerType

总结

通过学习本文,我们了解了TSQL的基本概念和使用方法,学会了如何使用TSQL从Cloudera Manager时间序列数据存储中检索时间序列数据。我们还详细了解了TSQL的语法和各种功能,包括指标表达式、predicate、时间过滤等。此外,我们还学习了TSQL中的一些属性,这些属性可以帮助我们更精确地检索所需的时间序列数据。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

这篇关于CDH-TSQL详解(超详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588427

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级