102万行代码,1270 个问题,Flink 新版发布了什么?
阿里妹导读:
Apache Flink 是公认的新一代开源大数据计算引擎,可以支持流处理、批处理和机器学习等多种计算形态,也是Apache 软件基金会和 GitHub 社区最为活跃的项目之一。
2019 年 1 月,阿里巴巴实时计算团队宣布将经过双十一历练和集团内部业务打磨的 Blink 引擎进行开源并向 Apache Flink 贡献代码,此后的一年中,阿里巴巴实时计算团队与 Apache Flink 社区密切合作,持续推进 Flink 对 Blink 的整合。
2 月 12 日,Apache Flink 1.10.0 正式发布,在 Flink 的第一个双位数版本中正式完成了 Blink 向 Flink 的合并。在此基础之上,Flink 1.10 版本在生产可用性、功能、性能上都有大幅提升。本文将详细为大家介绍该版本的重大变更与新增特性。文末更有 Flink 实践精选电子书,现已开放免费下载~
Flink 实践精选电子书,现已开放免费下载~
下载地址
https://flink.apache.org/downloads.html
Flink 1.10 是迄今为止规模最大的一次版本升级,除标志着 Blink 的合并完成外,还实现了 Flink 作业的整体性能及稳定性的显著优化、对原生 Kubernetes 的初步集成以及对 Python 支持(PyFlink)的重大优化等。
综述
Flink 1.10.0 版本一共有 218 名贡献者,解决了 1270 个 JIRA issue,经由 2661 个 commit 总共提交了超过 102 万行代码,多项数据对比之前的几个版本都有所提升,印证着 Flink 开源社区的蓬勃发展。
其中阿里巴巴实时计算团队共提交 64.5 万行代码,超过总代码量的 60%,做出了突出的贡献。
在该版本中,Flink 对 SQL 的 DDL 进行了增强,并实现了生产级别的 Batch 支持和 Hive 兼容,其中 TPC-DS 10T 的性能更是达到了 Hive 3.0 的 7 倍之多。在内核方面,对内存管理进行了优化。在生态方面,增加了 Python UDF 和原生 Kubernetes 集成的支持。后续章节将在这些方面分别进行详细介绍。
内存管理优化
在旧版本的 Flink 中,流处理和批处理的内存配置是割裂的,并且当流式作业配置使用 RocksDB 存储状态数据时,很难限制其内存使用,从而在容器环境下经常出现内存超用被杀的情况。
在 1.10.0 中,我们对 Task Executor 的内存模型,尤其是受管理内存(Managed Memory)进行了大幅度的改进(FLIP-49),使得内存配置对用户更加清晰:

此外,我们还将 RocksDB state backend 使用的内存纳入了托管范畴,同时可以通过简单的配置来指定其能使用的内存上限和读写缓存比例(FLINK-7289)。如下图所示,在实际测试当中受控前后的内存使用差别非常明显。


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)
基于比例的弹性内存分配 (FLIP-53)
Shuffle 的压缩 (FLINK-14845)
基于新调度框架的优化 (FLINK-14735)
在此基础上将 Flink 作为计算引擎访问 Hive 的 meta 和数据,在 TPC-DS 10T benchmark 下性能达到 Hive 3.0 的 7 倍以上。

SQL DDL 增强
Flink 1.10.0 支持在 SQL 建表语句中定义 watermark 和计算列,以 watermark 为例:
CREATE TABLEtable_name (
WATERMARK FOR columnName AS
) WITH (
...
)
除此之外,Flink 1.10.0 还在 SQL 中对临时函数/永久函数以及系统/目录函数进行了明确区分,并支持创建目录函数、临时函数以及临时系统函数:
CREATE [TEMPORARY|TEMPORARY SYSTEM] FUNCTION
[IF NOT EXISTS] catalog_name.function_name
AS identifier [LANGUAGE JAVA|SCALA]
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
更多详细介绍,请参考:
https://enjoyment.cool/2020/02/19/Deep-dive-how-to-support-Python-UDF-in-Apache-Flink-1-10/
原生 Kubernetes 集成
Kubernetes (K8S) 是目前最为流行的容器编排系统,也是目前最流行的容器化应用发布平台。在旧版本当中,想要在 K8S 上部署和管理一个 Flink 集群比较复杂,需要对容器、算子及 kubectl 等 K8S 命令有所了解。
在 Flink 1.10 中,我们推出了对 K8S 环境的原生支持(FLINK-9953),Flink 的资源管理器会主动和 Kubernetes 通信,按需申请 pod,从而可以在多租户环境中以较少的资源开销启动 Flink,使用起来也更加的方便。

