Apache Flink 1.12.0 升级说明

简介: 就在刚才 Apache Flink 社区宣布 Flink 1.12.0 版本正式发布了,从这个版本开始真正的流批一体又往前迈了一大步.Release Notes - Flink 1.12这些发布说明讨论了在 Flink 1.11 和 Flink 1.12 之间发生变化的重要方面,比如配置、行为或依赖关系。如果您计划将 Flink 版本升级到 1.12,请仔细阅读这些说明。

就在刚才 Apache Flink 社区宣布 Flink 1.12.0 版本正式发布了,从这个版本开始真正的流批一体又往前迈了一大步.


Release Notes - Flink 1.12


这些发布说明讨论了在 Flink 1.11 和 Flink 1.12 之间发生变化的重要方面,比如配置、行为或依赖关系。如果您计划将 Flink 版本升级到 1.12,请仔细阅读这些说明。


1, APIS


Remove deprecated methods in ExecutionConfig FLINK-19084[1]

不建议使用的方法和无效的方法已删除:ExecutionConfig#enable / disableSysoutLogging,ExecutionConfig#set / isFailTaskOnCheckpointError。


从 cli 中移除 -q 标志。该选项没有任何效果。


Remove deprecated RuntimeContext#getAllAccumulators FLINK-19032[2]

已弃用的方法 RuntimeContext#getAllAccumulators 被删除。请使用 RuntimeContext#getAccumulator 代替。


Deprecated CheckpointConfig#setPreferCheckpointForRecovery due to risk of data loss FLINK-20441[3]

CheckpointConfig# setpreferencecheckpointforrecovery 方法已经不推荐使用了,因为对于恢复来说,宁愿使用较旧的检查点而不使用较新的保存点可能会导致数据丢失。


FLIP-134: Batch execution for the DataStream API

允许在KeyedStream.intervalJoin() FLINK-19479[4] 上显式配置时间行为


在 Flink 1.12 之前,KeyedStream.intervalJoin()操作基于全局设置的 Stream TimeCharacteristic 更改行为。在 Flink 1.12 中,我们在 IntervalJoin 上引入了显式的 inProcessingTime()和inEventTime()方法,并且连接不再基于全局特性更改行为。


弃用 DataStream API FLINK-19318 中的 timeWindow()操作


在 Flink 1.12 中,我们弃用了 DataStream API 中的 timeWindow()操作。请将window(WindowAssigner)与 TumblingEventTimeWindows,SlidingEventTimeWindows,TumblingProcessingTimeWindows 或 SlidingProcessingTimeWindows 一起使用。有关更多信息,请参见 TimeCharacteristic / setStreamTimeCharacteristic 的弃用说明。


弃用 StreamExecutionEnvironment.setStreamTimeCharacteristic()和 TimeCharacteristic FLINK-19319


在 Flink 1.12 中,默认的流时间特征已更改为 EventTime,因此您不再需要调用此方法来启用事件时间支持。明确使用处理时间窗口和计时器可以在事件时间模式下使用。如果需要禁用水印,请使用 ExecutionConfig.setAutoWatermarkInterval(long)。如果您使用的是 IngestionTime,请手动设置适当的WatermarkStrategy。如果您使用基于时间特征更改行为的通用“时间窗口”操作(例如KeyedStream.timeWindow()),请使用等效操作明确指定处理时间或事件时间。


允许在 CEP PatternStream FLINK-19326 上显式配置时间行为


在 Flink 1.12 之前,CEP 操作正在基于全局设置的 Stream TimeCharacteristic 更改其行为。在 Flink 1.12 中,我们在 PatternStream 上引入了显式的inProcessingTime()和 inEventTime()方法,并且 CEP 操作不再根据全局特性更改其行为。


API cleanups

Remove remaining UdfAnalyzer configurations FLINK-13857[5]


删除了 ExecutionConfig#get / setCodeAnalysisMode 方法和 SkipCodeAnalysis 类。即使在更改之前它们也没有作用,因此不需要使用其中任何一种。


Remove deprecated DataStream#split FLINK-19083[6]


DataStream#split() 操作在几个版本中被标记为 deprecated 后被删除。请使用 Side Outputs[7]) 来替代.


Remove deprecated DataStream#fold() method and all related classes FLINK-19035[8]


在 1.12 中删除了过期很长时间的(开窗的) DataStream#fold。请使用其他在分布式系统中性能更好的操作,例如(开窗) DataStream#reduce。


Extend CompositeTypeSerializerSnapshot to allow composite serializers to signal migration based on outer configuration FLINK-17520[9]

