本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Trino 中的容错执行
容错执行是 Trino 中的一种机制,集群可以使用该机制来减少查询失败。为此,它会在查询失败时重试查询或其组件任务。激活容错执行后,中间交换数据会假脱机,并且如果在查询执行期间发生 Worker 中断或其他故障,可被其他 Worker 重用。
有关 Trino 容错执行的更多信息,请参阅 Trino 博客上的 P roject Tardigrade 以 Trino 的速度向早期用户提供ETL
配置
默认情况下停用容错执行。若要激活该功能,请根据所需的重试策略将 trino-config
分类中的 retry-policy
配置属性设置为 QUERY
或 TASK
,如下所示。
{"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。
配置 | 描述 | 默认设置 |
---|---|---|
|
用于HDFS存储的区块大小 |
4 MB |
|
要配置的文件路径列表 HDFS |
如果 |
有关其他容错执行配置属性及如何设置 Amazon S3 或其他 Amazon S3 兼容系统以进行假脱机的信息,请参阅 Trino 文档的容错执行
注意事项和限制
-
如果启用容错执行,则会在设置
retry-policy
时禁用不支持write
的连接器的write
操作。从亚马逊6.9.0 EMR 版本开始,Delta Lake、Hive和Iceberg连接器支持与的操作。write
retry-policy
-
如果您使用交换管理器并执行高成本的 I/O 操作,当交换管理器将中间数据假脱机到外部存储时,查询性能可能会下降。