查看更多:https://yqh.aliyun.com/detail/6274?utm_content=g_1000105428
上云就看云栖号:更多云资讯,上云案例,最佳实践,产品入门,访问:https://yqh.aliyun.com/
102万行代码,1270 个问题,Flink 新版发布了什么?的更多相关文章
- 业界良心:Square开源Viewfinder,25万行代码全公布!
http://www.csdn.net/article/2014-05-06/2819633-square-open-sources-viewfinder https://github.com/vie ...
- QT就是别人好心帮你做一些枯燥,并且很重复的代码编写工作,让你更好的把精力投入到你界面的逻辑和功能的实现的功能库(否则写了上万行代码了,才写出个BUG一大堆的毛坯)
好了,现在开始记录我学习QT的学习历程 . 本人也不是计算机专业出来的,自学了一点,但还是不好找工作,于是参加了培训,虽然感觉没多学到什么 编程的学习生涯就是不断的看别人的源码,然后自己参考着写写自己 ...
- 👨💻Mybatis源码我搞透了,面试来问吧!写了134个源码类,1.03万行代码!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言:手撸一万行! 完结撒花:4个月.20章.134个类.1.03万行代码! 22年3月初 ...
- OpenTiny 跨端、跨框架组件库升级TypeScript,10万行代码重获新生
摘要:一份精心准备的<JS项目改造TS指南>文档供大家参考,顺便介绍TS 基础知识和 TS 在 Vue 中的实践. 本文分享自华为云社区<历史性的时刻!OpenTiny 跨端.跨框架 ...
- IntelliJ IDEA 新版发布:支持CPU火焰图,新增酷炫主题
JetBrain 是一家伟大的公司,一直致力于为开发者开发世界上最好用的集成开发环境 就在上周,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3 ...
- 华为云Stack新版发布:构筑行业云底座,共创行业新价值
摘要:在以"政企深度用云,释放数字生产力"为主题的华为云Stack战略暨新品发布会上,华为云提出深度用云三大关键举措,并发布华为云Stack 8.2版本,以智能进化推动创造行业新价 ...
- CopyU!SW新版发布!
CopyU!SW新版发布,版本号为:2.1.412.213 主要更新内容如下: 此版本(2.1.412.213)主要作了如下更新: 1.修复了CopyU!SW版本中的运行模式规则的设定错 ...
- 京东热 key 探测框架新版发布,单机 QPS 可达 35 万
https://mp.weixin.qq.com/s/3URAvUF6zwxeF5Kkc1aWHA 京东热 key 探测框架新版发布,单机 QPS 可达 35 万 原创 Hollis Hollis 2 ...
- 基于华为云IoT Studio自助生成10万行代码的奥秘
华为IoT小助手们搬好板凳.备好笔记本.听了HDC.Cloud的几场华为云技术架构师的直播讲课,感觉获益匪浅却又似懂非懂,直后悔自己没有好好打下基础.为了避免再次出现这样的情况,小助手偷偷跑去找了华为 ...
- CoreCLR中超过3万行代码的gc.cpp文件的来源
在CoreCLR的开源代码中,GC的主要实现代码gc.cpp文件大小竟然有1.17MB,打开文件一看,竟然有35490行!第一次见到如此多行的单个代码文件. github都不让直接查看:https:/ ...
随机推荐
- leetcode数据库sql之Delete Duplicate Emails
leetcode原文引用: Write a SQL query to delete all duplicate email entries in a table named Person, keepi ...
- 聊聊ChatGLM-6B医疗数据微调
转载请注明出处: https://www.cnblogs.com/zhiyong-ITNote/ 参考了多个医疗大模型,如扁鹊.灵心等,重新思考了下微调的方案以及数据集的格式:基于ChatGLM/其它 ...
- String类为什么要用final修饰?
final修饰符的意义? https://www.cnblogs.com/loren-Yang/p/13380318.html String类被实现的目标是什么? 效率和安全 如何实现期望? 参考文献 ...
- NA嵌入Flutter页面
目录介绍 01.Android承载flutter容器 02.过时的NA跳转flutter方案 03.升级版本NA跳转Flutter处理 04.如何处理NA跳转flutter传参 05.思考遇到的几个问 ...
- k8s CustomResourceDefinition invalid 错误
安装 CRD 出现这个错误,多数是版本问题,缺少openAPIV3Schema段定义. The CustomResourceDefinition "crontabs.stable.examp ...
- defer 延迟调用【GO 基础】
〇.前言 在 Go 语言中,defer 是一种用于延迟调用的关键字. defer 在 Go 语言中的地位非常重要,它是确保资源正确释放和程序健壮性的关键字. 本文将通过示例对其进行专门的详解. 一.d ...
- axios-api,js结构化定义、调用业务api接口。
axios-api @no-996/axios-api基于 axios 可建立结构化实例的工具,有以下特点: 基于 axios,兼容 axios 的 api,可无缝的迁移使用. 内置了两种常用的请求终 ...
- 新前言with留言板
旧博客也是会用的,但是现在只用博客园写博客,平时csdn的东西也会凑凑热闹 欢迎各位julao来留言板留言 /* ID:lemondi1 LANG:C++ TASK:test */ #include ...
- 【LGR-069】洛谷 2 月月赛 II & EE Round 2
目录 前言 洛谷 6101 [EER2]出言不逊 分析 代码 洛谷 6102 [EER2]谔运算 分析 代码 洛谷 6103 [EER2] 直接自然溢出啥事没有 分析 代码 洛谷 6105 [Ynoi ...
- JDK9的新特性:JPMS模块化
目录 简介 JDK9中模块的实现 JDK中的module 创建自己的module 深入理解module-info transitive static exports to open pacakge p ...