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