在 Presto 中处理竞价型实例丢失 - Amazon EMR

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

在 Presto 中处理竞价型实例丢失

借助 Amazon 中的竞价型实例EMR,您可以以更低的成本使用剩余的 Amazon EC2 容量运行大数据工作负载。为了换取更低的成本,Amazon EC2 可以通过两分钟的通知中断竞价型实例。当您终止某个节点时,Presto 最长可能需要 10 分钟才会返回错误。这会导致错误报告出现不必要的延迟,并可能导致重试。快速终止功能可让您控制 Presto 处理已终止节点的方式。

Presto 协调器的作用是通过定期轮询其状态来跟踪所有 Worker 节点。如果不快速终止,协调器就不会查阅每个节点的状态。YARN NodeManager 这可能导致在查询失败之前出现长时间的重试循环。通过快速终止, NodeManager 只要轮询未能到达主机,Presto 协调器就会立即在中查看节点状态。如果 NodeManager 显示该节点处于非活动状态,Presto 将放弃进一步的重试,查询失败并返回错误。NODE_DECOMMISSIONED

下面的一组配置参数允许您控制和自定义 Presto 在节点终止时的行为。

Presto 的节点故障处理配置
设置 描述 默认
query.remote-task.max-backoff-duration 协调器会继续尝试从 Worker 节点获取远程任务状态的持续时间。 10 分钟
query.remote-task.quick-terminate-node-failure

如果协调器无法连接到该节点或在该节点上运行的工作线程,则将激活快速节点故障。query.remote-task.terminate-on-connect-exception 的值将决定协调器是必须连接到该节点还是必须连接到工作线程。

该节点查询失败,Amazon EMR 将该节点从可用工作线程列表中删除。发生这种情况时,您将无法使用该节点来计划新的查询。

如果您将此值设置为 false,Presto 会恢复其先前的行为,即 Presto 协调器在将该节点标记为不可用之前再次尝试连接到该节点(对于 query.remote-task.max-backoff-duration),并且将该节点上正在进行的查询设为失败。

true
query.remote-task.terminate-on-connect-exception 指定如果主机可以访问但协调器无法连接到主机的工作进程,Amazon 是否EMR应设置节点。将此值设置为 true 时,则将在无法访问主机时激活快速查询失败。 false