Apache Flink 1.12.0 升级说明

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 就在刚才 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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
9天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
23天前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
90 2
|
1天前
|
消息中间件 资源调度 API
Apache Flink 流批融合技术介绍
本文源自阿里云高级研发工程师周云峰在Apache Asia Community OverCode 2024的分享,内容涵盖从“流批一体”到“流批融合”的演进、技术解决方案及社区进展。流批一体已在API、算子和引擎层面实现统一,但用户仍需手动配置作业模式。流批融合旨在通过动态调整优化策略,自动适应不同场景需求。文章详细介绍了如何通过量化指标(如isProcessingBacklog和isInsertOnly)实现这一目标,并展示了针对不同场景的具体优化措施。此外,还概述了社区当前进展及未来规划,包括将优化方案推向Flink社区、动态调整算子流程结构等。
138 31
Apache Flink 流批融合技术介绍
|
22天前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
26天前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
39 4
|
20天前
|
Java 微服务 Spring
驾驭复杂性:Spring Cloud在微服务构建中的决胜法则
【8月更文挑战第31天】Spring Cloud是在Spring Framework基础上打造的微服务解决方案,提供服务发现、配置管理、消息路由等功能,适用于构建复杂的微服务架构。本文介绍如何利用Spring Cloud搭建微服务,包括Eureka服务发现、Config Server配置管理和Zuul API网关等组件的配置与使用。通过Spring Cloud,可实现快速开发、自动化配置,并提升系统的伸缩性和容错性,尽管仍需面对分布式事务等挑战,但其强大的社区支持有助于解决问题。
32 0
|
26天前
|
消息中间件 Java 数据处理
揭秘Apache Flink的Exactly-Once神技:如何在数据流海中确保每条信息精准无误,不丢不重?
【8月更文挑战第26天】Apache Flink 是一款先进的流处理框架,其核心特性 Exactly-Once 语义保证了数据处理的精准无误。尤其在金融及电商等高要求场景下,该特性极为关键。本文深入解析 Flink 如何实现 Exactly-Once 语义:通过状态管理确保中间结果可靠存储;利用一致的检查点机制定期保存状态快照;以及通过精确的状态恢复避免数据重复处理或丢失。最后,提供一个 Java 示例,展示如何计算用户访问次数,并确保 Exactly-Once 语义的应用。
42 0
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
255 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
283 0
|
存储 SQL 传感器
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
585 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2

推荐镜像

更多