应用程序升级的注意事项和已知问题 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

应用程序升级的注意事项和已知问题

状态兼容性的已知局限性

  • 如果您使用的是表API,Apache Flink 不保证 Flink 版本之间的状态兼容性。有关更多信息,请参阅 Apache Flink 文档中的状态升级和演进

  • Flink 1.6 状态与 Flink 1.18 不兼容。如果您尝试使用状态从 1.6 升级到 1.18 及更高版本,则会API拒绝您的请求。你可以升级到 1.8、1.11、1.13 和 1.15 并拍摄快照,然后升级到 1.18 及更高版本。有关更多信息,请参阅 Apache Flink 文档中的升级应用程序和 Flink 版本

Flink Kinesis 连接器的已知问题

  • 如果您使用的是 Flink 1.11 或更早版本,并且使用amazon-kinesis-connector-flink连接器支持 E nhanced-fan-out (EFO),则必须采取额外的步骤才能对 Flink 1.13 或更高版本进行有状态升级。这是因为连接器的软件包名称发生了变化。有关更多信息,请参阅amazon-kinesis-connector-flink

    Flink 1.11 及更早版本的amazon-kinesis-connector-flink连接器使用封装software.amazon.kinesis,而适用于 Flink 1.13 及更高版本的 Kinesis 连接器则使用封装。org.apache.flink.streaming.connectors.kinesis使用此工具来支持您的迁移:amazon-kinesis-connector-flink-state-migrator

  • 如果您在使用 Flink 1.13 或更早版本FlinkKinesisProducer并升级到 Flink 1.15 或更高版本,则要进行有状态升级,则必须继续FlinkKinesisProducer在 Flink 1.15 或更高版本中使用,而不是更新的版本。KinesisStreamsSink但是,如果你的水槽上已经有自定义uid套装,你应该可以切换到,KinesisStreamsSink因为FlinkKinesisProducer无法保持状态。Flink 会将其视为同一个运算符,因为设置了自定义uid

用 Scala 编写的 Flink 应用程序

  • 从 Flink 1.15 开始,Apache Flink 在运行时中不包含 Scala。升级到 Flink 1.15 或更高版本时,必须在代码 JAR /zip 中包含要使用的 Scala 版本和其他 Scala 依赖项。有关更多信息,请参阅适用于 Apache Flink 的 A pache Flink 的亚马逊托管服务 Flink 1.15.2 版本

  • 如果你的应用程序使用 Scala,并且你要将其从 Flink 1.11 或更早版本(Scala 2.11)升级到 Flink 1.13(Scala 2.12),请确保你的代码使用 Scala 2.12。否则,你的 Flink 1.13 应用程序可能无法在 Flink 1.13 运行时中找到 Scala 2.11 类。

降级 Flink 应用程序时需要考虑的事项

  • 降级 Flink 应用程序是可能的,但仅限于应用程序之前使用较旧的 Flink 版本运行的情况。要进行有状态升级,Apache Flink 的托管服务需要使用与之匹配或更早版本拍摄的快照进行降级

  • 如果您要将运行时从 Flink 1.13 或更高版本更新到 Flink 1.11 或更早版本,并且您的应用程序使用 HashMap 状态后端,则您的应用程序将持续失败。