不推荐使用 CompositeTypeSerializerSnapshot 类上的 boolean isOuterSnapshotCompatible(TypeSerializer),而推荐使用新的 OuterSchemaCompatibility#resolveOuterSchemaCompatibility(TypeSerializer)方法。请改为实施。与旧方法相比,新方法允许复合序列化器基于外部模式和配置发出状态模式迁移的信号。


Bump Scala Macros Version to 2.1.1 FLINK-19278[10]

Flink 现在依赖于 Scala 宏 2.1.1。这意味着我们不再支持 Scala < 2.11.11。


SQL

Use new type inference for SQL DDL of aggregate functions FLINK-18901[11]

用于聚合函数的 CREATE 函数 DDL 现在使用了新的类型推断。可能需要将现有的实现更新为新的反射类型提取逻辑。使用 StreamTableEnvironment。旧堆栈的registerFunction。


Update parser module for FLIP-107 FLINK-19273[12]

术语元数据现在是一个保留的关键字。使用反引号来转义列名和具有此名称的其他标识符。


Update internal aggregate functions to new type system FLINK-18809[13]

可能需要将使用 COLLECT 函数的 SQL 查询更新为新的类型系统。


Connectors and Formats

Remove Kafka 0.10.x and 0.11.x connectors FLINK-19152[14]

在 Flink 1.12 中,我们删除了 Kafka 0.10。0.11 x 和。x 连接器。请使用 universal Kafka 连接器,该连接器适用于 0.10.2.x 之后的任何 Kafka 集群版本。


请参阅文档以了解如何升级Flink Kafka连接器版本。


Csv Serialization schema contains line delimiter FLINK-19868[15]

csv。行分隔符选项已从 CSV 格式中删除。因为行分隔符应该由连接器定义,而不是由格式定义。如果用户在以前的 Flink 版本中使用过这个选项,那么当升级到Flink 1.12 时,他们应该修改这个表来删除这个选项。应该不会有太多用户使用这个选项。


Upgrade to Kafka Schema Registry Client 5.5.0 FLINK-18546[16]

flink-avro- conflu- schema-registry 模块不再作为 fat-jar 提供。你应该把它的依赖包括在你的工作的脂肪罐里。sql 客户机用户可以使用 flink-sql-avro- conflu- schema-registry fat jar。


Upgrade to Avro version 1.10.0 from 1.8.2 FLINK-18192[17]

flink-avro 模块中的默认 Avro 版本升级到 1.10。如果出于某种原因,您需要一个较老的版本(您有来自 Hadoop 的 Avro,或者您使用从较老的Avro版本生成的类),请显式降级您的项目中的Avro版本。


注意:与 1.8.2 相比,我们发现 Avro 1.10 版本的性能有所下降。如果您担心性能,并且可以使用较旧版本的 Avro,请考虑降级 Avro。


Create an uber jar when packaging flink-avro for SQL Client FLINK-18802[18]

SQL 客户端 jar 被重命名为 flink-sql-avro-1.12.0。jar, 先前 flink-avro-1.12.0-sql-jar.jar。此外,不再需要手动添加 Avro 依赖项。


Deployment

Default log4j configuration rolls logs after reaching 100 megabytes FLINK-8357[19]

默认的 log4j 配置已更改:除了在 Flink 启动时现有的日志文件滚动外,它们在达到 100MB 大小时也会滚动。Flink 总共保留 10 个日志文件,从而有效地将日志目录的总大小限制为 1GB(每个Flink服务记录到该目录)。


Use jemalloc by default in the Flink docker image FLINK-19125[20]

在 Flink 的 docker 映像中,将 jemalloc 用作默认的内存分配器,以减少内存碎片问题。用户可以通过将“ disable-jemalloc”标志传递给 docker-entrypoint.sh 脚本来回滚使用 glibc。有关更多详细信息,请参阅 Docker 文档上的 Flink。


Upgrade Mesos version to 1.7 FLINK-19783[21]

Mesos 依赖已经从 1.0.1 升级到 1.7.0。


Send SIGKILL if Flink process doesn’t stop after a timeout FLINK-17470[22]

在 Flink 1.12 中,我们改变了独立脚本的行为,如果 SIGTERM 未能成功关闭Flink进程,则会发出一个 SIGKILL。


Introduce non-blocking job submission FLINK-16866[23]

提交作业的语义略有变化。提交调用几乎立即返回,作业处于新的初始化状态。当作业处于该状态时,诸如触发保存点或检索完整作业详细信息等操作不可用。


创建了该作业的 JobManager 后,该作业就处于创建状态,所有调用都可用。


