Apache Flink 2.0-preview released

Apache Flink 社区正在积极准备 Flink 2.0,这是自 Flink 1.0 发布 8 年以来的首次大版本发布。作为一个重要的里程碑,Flink 2.0 将引入许多激动人心的功能和改进,以及一些不兼容的破坏性变更。为了促进用户和上下游项目(例如,连接器)尽早适配这些变更,提前尝试这些令人兴奋的新功能同时收集反馈,我们现在提供了 Flink 2.0 的预览版本。

注意: Flink 2.0 预览版不是稳定版本,请不要应用于生产环境。虽然这个预览版包含了 Flink 2.0 中绝大部分影响兼容性的变更,但 2.0 正式版仍可能引入额外的非兼容改动。

非兼容变更

API

以下 API 已被完全移除:

同时,DataStream API 以及 REST API 中部分废弃的方法和字段也已经被移除。

注意: 您可能会发现一些已移除的 API 仍然存在于代码库中,但被移动到了和原来不同的包路径下。它们现在仅供内部使用,并且可能随时发生更改或移除。请 不要再使用 它们.

连接器适配计划

由于 SourceFunction, SinkFunction 和 SinkV1 API 被移除,依赖这些 API 的现有连接器将无法在 Flink 2.x 版本工作,需要进行针对性适配。以下是具体的适配计划:

  1. Flink 2.0 预览版发布后会尽快发布与之适配的 Kafka 连接器新版本。

  2. JDBC 和 ElasticSearch 连接器将在 Flink 2.0 的正式版本中适配。

  3. 我们计划在接下来的 3 个版本(即截止到 Flink 2.3)中逐步适配剩余的连接器。

配置

符合以下标准的配置项已被移除:

  • 被标注为 @Public 并且已弃用至少2个版本。

  • 被标注为 @PublicEvolving 并且已弃用至少1个版本。

在 Flink 2.x 中,不再支持旧的配置文件 flink-conf.yaml, 请改用符合标准 YAML 格式的 config.yaml。我们提供了一个迁移工具,用于将旧的 flink-conf.yaml 转换为新的 config.yaml。详见 从 flink-conf.yaml 迁移到 config.yaml

在程序中使用硬编码的方式进行配置会带来诸多弊端,因此 StreamExecutionEnvironmentExecutionConfig 中与配置相关的 API 不再允许直接传入 Java 对象作为参数。你现在应该通过 ConfigurationConfigOption 来进行相应的配置。

为了避免暴露过多的内部接口,用户自定义函数(UDF) 不再对 ExecutionConfig 具有完整的访问权限。相应地,你现在可以直接从 RuntimeContext 中访问这些必要的函数,例如 createSerializer(), getGlobalJobParameters()isObjectReuseEnabled()

其它

  • 1.x 到 2.x 的升级不保证 状态兼容性

  • 不再支持 Java 8: Java 11 是目前支持的最低 Java 版本。

  • 旧的 Hybrid Shuffle 模式 已经被完全移除。

重要新特性

存算分离状态管理

过去十年间 Flink 的部署模式、工作负载和硬件的架构都发生了很大的改变。我们已经从计算-存储紧密耦合的 map-reduce 时代,进入到了以 Kubernetes 容器化部署为标准的云原生世界。为了 Flink 在云原生时代的未来,我们在 Flink 2.0 中引入了基于远程存储的存算分离状态管理。

存算分离架构的引入使得 Flink 向云原生领域更进一步。新架构主要解决了以下问题:

  1. 容器化环境下计算节点受本地磁盘大小限制的问题

  2. 由于RocksDB中LSM结构的周期性 Compaction 导致计算资源尖峰的问题

  3. 大规模状态快速扩缩容的挑战

  4. 原生的轻量级和快速检查点

受限于 Flink 中现有的阻塞式同步执行模型,仅仅将状态存储扩展到从远程 DFS 读写是不够的。在 Flink 2.0 中,我们提出了异步执行模型,并为此引入了 ForStDB,这是一种分离的状态后端解决方案。

在当前预览版本下,我们使用: NexmarkQ20 完成了一个端到端的示例。 其中包括:

  • 异步化执行:完整的状态异步访问的API,以及检查点支持

  • 异步化SQL Join算子:基于异步化状态 API实现

  • 同步/异步混合式执行:基于混合式SQL Plan,支持同步算子与异步算子在一个作业内共存

  • 性能:在直接写入存算分离后的远端存储的场景下,提供了不错的性能

物化表

在 Flink 1.20 中,我们以最简可行产品(Minimum Viable Product) 的形式引入了物化表功能。物化表是 Flink SQL 中的一种创新型表类型,旨在进一步简化流和批作业的数据处理流程,同时提供统一的开发体验。在即将发布的 Flink 2.0 中,我们正在增强物化表所支持的功能,包括与主流的湖格式进行集成以及生产就绪的调度器实现。

批作业的自适应执行

此外,Flink 正在不断提升其自适应批处理能力。即将发布的 Flink 2.0 将具备基于作业已完成的阶段所提供的信息,对逻辑计划和物理计划进行动态优化的能力。初步支持的策略包括动态应用 Broadcast Join 以及对数据倾斜的 Join 进行优化。

流式湖仓

以 Apache Flink 和 Apache Paimon 的集成为代表的流式湖仓架构将湖仓范式中统一的数据存储、开放格式和成本效益扩展到了实时领域。即将发布的 Flink 2.0 在 Flink 和 Paimon 的集成方面迈出了重要一步:Flink 和 Paimon 社区正在密切合作,充分结合彼此的优势以及核心功能,带来了诸多重要改进,包括但不限于:使用 Paimon 丰富的合并引擎进行 SQL 执行计划优化、大幅提升 Lookup-Join 的性能、支持 Flink 物化表、以及对自适应批处理和推测执行的支持。

相关推荐
宝哥大数据9 小时前
Flink Joins
flink
木古古1810 小时前
使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题
前端·chrome·apache
惜.己12 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
Java 第一深情12 小时前
零基础入门Flink,掌握基本使用方法
大数据·flink·实时计算
我的K840912 小时前
Flink整合Hudi及使用
linux·服务器·flink
疯一样的码农18 小时前
Apache Maven简介
java·maven·apache
疯一样的码农20 小时前
Apache Maven 标准文件目录布局
java·maven·apache
千羽星弦20 小时前
Apache和HTTPS证书的生成与安装
网络协议·https·apache
西电研梦21 小时前
考研倒计时30天丨和西电一起向前!再向前!
人工智能·考研·1024程序员节·西电·西安电子科技大学
惜.己21 小时前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节