Trino 中的容错执行 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Trino 中的容错执行

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

有关 Trino 容错执行的更多信息,请参阅 Trino 博客上的 P roject 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 6.9.0 及更高EMR版本包含用于配置交易所管理器的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

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

HDFS交易所管理器配置

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

配置 描述 默认设置

exchange.hdfs.block-size

用于HDFS存储的区块大小

4 MB

hdfs.config.resources

要配置的文件路径列表 HDFS

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

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

注意事项和限制

  • 如果启用容错执行,则会在设置 retry-policy 时禁用不支持 write 的连接器的 write 操作。从亚马逊6.9.0 EMR 版本开始,Delta Lake、Hive和Iceberg连接器支持与的操作。write retry-policy

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