作业调试

您可以使用作业调试功能模拟作业运行、检查输出结果,验证SELECT或INSERT业务逻辑的正确性,提升开发效率,降低数据质量风险。本文为您介绍如何进行Flink SQL作业调试。

背景信息

您可以在Flink开发控制台使用作业调试功能本地验证作业逻辑的正确性,而不会将数据实际写入您生产的下游中(无论您使用什么样的结果表)。使用调试功能时,您可以使用上游的线上数据或指定调试数据。调试可以包含多个SELECT或INSERT的复杂作业。此外,查询语句支持UPSERT,即可以执行count(*)等包含更新操作的语句。

使用限制

  • 作业调试功能需要已创建Session集群。

  • 仅SQL作业支持作业调试。

  • CTAS和CDAS语法不支持调试。

  • VVR 4.0.8及以下版本的Session集群不支持调试CDC源表,因为CDC源表不是Append-only模式。

  • Flink全托管默认读取最多1000条数据后会自动暂停。

注意事项

  • 在创建Session集群时会消耗集群资源,其中消耗的资源和您创建集群时选择的资源配置有关。

  • VVR 3.0.4及以下版本的每个Session集群运行后,都会额外消耗0.5 CU的资源。

  • 请勿将Session集群用于正式生产环境,Session集群可以作为开发测试环境。使用Session集群调试作业,可以提高作业JM(Job Manager)资源利用率。在正式环境中使用Session集群,JM的复用机制会对作业间的稳定性产生负面影响,详情如下:

    • JobManager单点故障会对集群内的所有作业造成影响。

    • TaskManager单点故障会对在其上有task运行的相关作业造成影响。

    • 同一个TaskManager内部,不同Task之间如果没有进程隔离,则存在相互影响的潜在风险。

  • 如果Session集群为默认配置,则有以下建议:

    • 对于单并发的小作业,建议整个集群的作业总数不超过100个。

    • 对于复杂作业,建议单作业最大并发数不超过512,64个并发的中等规模作业单集群不多于32个。否则可能会出现心跳超时等问题影响集群稳定性。此时,您需要增大心跳间隔和心跳超时时间。

    • 如果您需要同时运行更多的任务,则需要增加Session集群的资源配置。

操作步骤

