计算层高可用的主要目标是保证查询的稳定性。

日常查询分析任务在分布式的环境下,机器异常宕机在所难免。计算层高可用需要考虑如何避免因为机器宕机等异常情况导致的查询失败。

Interactive模式
对于Interactive模式,MPP计算模型下全内存的Pipeline计算无中间结果保存。同时对于interactive模式下本身目标在于延迟敏感的分析场景,目前对于计算节点异常宕机的场景,计算引擎会通过查询级别重算,保证查询稳定性。
Batch模式

对于类似ETL等数据清洗任务,这类任务计算时间长,计算资源消耗大,如果依然查询级别重试,整体重试代价过大时用户无法接受。

对于Batch模式,Stage by Stage的计算模型下的计算failover可以做到任务粒度的failover,将失败的代价最小化。

对于执行节点,Batch模式下支持计算中间数据落盘。任意节点宕机导致当前节点上的计算任务失败,可依赖计算任务间的血缘关系,找到上一次持久化的中间数据结果,对失败任务进行重新调度计算,而且仅重新计算失败的任务。对于Coordinator前端节点,通过持久化查询的元数据,通过调度新的Coordinator节点,加载查询元数据进行继续调度,做到用户无感知。

计算failover