在 Presto 中处理竞价型实例丢失 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

Presto 协调器的作用是通过定期轮询其状态来跟踪所有 Worker 节点。不使用快速终止功能时,协调器不会向 YARN NodeManager 查询各个节点的状态。这可能导致在查询失败之前出现长时间的重试循环。使用快速终止功能后,一旦轮询未能连接到主机,Presto 协调器将会向 NodeManager 查询节点状态。如果 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