Runtime

FLIP-141: Intra-Slot Managed Memory Sharing

python.fn-execution.buffer.memory.size 和 python.fn-execution.framework.memory.size 的配置已删除,因此不再生效。此外,python.fn-execution.memory.managed 的默认值已更改为 true,因此默认情况下将为 Python worker 使用托管内存。如果在批处理流或内置批处理算法中将 Python UDF 与 RocksDB 状态后端一起使用,用户可以通过覆盖来控制数据处理(RocksDB 状态后端或批处理算法)和 Python 之间应如何共享托管内存。管理的内存使用者权重。


FLIP-119 Pipelined Region Scheduling FLINK-16430[24]

从 Flink 1.12 开始,将以管道区域为单位计划作业。流水线区域是一组流水线连接的任务。这意味着,对于包含多个区域的流作业,它不再等待开始部署任务之前等待所有任务获取插槽。取而代之的是,一旦任何区域获得了足够的任务插槽就可以部署它。对于批处理作业,将不会为任务分配插槽,也不会单独部署任务。取而代之的是,一旦某个区域获得了足够的插槽,则该任务将与所有其他任务一起部署在同一区域中。


旧的调度器可以被使用通过配置: jobmanager.scheduler.scheduling-strategy: legacy setting.


References

[1] FLINK-19084: https://issues.apache.org/jira/browse/FLINK-19084

[2] FLINK-19032: https://issues.apache.org/jira/browse/FLINK-19032

[3] FLINK-20441: https://issues.apache.org/jira/browse/FLINK-20441

[4] FLINK-19479: https://issues.apache.org/jira/browse/FLINK-19479

[5] FLINK-13857: https://issues.apache.org/jira/browse/FLINK-13857

[6] FLINK-19083: https://issues.apache.org/jira/browse/FLINK-19083

[7] Side Outputs: https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/stream/side_output.html

[8] FLINK-19035: https://issues.apache.org/jira/browse/FLINK-19035

[9] FLINK-17520: https://issues.apache.org/jira/browse/FLINK-17520

[10] FLINK-19278: https://issues.apache.org/jira/browse/FLINK-19278

[11] FLINK-18901: https://issues.apache.org/jira/browse/FLINK-18901

[12] FLINK-19273: https://issues.apache.org/jira/browse/FLINK-19273

[13] FLINK-18809: https://issues.apache.org/jira/browse/FLINK-18809

[14] FLINK-19152: https://issues.apache.org/jira/browse/FLINK-19152

[15] FLINK-19868: https://issues.apache.org/jira/browse/FLINK-19868

[16] FLINK-18546: https://issues.apache.org/jira/browse/FLINK-18546

[17] FLINK-18192: https://issues.apache.org/jira/browse/FLINK-18192

[18] FLINK-18802: https://issues.apache.org/jira/browse/FLINK-18802

[19] FLINK-8357: https://issues.apache.org/jira/browse/FLINK-8357

[20] FLINK-19125: https://issues.apache.org/jira/browse/FLINK-19125

[21] FLINK-19783: https://issues.apache.org/jira/browse/FLINK-19783

[22] FLINK-17470: https://issues.apache.org/jira/browse/FLINK-17470

[23] FLINK-16866: https://issues.apache.org/jira/browse/FLINK-16866

[24] FLINK-16430: https://issues.apache.org/jira/browse/FLINK-16430


相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
9月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
1466 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
665 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
9月前
|
存储 消息中间件 人工智能
云栖实录|实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
本文根据 2025 云栖大会演讲整理而成,演讲信息如下 演讲人:黄鹏程 阿里云智能集团计算平台事业部实时计算Flink版产品负责人
602 1
云栖实录|实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
|
10月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
3205 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
10月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
1132 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
11月前
|
消息中间件 存储 Kafka
Apache Flink错误处理实战手册:2年生产环境调试经验总结
本文由 Ververica 客户成功经理 Naci Simsek 撰写,基于其在多个行业 Flink 项目中的实战经验,总结了 Apache Flink 生产环境中常见的三大典型问题及其解决方案。内容涵盖 Kafka 连接器迁移导致的状态管理问题、任务槽负载不均问题以及 Kryo 序列化引发的性能陷阱,旨在帮助企业开发者避免常见误区,提升实时流处理系统的稳定性与性能。
830 0
Apache Flink错误处理实战手册:2年生产环境调试经验总结
|
11月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
1199 9
Apache Flink:从实时数据分析到实时AI
|
11月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
934 0
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
1277 33
The Past, Present and Future of Apache Flink

推荐镜像

更多