一、概述
Presto(现在叫Trino)是一个分布式SQL查询引擎,它答应用户在多个数据源上履行查询。Presto本身是一个独立的Java程序,能够经过REST API与其他应用程序进行通讯。
Presto的REST API是一组HTTP接口,能够用于与Presto服务器进行通讯,并提交查询恳求、获取查询成果等。以下是Presto REST API的一些常见用途:
-
履行SQL查询:运用REST API,能够提交SQL查询恳求,并从Presto服务器获取查询成果。
-
获取查询进展:运用REST API,能够获取当前查询的进展和状况,例如查询已经履行的百分比、估计完结时刻等。
-
查询元数据:运用REST API,能够获取Presto服务器上的表和列的元数据信息,例如表的称号、列的数据类型等。
-
办理Presto集群:运用REST API,能够办理Presto集群中的节点,例如添加或删除节点,重新启动节点等。
-
获取集群状况:运用REST API,能够获取Presto集群的状况、版本号等信息。
Presto REST API运用JSON格式进行数据交互,并供给了许多API端点以满足不同的需求。除此之外,Presto REST API还供给了一些安全操控和权限办理功用,例如对拜访API的用户进行身份验证、操控用户的操作权限等。
总归,Presto REST API供给了一种简单、快速、可靠地与Presto进行通讯的方法,为Presto的用户供给了更多自由、灵敏的操作空间。
二、环境准备
如已经有环境了,能够疏忽,如想快熟布置Presto(Trino)环境可参看我这篇文章:【大数据】经过 docker-compose 快速布置 Presto(Trino)保姆级教程
docker exec -it trino-coordinator bash
# --catalog:数据源 --schema:数据库
${TRINO_HOME}/bin/trino-cli --server http://trino-coordinator:8080 --user=hadoop
三、常用 REST API
以下是一些常见的Presto REST API端点和用途:
-
/v1/catalog
:从Presto服务器获取一切数据源的元数据信息,例如数据源称号、表名、列名、数据类型等。 -
/v1/query
:提交一个SQL查询恳求,Presto服务器会立即回来一个查询ID,并在后台履行查询。运用这个ID,能够获取查询的状况和成果。 -
/v1/query/{queryId}/status
:获取查询的状况信息,例如查询是否已经完结、已经履行的百分比等。 -
/v1/query/{queryId}/results
:获取查询的成果,以JSON格式回来。这个端点能够屡次调用,以获取查询的不同成果部分。 -
/v1/query/{queryId}/cancel
:撤销正在履行的查询恳求。 -
/v1/cluster
:获取Presto集群的一切节点信息,包括节点IP地址、端口号、作业状况等。 -
/v1/info
:获取Presto服务器的版本号、构建时刻、运行时信息等。 -
/v1/stats
:获取Presto服务器的运用统计信息,例如查询履行次数、查询呼应时刻、查询失败次数等。
经过运用这些REST API端点,能够方便地与Presto服务器进行交互,并对Presto进行操控和办理。同时,Presto REST API还供给了若干参数选项和高档功用,能够让用户对Presto服务器的行为进行更加精密的操控和优化。
1)worker 节点高雅退出
官方文档:trino.io/docs/curren…
Trino 有一个高雅的封闭 API,能够专门用于 以确保它们在不影响正在运行的查询的情况下终止,给定 满足的宽限期。
# 睡眠 shutdown.grace-period,默认为 2 分钟。如有使命直到一切活动使命完结。
# 封闭应用程序。
curl -v -X PUT -d '"SHUTTING_DOWN"' -H "Content-type: application/json" \
http://worker:8080/v1/info/state
# 示例:
curl -v -X PUT -d '"SHUTTING_DOWN"' -H "Content-type: application/json" \
http://docker-compose-presto-trino-worker-2:8080/v1/info/state
2)提交SQL查询恳求
curl --request POST \
--url http://presto-server:8080/v1/query \
--header 'content-type: application/json' \
--data '{
"query": "SELECT COUNT(*) FROM schema.table",
"timezone": "Asia/Shanghai"
}'
此指令向Presto服务器提交一个SQL查询恳求,查询的SQL句子是"SELECT COUNT(*) FROM schema.table"
,时区设置为"Asia/Shanghai"
。履行成功后,Presto服务器会立即回来一个查询ID
。
3)获取查询状况
curl http://presto-server:8080/v1/query/query-id/status
这个指令运用查询ID查询查询的状况信息,”query-id”是需要替换为详细的查询ID。
4)获取查询成果
curl http://presto-server:8080/v1/query/query-id/results/1
这个指令运用查询ID获取查询成果,”1″表示成果是从第一条开端获取的。履行成功后,Presto服务器会以JSON格式回来查询成果。
5)撤销查询恳求
curl --request DELETE http://presto-server:8080/v1/query/query-id
这个指令会撤销查询ID对应的查询恳求,而且终止查询履行。
6)获取Presto 节点信息
curl http://presto-server:8080/v1/node
为检索集群中可用Trino节点的列表供给支持。
7)获取Presto服务器运用统计信息
curl http://presto-server:8080/v1/status
这个指令回来Presto服务器的运用统计信息,例如查询履行次数、查询呼应时刻、查询失败次数等。
8)获取查询方案
curl http://presto-server:8080/v1/query/query-id/plan
这个指令回来查询ID对应的查询方案,包括查询方案中运用的数据源、过滤器、衔接方法等信息。
这儿仅仅列举出部分的api,想了解更多,可参看官方文档。
四、Presto(Trino)履行方案
Presto(Trino)履行方案的生成基于Presto(Trino)的分布式查询引擎。Presto(Trino)将一个查询分化成多个使命,并在多个节点上并行履行这些使命。履行方案记载每个使命的履行方法,以及每个使命中运用的算子和资源。
以下是Presto(Trino)履行方案的根本生成原理:
-
解析:Presto(Trino)将查询句子解析成一棵语法树。这个语法树包含了查询的各个组成部分,如挑选器、联合条件、过滤条件等等。
-
逻辑优化:Presto(Trino)对语法树进行逻辑优化。例如,它能够经过重组联合条件来改善查询功能,或许消除不必要的过滤器。
-
物理优化:Presto(Trino)将逻辑方案转换为物理方案。这个过程中,Presto(Trino)挑选合适的算子和衔接方法,以在整个集群中同享计算负载。
-
使命划分:Presto(Trino)将物理方案分化成多个小使命,并在节点上并行履行这些使命。每个使命都包含一个或多个算子,并指定运用哪些资源和节点。
-
**履行方案:**Presto(Trino)生成履行方案,描绘一切使命的履行方法以及每个使命中运用的算子和资源。这个履行方案能够在查询期间进行动态更新,而且会根据查询的进展和节点负载进行调整。
总归,Presto(Trino)履行方案的生成基于一系列逻辑和物理优化,以及使命分化和分布式履行等技能。经过运用履行方案,您能够更好地了解查询的履行方法和功能瓶颈,从而对查询进行优化。
Presto(Trino)REST API 与履行方案介绍就先到这儿了,有任何疑问欢迎私信或留言,也可重视我【大数据与云原生技能分享】加群或私信咨询问题~