步骤一:创建Session集群

  1. 进入Session集群管理页面。

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台

    3. 在左侧导航栏上,单击运维中心 > Session管理

  2. 单击创建Session集群

  3. 填写配置信息。

    参数详情如下表所示。

    模块

    配置项

    说明

    基础配置

    名称

    Session集群名称。

    部署目标

    选择目标资源队列,资源队列创建详情请参见管理资源队列

    状态

    设置当前集群的期望运行状态:

    • RUNNING:当集群配置完成后保持运行状态。

    • STOPPED:当集群配置完成后保持停止状态,同样会停止所有部署在该Session集群上运行的作业。

    标签名

    您可以在标签选项中添加作业标签,便于在总览页面快速定位作业。

    标签值

    无。

    配置

    引擎版本

    引擎版本详情请参见引擎版本介绍生命周期策略。建议您使用推荐版本或稳定版本,引擎版本标记含义详情如下:

    • 推荐版本:当前最新大版本下的最新小版本。

    • 稳定版本:还在产品服务期内的大版本下最新的小版本,已修复历史版本缺陷。

    • 普通版本:还在产品服务期内的其他小版本。

    • EOS版本:超过产品服务期限的版本。

    Flink重启策略配置

    该参数取值如下:

    • Failure Rate:基于失败率重启。

      选择该选项后,您还需要填写检测Failure Rate的时间间隔时间间隔内的最大失败次数每次重启时间间隔

    • Fixed Delay:固定间隔重启。

      选择该选项后,您还需要填写尝试重启的次数每次重启时间间隔

    • No Restarts:作业task失败不会重启。

    重要

    如果您没有配置该参数,则按Apache Flink默认的重启策略,即当有Task失败时,如果没有开启Checkpoint,JobManager进程不会重启。如果开启了Checkpoint,则JobManager进程会重启。

    其他配置

    在此设置更多Flink配置。例如taskmanager.numberOfTaskSlots: 1

    资源配置

    Task Managers数量

    默认与并行度一致。

    JobManager CPU Cores

    默认值为1。

    JobManager Memory

    最小值为1 GiB,推荐值为4 GiB。单位建议使用GiB或MiB,例如,1024 MiB或1.5 GiB。

    JobManager推荐配置包含JobManager资源以及心跳相关参数。具体内容如下:

    • 由于JobManager上承载TaskManager心跳、作业Task序列化和资源调度等功能。因此建议JobManager资源不小于默认配置,请根据集群负载情况进行处理。

    • 为了集群稳定,避免JobManager主线程繁忙导致心跳超时。因此建议心跳间隔(heartbeat.interval)不小于10秒,同时心跳超时(heartbeat.timeout)不小于50秒。请根据TaskManager个数与作业量上涨情况而上调。

    TaskManager CPU Cores

    默认值为2。

    TaskManager Memory

    最小值为1 GiB,推荐值为8 GiB。单位建议使用GiB或MiB,例如,1024 MiB或1.5 GiB。

    TaskManager推荐配置包含单个TaskManager的Slot个数(taskmanager.numberOfTaskSlots)及TaskManager资源大小。具体内容如下:

    • 对于单并发小作业,建议单Slot的CPU内存比为1:4,使用的资源不小于1核2 GiB。

    • 对复杂作业,建议单Slot使用资源不小于1核4 GiB。在默认资源配置下,每个TaskManager可以配置2个Slot。

    • TaskManager资源不宜过小,也不宜过大,推荐默认资源配置并将Slot数目设为2。

      重要
      • 如果单个TaskManager资源过小,则可能影响其上作业的稳定性,并且由于其Slot数目不多,无法有效平摊TaskManager的开销,降低了资源的利用效率。

      • 如果单个TaskManager资源过大,则TaskManager上运行的作业数会很多,一旦TaskManager发生单点故障,影响面会很大。

    日志配置

    根日志等级

    日志级别从低到高的顺序如下:

    1. TRACE:比DEBUG更细粒度的信息。

    2. DEBUG:系统运行状态的信息。

    3. INFO:重要或者您感兴趣的信息。

    4. WARN:系统可能出现潜在错误的信息。

    5. ERROR:系统出现错误和异常的信息。

    类日志等级

    填写日志名和级别。

    日志模板

    可以选择系统模板或自定义模板。

    说明

    关于Flink与资源编排框架(例如Kubernetes、Yarn等)集成的相关选项详情,请参见Resource Orchestration Frameworks

  1. 单击创建Session集群

    Session集群创建完成后,您可以在作业调试界面或部署界面选择此集群。

步骤二:作业调试

  1. SQL作业开发,编写作业代码。详情请参见SQL作业开发

  2. 在作业开发页面,单击调试,并选择调试集群,单击下一步

  3. 配置调试数据。

    • 如果您使用线上数据,直接单击确认即可。

    • 如果您需要使用调试数据,需要先单击下载调试数据模板后,填写调试数据后,上传调试数据。使用调试数据

      其中该页面涉及的功能解释如下。

      配置项

      说明

      下载调试数据模板

      为了便于编辑,您可以直接下载调试数据模板,模板已适配源表的数据结构。

      上传调试数据

      如果您需要使用本地调试数据进行调试,您可以先下载调试数据模板,在本地编辑好数据后上传,并选中使用调试数据

      调试数据文件存在以下限制:

      • 上传文件仅支持CSV格式。

      • CSV格式的文件必须含有表头,例如 id(INT)。

      • 调试数据CSV文件最大支持1 MB或1千条记录。

      数据预览

      上传好调试数据后,单击源表名称左侧的加号图标,可以预览数据和下载调试数据。

      调试代码预览

      调试功能会自动改变源表和结果表的DDL代码,但不会改变作业中的实际代码。您可以在下方预览代码详情。

  4. 确定好调试数据后,单击确定

    单击确定后,SQL编辑器下方会显示调试结果。调试结果

相关文档