tencent cloud

文档反馈

作业高级参数

最后更新时间:2023-11-08 10:13:56

    简介

    用户可在作业参数 > 高级参数中配置更多自定义 Flink 参数来实现作业行为的微调,例如设置作业的重启策略、调整 SQL 的 Mini-Batch 配置、关闭异步快照、设置快照最小间隔、调整 RocksDB StateBackend 的缓存大小等。
    自定义高级参数需按照 YAML 语法,以 “key: value” 的形式进行配置,英文冒号与 value 之间需要加上空格。修改作业参数后需重新发布并启动作业才能生效。Flink 1.11的参数具体说明详见社区 官方文档

    示例

    设置作业的状态后端(State Backend)

    默认情况下,Oceanus 采用 RocksDB State Backend,这个状态后端允许超大的状态存取,但是吞吐量和性能方面比基于内存的 FileSystem State Backend 差很多。
    如果您的作业状态用量很小,且对延迟、吞吐量要求很高,可以使用下面的语句切换到基于内存的 FileSystem State Backend:
    state.backend: filesystem

    配置作业重启策略和阈值

    默认情况下,Flink 作业崩溃后只有5次内部重启(JobManager 存活时的热重启,大概15s 左右)的机会。超过阈值后再次发生崩溃时,JobManager 会主动退出,导致作业需要经历一个较长时间(约3 - 5分钟)的冷恢复过程;对于未开启快照的作业,可能造成较多的状态和数据丢失。
    如果您希望调整作业内部允许的重启次数,可以配置下面的参数(该参数允许作业内部重启最多100次,请酌情调整):
    restart-strategy: fixed-delay
    restart-strategy.fixed-delay.attempts: 100
    restart-strategy.fixed-delay.delay: 5 s

    配置 JVM Overhead 比例

    默认情况下,Flink 给 JVM 堆外原生内存(Overhead)的比例是0.1(即10%)。当使用 RocksDB 状态后端时,对此区域内存需求较大,可能会出现超额使用而造成 JVM 被容器管控系统 KILL。为了减少这种情况出现,增加使用 RocksDB 状态后端作业的稳定性,可以适当调大该参数比例。
    注意
    调大该堆外参数会导致 JVM 堆内存可用比例下降,作业更容易出现堆内 OOM,请在必要时再做调整。
    taskmanager.memory.jvm-overhead.fraction: 0.3

    配置 At Least Once 快照策略

    默认情况下,流计算 Oceanus 使用 Exactly-Once 作为默认的快照策略,该策略可以确保作业崩溃恢复后,有最精确的状态一致性,但是少数情况下可能会造成较大延迟。
    如果允许作业崩溃恢复时,一部分重复数据再次参与计算(造成短期的结果不精确),可以通过调整 Flink 的快照策略为 At Least Once,这样会取得更好的快照性能,尤其是对于状态超大且多个流之间的速度不一致时效果明显。
    execution.checkpointing.mode: AT_LEAST_ONCE

    关闭 Operator Chaining 功能

    默认情况下,Flink 会将运行图中相同并行度的算子尽可能的绑在一起,避免数据上下游传输的序列化、反序列化额外开销。如果出于定位问题的角度,希望看到每个算子的数据流入流出情况,则可以关闭这个 Operator Chaining 功能。
    注意
    关闭此功能后,作业的运行效率可能会大幅下降,请谨慎使用。
    pipeline.operator-chaining: false

    设置作业的快照超时时间

    默认情况下,Oceanus 快照超时时间为 20 分钟(1200s)。
    如果您的作业状态用量很大,可以使用以下参数配置较大的超时时间:
    execution.checkpointing.timeout: 3000s
    或者减小快照超时时间:
    execution.checkpointing.timeout: 1000s
    同时,需要在 SQL 作业的编辑页面中添加以下语句,语句的值设为与超时时间配置相同的值,参考Flink 配置项
    set CHECKPOINT_TIMEOUT= '1000 s';

    设置作业快照保存策略

    Oceanus 中 Flink 作业支持的快照保存策略为:DELETE_ON_CANCELLATION, RETAIN_ON_CANCELLATIONRETAIN_ON_SUCCESS。Flink 作业默认快照保存策略为 DELETE_ON_CANCELLATION,如果不设置该参数,自动采用默认策略。
    以下为快照保存策略的对比:
    快照保存策略
    快照清理行为
    DELETE_ON_CANCELLATION (默认策略)
    1. 停止时快照,原有 Checkpoint 删除,无法从 Checkpoint 恢复
    2. 停止时不进行快照,原有 Checkpoint 删除,无法从 Checkpoint 恢复
    RETAIN_ON_CANCELLATION
    1. 停止时快照,原有 Checkpoint 删除,无法从 Checkpoint 恢复
    2. 停止时不进行快照,原有 Checkpoint 不删除,可以从 Checkpoint 恢复
    RETAIN_ON_SUCCESS
    1. 停止时快照,原有 Checkpoint 不删除,可以从 Checkpoint 恢复
    2. 停止时不进行快照,原有 Checkpoint 不删除,可以从 Checkpoint 恢复
    用户可以在 “作业参数 - 高级参数” 中设置作业快照保存策略,设置后重启作业才能生效。
    execution.checkpointing.externalized-checkpoint-retention: RETAIN_ON_SUCCESS
    注意
    对于 Jar/PyFlink 类型的作业,建议用户不要在 Jar 包中显式设置作业快照保存策略,因为 Jar 包内设置的作业快照保存策略会覆盖高级参数中的设置。

    更多的配置参数

    Flink 提供了很多其他的配置参数,完整的列表可以参见 Flink 官方文档。
    注意
    不是所有参数都可以用在 Oceanus 平台,请仔细阅读下面的使用限制,并在充分了解问题和风险的情况下再做调整,避免调参失误造成的作业运行不稳定、无法启动等事故。

    使用限制

    以下参数由流计算 Oceanus 系统固定设置,禁止进行自定义修改,请勿在高级参数中传入。
    禁用参数
    kubernetes.container.image
    kubernetes.jobmanager.cpu
    taskmanager.cpu.cores
    kubernetes.taskmanager.cpu
    jobmanager.heap.size
    jobmanager.heap.mb
    jobmanager.memory.process.size
    taskmanager.heap.size
    taskmanager.heap.mb
    taskmanager.memory.process.size
    taskmanager.numberOfTaskSlots
    env.java.opts(但是允许用户配置 env.java.opts.taskmanager 和 env.java.opts.jobmanager 两个独立参数)
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持