Trino 中的容错执行 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Trino 中的容错执行

容错执行是 Trino 中的一种机制,集群可以使用该机制来减少查询失败。为此,它会在查询失败时重试查询或其组件任务。激活容错执行后,中间交换数据会假脱机,并且如果在查询执行期间发生 Worker 中断或其他故障,可被其他 Worker 重用。

有关 Trino 中容错执行的更多信息,请参阅 Trino 博客上的 Project Tardigrade delivers ETL at Trino speeds to early users(Project Tardigrade 以 Trino 般高速向早期用户提供 ETL)。

配置

默认情况下停用容错执行。若要激活该功能,请根据所需的重试策略将 trino-config 分类中的 retry-policy 配置属性设置为 QUERYTASK,如下所示。

{"classification": "trino-config", "properties": { "retry-policy": "QUERY" } }

QUERY 重试策略指示 Trino 在 Worker 节点上发生错误时自动重试查询。当 Trino 集群的大部分工作负载包含许多小查询时,建议您使用 QUERY 重试策略。

TASK 重试策略指示 Trino 在失败时重试单个查询任务。建议在 Trino 执行大批量查询时使用此策略。集群可以更有效地重试查询中的较小任务,而不是重试整个查询。

交换管理器

交换管理器存储和管理假脱机数据,以实现容错执行。它利用外部存储来存储超出内存缓冲区大小的溢出数据。您可以配置基于文件系统的交换管理器,将假脱机数据存储在指定位置,例如 Amazon S3、Amazon S3 兼容系统或 HDFS。

Amazon EMR 发行版 6.9.0 及更高版本包括用于配置交换管理器的 trino-exchange-manager 分类。这些版本还支持 HDFS 进行假脱机。

设置交换管理器

使用 trino-exchange-manager 配置分类来配置交换管理器。该分类会在协调器和所有 Worker 节点上创建 etc/exchange-manager.properties 配置文件。分类还将 exchange-manager.name 配置属性设置为 filesystem

默认情况下,Amazon EMR 发行版 6.9.0 及更高版本使用 HDFS 作为交换管理器。HDFS 在 Amazon EMR EC2 集群中提供,默认情况下,假脱机在 trino-exchange/ 目录中进行。要使用默认设置,请设置以下配置:

{"Classification": "trino-exchange-manager" }

如果要提供自定义位置,请在 trino-exchange-manager 分类中设置以下属性:

  • exchange.use-local-hdfs 设置为 true

  • 在 HDFS 中将 exchange.base-directories 设置为自定义目录位置,例如 exchange.base-directories=/exchange。如果自定义目录尚不在 HDFS 中,Amazon EMR 将创建该目录。

HDFS 交换管理器配置

根据内部测试结果,与其他基于云的文件系统相比,我们建议您假脱机到本地 HDFS 以实现更好的查询性能。您可以使用 HDFS,为交换管理器设置以下配置。

配置 描述 默认设置

exchange.hdfs.block-size

HDFS 存储的块大小

4MB

hdfs.config.resources

配置 HDFS 的文件路径列表

如果 exchange.use-local-hdfstrue,则使用 core-site.xmlhdfs-site.xml 文件的路径;否则为 null

有关其他容错执行配置属性及如何设置 Amazon S3 或其他 Amazon S3 兼容系统以进行假脱机的信息,请参阅 Trino 文档的容错执行页面。

注意事项和限制

  • 如果启用容错执行,则会在设置 retry-policy 时禁用不支持 write 的连接器的 write 操作。在 Amazon EMR 发行版 6.9.0 中,Delta Lake、Hive 和 Iceberg 连接器支持使用 retry-policywrite 操作。

  • 如果您使用交换管理器并执行高成本的 I/O 操作,当交换管理器将中间数据假脱机到外部存储时,查询性能可能会下降。