数据摄入常见问题和解决方案

本文介绍数据摄入作业中的常见问题与解决方案。

快照阶段执行Checkpoint时报错,JobMananger内存不足

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题可能在使用任意实时计算VVR引擎版本的作业中出现。

异常表现

  • 任务在全量快照阶段频繁异常重启,查看JobManager日志可见包含OutOfMemory内存不足错误栈。

  • 在监控告警界面的数据摄入相关指标中,可以看到“Num of remaining SnapshotSplits”和“Num of processed SnapshotSplits”的总数非常多。

image

异常根因

MySQL Source执行全量阶段快照时,需要将全部分片的元数据信息持久化保存到状态中。在作业数据量较大、或是分片大小较小时,JM会切分出产生大量需要读取的分片,导致出现OutOfMemory的报错。

解决方案

  • 增大JobManager分配的内存资源数量。

  • 调整运行参数 jobmanager.memory.heap.sizejobmanager.memory.off-heap.size,增大JobManager可使用的堆内及堆外内存。

作业增量阶段从状态恢复时失败,JobMananger内存不足

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 任务已经进入增量阶段,但在从状态中恢复时JobManager报错,日志提示内存不足。

异常根因

实时计算VVR 11.1及更低版本引擎在全量切换到增量阶段之后,有可能无法正确清理状态中持久化保存的表结构信息,导致从Checkpoint恢复时内存不足。

解决方案

  • 升级实时计算Flink引擎到VVR 11.2或更高版本。

快照即将结束时作业失败,TaskManager内存不足

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题可能在使用任意实时计算VVR引擎版本的作业中出现。

异常表现

  • MySQL全量阶段即将结束,只剩下少数几个分片未处理时作业 OOM。

  • TaskManager 的日志中搜索using select statement关键字,发现最后一个无界查询中包含大量数据。

异常根因

全量阶段读取的时间过长,因此最后一个分片积累了大量需要读取的增量数据,导致消费该分片数据时内存不足。

解决方案

  • 设置MySQL Sourcescan.incremental.snapshot.unbounded-chunk-first.enabled: true参数,并重新进行快照。

使用 pt-osc 等无锁变更工具变更表结构后,无数据输出

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 作业在执行无所表结构变更后持续运行,无异常重启;

  • 监控告警中的CurrentFetchTimeLag正常推进;

  • MySQL Source无数据输出,CurrentEmitTimeLag也不再更新。

异常根因

早期版本不支持无锁表结构变更工具产生的DDL变更事件。

解决方案

  • 升级实时计算Flink引擎到11.2或更高版本;

  • 设置MySQL Sourcescan.parse.online.schema.changes.enabled: true参数。

使用 pt-osc 等无锁变更工具变更表结构后,作业Failover

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 作业在执行无所表结构变更后异常重启,Transform算子报错列类型不匹配。

异常根因

实时计算Flink引擎VVR 11.1版本存在已知问题,在无锁表结构变更的同时插入大量数据,有概率导致下发无法解析的事件。

解决方案

  • 升级实时计算Flink引擎到11.2或更高版本,并从无锁表结构变更前的快照重启。

从表结构变更前的快照恢复作业报错

影响面

  • 此问题影响使用MySQL SourceFlink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 从历史快照有状态重启,且执行快照后又发生了表结构变更。

  • 作业消费Binlog时抛出异常,提示表结构不匹配。

异常根因

实时计算Flink引擎VVR 11.1及更早版本不支持从表结构不兼容的位点做有状态启动。

解决方案

升级实时计算Flink引擎到11.2或更高版本,即可从表结构变更前的快照重启。