AWS Athena并发限制:提交查询的数量VS正在运行的查询的数量。

21
根据AWS Athena限制,您可以一次提交最多20个相同类型的查询,但这是软限制,可以根据请求增加。我使用boto3与Athena交互,我的脚本提交16个CTAS查询,每个查询需要约2分钟才能完成。在AWS帐户中,只有我在使用Athena服务。然而,当我通过控制台查看查询状态时,我发现只有少数查询(平均5个)实际上正在执行,尽管它们全部处于“运行”状态。以下是通常在Athena历史选项卡中看到的内容:

Athena hisotry tab

我知道,当我提交查询到 Athena 后,它会根据整体服务负载和进入的请求量分配资源来处理查询。但我尝试在不同的日期和时间运行它们,仍然会有大约5个查询同时执行。 那么我的问题是,这应该是这样的吗?如果是这样的话,那么最多能提交20个查询的能力的意义是什么?如果大约有15个查询处于空闲状态并等待可用插槽,那么这还有什么意义呢?
2019-09-26更新: 刚刚在 Presto 文档中发现了 HIVE 连接器,其中有一个 AWS Glue Catalog Configuration Properties 部分。在那里我们可以看到:
“hive.metastore.glue.max-connections”:连接到 Glue 的最大并发连接数(默认为5)。
这让我想知道它是否与我的问题有关。据我所知,Athena 只是运行在配置为将 AWS Glue 数据目录作为 Metastore 使用的 EMR 集群上的 Presto。 那么,如果我的问题源于 Athena 的 EMR 集群仅使用 Glue 的并发连接的默认值,即 5,这正好是在我的情况下实际上正在执行的平均并发查询的数量。
最近,Athena团队为Athena部署了许多新功能。尽管QUEUED已经在状态枚举中存在一段时间,但直到现在才被使用。因此,现在我可以在历史选项卡中获得正确的查询状态信息,但其他所有内容仍然保持不变。

enter image description here

另外,另一篇文章也发表了类似的问题。


Athena服务限制默认允许您提交最多20个查询。然后,Athena尽快处理这些查询。根据我的经验,您所看到的是典型的行为。能够提交20个查询的重点在于这些查询将尽快执行。 - Tyrone321
1个回答

2

您的 Athena 服务限制并非 SLA,而是查询调度程序中的优先级。

根据可用容量,即使您没有运行任何其他查询,您的查询也可能会排队。更高并发限制的确切含义是内部的,可能会发生变化,但根据我的经验,最好将其视为查询调度程序处理您的查询的优先级。所有帐户的查询在相同的服务器池中运行,如果每个人都在运行查询,则不会留下任何容量供您使用。

您可以通过多次运行相同的查询,然后绘制随时间变化的查询执行指标来观察此过程,您会注意到它们变化很大,并且您的查询在每个小时的顶部排队时会出现峰值-当其他人运行其计划查询时。


增加提交的查询数量只是意味着我可以将更多的查询放入队列中吗?好的,我明白了,但令我困惑的是,无论我何时提交它们,我总是会看到4-5个查询处于运行状态,而不管是哪个月、哪一天或哪个小时。我从未见过大于5个的情况。 - Ilya Kisil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接