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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
28天前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
316 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
907 13
Apache Flink 2.0-preview released
|
3月前
|
存储 自然语言处理 BI
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
121 3
|
3月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
3月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
95 1
|
3月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
237 0
|
3月前
|
消息中间件 druid Kafka
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
101 0
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
280 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
306 0

推荐镜像

更多