在 Presto 中处理竞价型实例丢失
在 Amazon EMR 中使用竞价型实例时,您可以通过较低的成本利用 Amazon EC2 容量运行大数据工作负载。为换取更低的成本,Amazon EC2 可能会在发出两分钟通知后中断竞价型实例。当您终止某个节点时,Presto 最长可能需要 10 分钟才会返回错误。这会导致错误报告出现不必要的延迟,并可能导致重试。快速终止功能可让您控制 Presto 处理已终止节点的方式。
Presto 协调器的作用是通过定期轮询其状态来跟踪所有 Worker 节点。不使用快速终止功能时,协调器不会向 YARN NodeManager 查询各个节点的状态。这可能导致在查询失败之前出现长时间的重试循环。使用快速终止功能后,一旦轮询未能连接到主机,Presto 协调器将会向 NodeManager 查询节点状态。如果 NodeManager 显示节点处于非活动状态,则 Presto 会放弃继续重试,查询失败并返回 NODE_DECOMMISSIONED
错误。
下面的一组配置参数允许您控制和自定义 Presto 在节点终止时的行为。
设置 | 描述 | 默认 |
---|---|---|
query.remote-task.max-backoff-duration |
协调器会继续尝试从 Worker 节点获取远程任务状态的持续时间。 | 10 分钟 |
query.remote-task.quick-terminate-node-failure |
如果协调器无法连接到该节点或在该节点上运行的工作线程,则将激活快速节点故障。 节点查询失败,并且 Amazon EMR 会将该节点从可用工作线程列表中移除。发生这种情况时,您将无法使用该节点来计划新的查询。 如果您将此值设置为 |
true |
query.remote-task.terminate-on-connect-exception |
如果可以连接到主机但协调器无法连接到主机上的工作进程,则指定 Amazon EMR 是否应作为节点。将此值设置为 true 时,则将在无法访问主机时激活快速查询失败。 |
false |