更新时间:2024-11-29 GMT+08:00

配置查询容错执行能力

操作场景

当集群中的节点因网络、硬件或软件问题发生故障时,在故障节点上运行的所有查询任务都将丢失。这可能会严重影响集群生产力并造成资源浪费,尤其对于长时间运行的查询影响较大。HetuEngine提供一种故障恢复机制,即容错执行能力。集群可通过自动重新运行受影响的查询或其组件任务来降低查询失败概率。可降低人工干预并提高了容错性,但会延长总执行时间。

当前支持如下两种容错执行机制:

  • QUERY级重试策略:开启QUERY级别容错不会进行中间数据落盘,如果查询任务失败,将自动重试该查询任务的所有task。当集群的大部分工作由小查询组成时建议使用此策略。
  • TASK级重试策略:开启TASK级别容错会默认配置HDFS作为交换区,将exchange中间数据落盘,如果查询任务失败,将重试失败的task。建议在执行大批量查询时使用此策略,集群可以更高效的重试查询中的小颗粒任务,而不是整个查询。

本示例介绍设置“TASK”重试策略容错执行机制。

使用须知

  • 容错不适用于已损坏的查询或其他用户错误场景。例如:不会花费资源重试由于无法解析SQL而失败的查询任务。
  • 不同数据源对SQL语句的容错支持能力存在差异:
    • 所有数据源都支持读操作的容错执行。
    • Hive数据源支持写操作的容错执行。
  • 容错能力非常适合大批量查询,如果用户在容错集群上同时运行大量短时间小查询,则可能会遇到延迟。因此,建议处理批处理操作时使用专用的容错计算实例,与进行交互式查询的更高查询量的计算实例分开。

操作步骤

  1. 使用可访问HetuEngine WebUI界面的用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
  2. 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
  3. 在“计算实例”页签,在待操作的实例所属租户所在行的“操作”列单击“配置”。
  4. 在“自定义配置”单击“增加”添加如下参数。

    表1 容错执行参数

    参数

    取值示例

    参数文件

    描述

    retry-policy

    TASK

    • coordinator.config.properties
    • worker.config.properties
    • 容错执行重试策略。
    • 取值范围:QUERY、TASK

    task-retry-attempts-per-task

    4

    • coordinator.config.properties
    • worker.config.properties
    • 开启TASK容错时,在声明查询失败之前尝试重试单个任务的最大次数。
    • 默认值:4

    query-retry-attempts

    4

    • coordinator.config.properties
    • worker.config.properties
    • 开启QUERY容错时,在声明查询失败之前尝试重试查询的最大次数。
    • 默认值:4

    fault-tolerant-execution-task-memory

    5GB

    • coordinator.config.properties
    • worker.config.properties
    • “retry-policy”设置为“TASK”时可配置该参数,不配置默认为5GB。节点会根据可用内存和估计的内存使用情况分配任务。
    • 用于初始任务分配节点时的内存需求估计。值越大表明每个TASK预估使用的内存更大,但会导致集群并发能力变小,可根据实际业务情况动态调整。

  5. 添加完成后将“立即启动”置为“是”,单击“确定”。

    • 启用TASK容错模式后,会产生中间数据并缓存到文件系统中,过大的查询并发会对文件系统产生较大的磁盘压力。当前HetuEngine默认支持将中间数据缓冲至HDFS文件系统的临时目录中。存算分离场景对接OBS文件系统时,也能够支持TASK容错,但是中间数据仍然落盘至HDFS临时目录中。
    • 集群默认会在查询结束时完成缓冲区文件清理,且每小时检测并清理存在超期1天的残留缓冲区文件,可通过如下操作关闭周期性清理功能:

      登录Manager,选择“集群 > 服务 > HetuEngine > 配置 > 全部配置 > HSBroker(角色) > 容错执行”,将参数“fte.exchange.clean.task.enabled”的值置为“false”并保存配置。单击“实例”,勾选所有HSBroker,选择“更多 > 重启实例”,根据界面提示重启实例以使配置生效。