Flink Weekly | 每周社区动态更新-20200513
大家好,本文为 Flink Weekly 的第十五期,由张成整理,李本超 Review。本期主要内容包括:近期社区开发进展、邮件问题答疑、Flink 最新社区动态及技术文章推荐等。
01 Flink 开发进展
1.Release
■ [releases] 李钰发起了 Flink 1.10.1 RC #3 的投票,投票已经通过,最新动态请参考如下链接。
■ [releases] Tzu-Li 发起了 Flink Stateful Functions Release 2.0.0 RC #4 的投票,经过讨论后决定将会在新开一个 RC。
2.DEV
■ 阿里巴巴已经在 flink-packages.org 上发布了 SpillableHeapStateBackend 的预览版。该状态后端在 FLINK-12692 中贡献给 Apache Flink。SpillableHeapStateBackend 是一个基于 Java 堆的Statebackend(如 FilesystemStatebackend ),在堆耗尽之前将最冷的状态溢出到磁盘。
[3]https://flink-packages.org/packages/spillable-state-backend-for-flink
https://issues.apache.org/jira/browse/FLINK-12692
3.FLIP
■ [FLIP-108] Yangze Guo 发起了有关类加载器和依赖项问题的讨论。问题是 mainClassLoader 无法识别 ExternalResourceInfo 的子类。ExternalResourceInfo 位于 ExternalResourceDriver jar 中,并通过 PluginManager 与 mainClassLoader 隔离。因此,程序会抛出 ClassNotFoundExeption 异常。Yangze Guo 提出了如下 3 个备选方案,大家在讨论中认为第 3 个方案比较好。Yangze Guo 发起了使用第 3 个方案修改 API 的投票,投票最终获得通过。
备选方案1:
不使用插件机制,只需将驱动程序加载到 mainClassLoader。缺点是用户需要处理依赖冲突。
备选方案2:
强制要求用户构建两个单独的 jar,分别用于 ExternalResourceDriver 和 ExternalResourceInfo。然后把包含 ExternalResourceInfo 类的 jar 添加到“ / lib”目录。这种方法可能有效,但可能会使用户厌烦。
备选方案3:
修改 RuntimeContext#getExternalResourceInfos 方法,让其返回 ExternalResourceInfo,同时在 ExternalResourceInfo 接口增加一个类似 “Properties getInfo()” 的方法。该方法的返回值可以由驱动程序提供者和用户指定。
[4]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-108-Problems-regarding-the-class-loader-and-dependency-td40893.html
[5]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/quot-VOTE-FLIP-108-edit-the-Public-API-quot-td40995.html
[6]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/RESULT-VOTE-FLIP-108-edit-the-Public-API-td41061.html
4.Discuss
■ [docker] Ismaël Mejía 发起的是否可以在 Flink 正式 release 之外发布 docker 镜像的讨论有了新的更新。
■ [udf/udaf] Leerho 发起了关于 Flink 集成 DataSketches 的讨论。Arvid Heise 建议先放在 flink-package 中。
[8]https://flink-packages.org/
[9]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Integration-of-DataSketches-into-Flink-td40750.html
■ [connector] 李劲松发起了在 TableFactory 中引入 StatefulSequenceSource 的讨论。StatefulSequenceSource 能够方便用户更简单的进行 Flink SQL 测试。
■ [connector] Leonard Xu 发起了重构 Flink JDBC Connector 的讨论。Leonard Xu 介绍,在重构之后,我们可以很容易地为表和数据流引入统一的可插拔 JDBC 方言,并且我们可以有更好的模块组织和实现。目前大家已经达成一致,Leonard Xu 已经创建了相关的 Jira。同时 Flink Hbase Connector 也有同样的问题,后续在做的时候会单独进行讨论。
[11]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Refactor-flink-jdbc-connector-structure-td40984.html
[12]https://issues.apache.org/jira/browse/FLINK-17537
[13]https://issues.apache.org/jira/browse/FLINK-17538
■ [configuration] Timo 发起了讨论如何在属性( Flink 配置以及 Connector 属性)中表示配置层次结构,以便生成的文件将是有效的 JSON / YAML。
■ [hadoop] Robert Metzge 发起了讨论增加对 Hadoop 3 的支持,并讨论了是否将通过 flink-shaded-hadoop 的方式支持 Hadoop 3 的问题。
邮件问题答疑
■ Kcz 在社区提问 Flink 内存设置问题(Metaspace OOM)。李劲松回答 Metaspace OOM 通常是 JVM 加载的类过多导致的。比如增加 slot 数量也会导致加载的类变多。同时,社区已经有些用户反馈 Flink 1.10.0 的默认 metaspace 大小可能不太合理。1.10.1 中会调大这个默认值。用户可以先通过 taskmanager.memory.metaspace.size 调到 256m 试一试。
[16]http://apache-flink.147419.n8.nabble.com/flink-metaspace-td2835.html
■ Lucas Wu 想单独设置某些 Flink SQL Job 的并行度,李本超回复目前无法做到这一点。目前 SQL 还不支持对单独的 operator 设置并行度,可以通过 table.exec.resource.default-parallelism 设置全局的并行度。
[17]http://apache-flink.147419.n8.nabble.com/flink-sql-job-td2847.html
[18]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-SQL-How-can-i-set-parallelism-in-clause-of-group-by-td33736.html
[19]http://apache-flink.147419.n8.nabble.com/MySQL-td3014.html
■ 王磊在社区提问关于 Flink SQL Retraction 的问题。Michael Ran、李劲松进行了详细的回答。有兴趣的同学可以参考如下链接。
[20]http://apache-flink.147419.n8.nabble.com/FlinkSQL-Retraction-td2893.html
■ Luan Cooper 在社区提问 Sink 表 Append Mode/Upsert Mode 的问题。比如使用 Upsert Mode 写 ElasticSearch 会遇到无法指定 primary key 问题。这个问题社区同学进行了详细的解答。其中 Jark Wu 回复 FLIP-95 和 FLIP-105 后,问题中的 query 就可以原生支持了。FLIP-95 和 FLIP-105 的核心工作就是识别 binlog 中的 update/delete/insert 消息,而不是全当成 append 消息。预计 1.11 能见到这些功能。
■ Hb 遇到了时区相关的问题,李劲松和 Jark Wu 进行了回答。这是一个 bug。Blink 中默认使用了没有时区的 timestamp,而 proctime 目前还是带时区的产生了时间。这个问题已经有对应的Jira。社区会以很高的优先级进行修复。
[22]http://apache-flink.147419.n8.nabble.com/flink-sql-td2910.html
■ 1193216154 对 Flink watermark 对齐逻辑有些疑问。李本超进行了解答。watermark 就是取各个 input channel 的最小值作为当前 subtask 的 watermark 的。同时唐云进行了补充。正是因为取各个 input channel 的最小值,所以如果某一个上游一直没有获取到真实数据,发送下来的watermark 一直都是 Long.MIN_VALUE,这样会导致无法触发 window,社区采用 idle source 的方式 walk around 该问题。同时 FLIP-27 也会涉及到 Source 端的 watermark 对齐的相关问题。
[23]http://apache-flink.147419.n8.nabble.com/flink-watermark-td3018.html
[24]https://ci.apache.org/projects/flink/flink-docs-stable/dev/event_time.html#idling-sources
[25]https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface
■ Lec Ssmi 在社区提问关于 async IO in UDFs 的问题,李本超进行了回复,目前暂不支持。
[26]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/async-IO-in-UDFs-td34978.html
活动 / 博客文章 / 其他
■ Flink 社区 2020 年首场 Meetup 在线直播免费报名中,来自袋鼠云、网易云音乐、有赞、阿里巴巴的技术四位技术专家将现场分享丰富技术干货。
[27]https://developer.aliyun.com/live/2772
■ Fabian 在 Ververica 博客上发布了 Flink Foward Virtual 2020 的摘要。
[28]https://www.ververica.com/blog/flink-forward-virtual-2020-recap
■ Flink Forward Virtual 2020 的所有记录已发布在 Youtube 上。
[29]https://www.youtube.com/watch?v=NF0hXZfUyqE&list=PLDX4T_cnKjD0ngnBSU-bYGfgVv17MiwA7
■ Marta 在 Flink 博客上的社区更新博客中回顾了过去的几个月。
[30]https://flink.apache.org/news/2020/05/07/community-update.html
[31]https://flink.apache.org/news/2020/05/04/season-of-docs.html
[32]https://www.meetup.com/Flink-China/events/270310980/
[33]https://www.meetup.com/futureofdata-princeton/events/269933905/
2 分钟快速订阅 Flink 中文邮件列表
Apache Flink 中文邮件列表订阅流程:
- 发送任意邮件到 user-zh-subscribe@flink.apache.org
- 收到官方确认邮件
- 回复该邮件 confirm 即可订阅
订阅成功后将收到 Flink 官方的中文邮件列表的消息,您可以向 user-zh@flink.apache.org 发邮件提问也可以帮助别人解答问题,动动手测试一下!
Flink Weekly 周报计划每周更新一期,内容涵盖邮件列表中用户问题的解答、社区开发和提议的进展、社区新闻以及其他活动、博客文章等,欢迎持续关注。
作者介绍:
张成,小红书技术部基础平台开发工程师,目前主要在做基于 Flink 的实时计算平台开发。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Flink 与 Hive 的磨合期
有不少读者反馈,参考上篇文章《Hive 终于等来了 Flink》部署 Flink 并集成 Hive 时,出现一些 bug 以及兼容性等问题。虽已等来,却未可用。所以笔者增加了这一篇文章,作为姊妹篇。 回顾 在上篇文章中,笔者使用的 CDH 版本为 5.16.2,其中 Hive 版本为 1.1.0(CDH 5.x 系列 Hive 版本都不高于 1.1.0,是不是不可理解),Flink 源代码本身对 Hive 1.1.0 版本兼容性不好,存在不少问题。为了兼容目前版本,笔者基于 CDH 5.16.2 环境,对 Flink 代码进行了修改,重新打包并部署。 其实经过很多开源项目的实战,比如 Apache Atlas,Apache Spark 等,Hive 1.2.x 和 Hive 1.1.x 在大部分情况下,替换一些 Jar 包,是可以解决兼容性的问题。对于笔者的环境来说,可以使用 Hive 1.2.1 版本的一些 Jar 包来代替 Hive 1.1.0 版本的 Jar 包。在本篇文章的开始部分,笔者会解决这个问题,然后再补充上篇文章缺少的实战内容。 剪不断理还乱的问题 根据读者的反馈,笔者...
- 下一篇
如何用一套引擎搞定机器学习全流程?
作者:陈戊超(仲卓) 深度学习技术在当代社会发挥的作用越来越大。目前深度学习被广泛应用于个性化推荐、商品搜索、人脸识别、机器翻译、自动驾驶等多个领域,此外还在向社会各个领域迅速渗透。 背景 当前,深度学习的应用越来越多样化,随之涌现出诸多优秀的计算框架。其中 TensorFlow,PyTorch,MXNeT 作为广泛使用的框架更是备受瞩目。在将深度学习应用于实际业务的过程中,往往需要结合数据处理相关的计算框架如:模型训练之前需要对训练数据进行加工生成训练样本,模型预测过程中需要对处理数据的一些指标进行监控等。在这样的情况下,数据处理和模型训练分别需要使用不同的计算引擎,增加了用户使用的难度。 本文将分享如何使用一套引擎搞定机器学习全流程的解决方案。 先介绍一下典型的机器学习工作流程。如图所示,整个流程包含特征工程、模型训练、离线或者是在线预测等环节。 在此过程中,无论是特征工程、模型训练还是模型预测,中间都会产生日志。需要先用数据处理引擎比如 Flink 对这些日志进行分析,然后进入特征工程。再使用深度学习的计算引擎 TensorFlow 进行模型训练和模型预测。当模型训练好了以后再用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果