Apache Flink 1.10.0版本有哪些重大的升级?
Flink 1.10 是迄今为止规模最大的一次版本升级,除标志着 Blink 的合并完成 外,还实现了 Flink 作业的整体性能及稳定性的显著优化、对原生 Kubernetes 的初 步集成以及对 Python 支持(PyFlink)的重大优化等。 1、内存管理优化 对 Task Executor 的内存模型,尤其是受管理内存(Managed Memory)进行了大幅度的改进(FLIP-49),使得内存配置对用户更加清晰。 此外,还将 RocksDB state backend 使用的内存纳入了托管范畴,同时可 以通过简单的配置来指定其能使用的内存上限和读写缓存比例(FLINK-7289) 2、Batch 兼容 Hive 且生产可用 Flink 从 1.9.0 版本开始支持 Hive 集成,但并未完全兼容。在 1.10.0 中我们对 Hive 兼容性做了进一步的增强,使其达到生产可用的标准。具体来说,Flink 1.10.0 中支持: ● Meta 兼容 - 支持直接读取 Hive catalog,覆盖 Hive 1.x/2.x/3.x 全部版本 ● 数据格式兼容 - 支持直接读取 Hive 表,同时也支持写成 Hive 表的格式;支 持分区表 ● UDF 兼容 - 支持在 Flink SQL 内直接调用 Hive 的 UDF,UDTF 和 UDAF 与此同时,1.10.0 版本中对 batch 执行进行了进一步的优化 (FLINK-14133), 主要包括: ● 向量化读取 ORC (FLINK-14135) ● 基于新调度框架的优化 (FLINK-14735) 在此基础上将 Flink 作为计算引擎访问 Hive 的 meta 和数据,在 TPC-DS 10T benchmark 下性能达到 Hive 3.0 的 7 倍以上。 ● 基于比例的弹性内存分配 (FLIP-53) ● Shuffle 的压缩 (FLINK-14845) 3、SQL DDL 增强 Flink 1.10.0 支持在 SQL 建表语句中定义 watermark 和计算列,以 watermark 为例:
CREATE TABLEtable_name (
WATERMARK FOR columnName AS <watermark_strategy_expression>
) WITH (
...
)
除此之外,Flink 1.10.0 还在 SQL 中对临时函数 / 永久函数以及系统 / 目录函数 进行了明确区分,并支持创建目录函数、临时函数以及临时系统函数:
CREATE [TEMPORARY|TEMPORARY SYSTEM] FUNCTION
[IF NOT EXISTS] [catalog_name.][db_name.]function_name
AS identifier [LANGUAGE JAVA|SCALA]
4、Python UDF 支持 Flink 从 1.9.0 版本开始增加了对 Python 的支持(PyFlink),但用户只能使用Java 开发的 User-defined-function (UDF) ,具有一定的局限性。在 1.10.0 中我 们为 PyFlink 增加了原生 UDF 支持(FLIP-58),用户现在可以在 Table API/SQL 中注册并使用自定义函数,如下图所示: 同时也可以方便的通过 pip 安装 PyFlink:
pip install apache-flink
5、原生 Kubernetes 集成 Kubernetes (K8S) 是目前最为流行的容器编排系统,也是目前最流行的容器化 应用发布平台。在旧版本当中,想要在 K8S 上部署和管理一个 Flink 集群比较复杂, 需要对容器、算子及 kubectl 等 K8S 命令有所了解。 在 Flink 1.10 中,我们推出了对 K8S 环境的原生支持(FLINK-9953),Flink的资源管理器会主动和 Kubernetes 通信,按需申请 pod,从而可以在多租户环境中 以较少的资源开销启动 Flink,使用起来也更加的方便。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。