应用程序升级的注意事项和已知问题 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 状态后端,则您的应用程序将持续失败。