Amazon Managed Service for Apache Flink(Amazon MSF)之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
应用程序升级的注意事项和已知问题
代理重新启动后 Kafka 提交检查点操作反复失败
Flink 版本 1.15 中的 Apache Kafka 连接器存在已知的开源 Apache Flink 问题,这是由于 Kafka Client 2.8.1 中的一个严重开源 Kafka Client 错误造成的。有关更多信息,请参阅 代理重新启动后 Kafka 提交检查点反复失败
为避免此问题,我们建议您在 Amazon Managed Service for Apache Flink 中使用 Apache Flink 1.18 或更高版本。
状态兼容性的已知限制
-
如果您使用的是 Table 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连接器来支持增强型扇出功能(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 或更高版本,则为了进行有状态升级,您必须继续在 Flink 1.15 或更高版本中使用FlinkKinesisProducer,而不是更新的KinesisStreamsSink。但是,如果您的连接器上已经设置自定义uid,则应该能够切换到KinesisStreamsSink,因为FlinkKinesisProducer无法保持状态。Flink 会将其视为同一个操作员,原因是已设置自定义uid。
以 Scala 编写的 Flink 应用程序
-
从 Flink 1.15 开始,Apache Flink 在运行时中不包含 Scala。升级到 Flink 1.15 或更高版本时,必须在代码 Jar/zip 中包含要使用的 Scala 版本和其他 Scala 依赖项。有关更多信息,请参阅 Amazon Managed Service for Apache Flink for Apache 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 版本运行的情况。要进行有状态升级,Managed Service for Apache Flink 将需要使用与之匹配或更早版本创建的快照进行降级
-
如果您要将运行时从 Flink 1.13 或更高版本更新到 Flink 1.11 或更早版本,并且您的应用程序使用 HashMap 状态后端,则该应用程序将持续失败。