首页 > 传媒 > 关键词  > Pravega最新资讯  > 正文

Pravega Flink connector 的过去、现在和未来

2021-07-16 13:36 · 稿源: 站长之家用户

本文整理自戴尔科技集团软件工程师周煜敏在 FlinkForward Asia2020 分享的议题《Pravega FlinkConnector 的过去、现在和未来》,文章内容为:

1.Pravega 以及 Pravega connector 简介

2.Pravega connector 的过去

3.回顾 Flink1.11 高阶特性心得分享

4.未来展望

5.Pravega 创客大赛介绍

Tips:

-原文视频链接:https://www.bilibili.com/video/BV1ga4y1n7Hr?p=3

-文末扫码关注 Pravega创客大赛

一、Pravega 以及 Pravega connector 简介

img

Pravega 项目的名字来源于梵语,意思是 good speed。项目起源于2016 年,基于 Apache V2 协议在 Github上开源,并且于2020 年11 月加入了 CNCF 的大家庭,成为了 CNCF 的 sandbox 项目。

Pravega 项目是为大规模数据流场景而设计的,弥补传统消息队列存储短板的一个新的企业级存储系统。它在保持对于流的无边界、高性能的读写上,也增加了企业级的一些特性:例如弹性伸缩以及分层存储,可以帮助企业用户降低使用和维护的成本。同时我们也在存储领域有着多年的技术沉淀,可以依托公司商用存储产品为客户提供持久化的存储。

img

以上的架构图描述的是 Pravega 典型的读写场景,借此进行 Pravega 术语介绍以帮助大家进一步了解系统架构。

中间部分是一个 Pravega 的集群 ,它整体是以 stream 抽象的系统。stream 可以认为是类比 Kafka 的 topic。同样,Pravega 的 Segment 可以类比 Kafka 的 Partition,作为数据分区的概念,同时提供动态伸缩的功能。

Segment 存储二进制数据数据流,并且根据数据流量的大小,发生 merge 或者 split 的操作,以释放或者集中资源。此时 Segment 会进行 seal 操作禁止新数据写入,然后由新建的 Segment 进行新数据的接收。

图片左侧是数据写入的场景,支持 append only 的写入。用户可以对于每一个 event 指定 Routing key 来决定 Segment 的归属。这一点可以类比 Kafka Partitioner。单一的 Routing key 上的数据具有保序性,确保读出的顺序与写入相同。

图片右侧是数据读取的场景,多个 reader 会有一个 Reader Group 进行管控。Reader Group控制着 reader 之间的负载均衡的,来保证所有的 Segment 能在 reader 之间均匀分布。同时也提供Checkpoint 机制形成一致的stream切分来保证数据的故障恢复。对于 "读",我们支持批和流两种语义。对于流的场景,我们支持尾读;对于批的场景,我们会更多的考虑高并发来达到高吞吐。

二、Pravega Flinkconnector 的过去

img

Pravega Flinkconnector 是 Pravega 最初支持的 connector,这也是因为 Pravega 与 Flink的设计理念非常一致,都是以流为基础的批流一体的系统,能够组成存储加计算的完整解决方案。

1. Pravega 发展历程

img

connector 从2017 年开始成为独立的 Github项目。2017 年,我们基于 Flink1.3 版本进行开发,当时有包括 Stephan Ewen 在内的 FlinkPMC 成员加入,合作构建了最基础的 Source / Sink function,支持最基础的读写,同时也包括 Pravega Checkpoint 的集成,这点会在后面进行介绍。

2018 年最重要的一个亮点功能就是端到端的精确一次性语义支持。当时团队和 Flink社区有非常多的讨论,Pravega 首先支持了事务性写客户端的特性,社区在此基础上合作,以 Sink function 为基础,通过一套两阶段提交的语义实现了基于 checkpoint 的分布式事务功能。后来,Flink也进一步抽象出了两阶段提交的 API,也就是为大家熟知的 TwoPhaseCommitSinkFunction接口,并且也被 Kafka connector 采用。社区有博客来专门介绍这一接口,以及端到端的一次性语义

2019 年更多的是 connector 对其它 API 的一些补完,包括对批的读取以及 Table API 都有了支持。

2020 年的主要关注点是对 Flink1.11 的集成,其中的重点是 FLIP-27 以及 FLIP-95 的新特性集成。

2. Checkpoint 集成实现

img

以 Kafka 为例,可以首先来看一下 Kafka 是如何做到 FlinkCheckpoint 的集成的。

上图所示是一个典型的 Kafka "读" 的架构。基于 Chandy-Lamport算法的 Flinkcheckpoint实现,当Job master Trigger 一个 Checkpoint 时,会往 Task Executor 发送 RPC 请求。其接收到之后会把自身状态存储中的 Kafka commit offset 合并回 Job Manager 形成一个 Checkpoint Metadata。

仔细思考后,其实可以发现其中的一些小问题:

扩缩容以及动态的平衡支持。当 Partition 进行调整的时候,或者说对 Pravega 而言,在 Partition 动态扩容和缩容的时候,如何进行 Merge 一致性的保证。

还有一点就是 Task 需要维护一个 offset 的信息,整个设计会与 Kafka 的内部抽象 offset 耦合。

img

基于这些不足之处,Pravega 有自己内部设计的 Checkpoint 机制,我们来看一下它是怎么和 Flink的 Checkpoint 进行集成的。

同样读取 Pravega Stream。开始 Checkpoint 这里就有不同,Job master 不再向 Task Executor 发送 RPC 请求,转而以 ExternallyInducedSource的接口,向 Pravega 发送一个 Checkpoint 的请求。

同时,Pravega 内部会利用 StateSynchronizer组件来同步和协调所有的 reader,并且会在所有的 reader 之间,发送 Checkpoint 的 event。当 Task Executor 读到 Checkpoint Event 之后,整个 Pravega 会标志着这个 Checkpoint 完成,然后返回的 Pravega Checkpoint 会存到 Job master state 当中,从而完成 Checkpoint。

这样的实现其实对于 Flink来说是更干净的,因为它没有耦合外部系统的实现细节,整个 Checkpoint 的工作是交给 Pravega 来实现并完成的。

三、回顾 Flink1.11 高阶特性心得分享

Flink1.11 是2020 年的一个重要发布版本,对 connector 而言其实也有非常多的挑战,主要集中在两个 FLIP 的实现:FLIP-27 以及 FLIP-95。对于这两个全新功能,团队也花了很多时间去集成,在过程中也遇到了一些问题和挑战。下面我们来向大家分享一下我们是如何踩坑和填坑的。本文会以 FLIP-95 为例展开。

1. FLIP-95 集成

img

FLIP-95 是新的 Table API,其动机和 FLIP- 27 类似,也是为了实现批流一体的接口,同时也能更好地支持 CDC 的集成。针对冗长的配置键,也提出了相应的 FLIP-122 来简化配置键的设定。

1.1 Pravega 旧的 Table API

img

从上图可以看到 Pravega 在 Flink1.10 之前的一个 Table API,并且从图中建表的 DDL 可以看到:

以 update mode 和 append 去进行区分批和流,而且批流的数据这样的区分并不直观。

配置件也非常的冗长和复杂,读取的 Stream 需要通过 connector.reader.stream-info.0 这样非常长的配置键来配置。

在代码层面,和 DataStream API 也有非常多的耦合难以维护。

针对这些问题,我们也就有了非常大的动力去实现这样一套新的 API,让用户更好的去使用表的抽象。整个框架如图所示,借由整个新框架的帮助,所有的配置项通过 ConfigOption接口定义,并且都集中在 PravegaOptions类管理。

img

1.2 Pravega 全新 Table API

下图是最新 Table API 建表的实现,和之前的相比有非常大的简化,同时在功能上也有了不少优化,例如企业级安全选项的配置,多 stream 以及起始 streamcut的指定功能。

img

2. Flink-18641 解决过程心得分享

img

接下来,我想在此分享 Flink1.11 集成的一个小的心得,是关于一个 issue 解决过程的分享。Flink-18641 是我们在集成1.11.0 版本时碰到的问题。升级的过程中,在单元测试中会报 CheckpointException。接下来是我们完整的 debug 过程。

首先会自己去逐步断点调试,通过查看 error 的报错日志,分析相关的 Pravega 以及 Flink的源码,确定它是 FlinkCheckpointCoordinator相关的一些问题;

然后我们也查看了社区的一些提交记录,发现 Flink1.10 之后, CheckpointCoordinator线程模型,由原来锁控制的模型变成了 Mailbox 模型。这个模型导致了我们原来同步串型化执行的一些逻辑,错误的被并行化运行了,于是导致该错误;

进一步看了这一个改动的 pull request,也通过邮件和相关的一些 Committer 取得了联系。最后在 dev 邮件列表上确认问题,并且开了这个 JIRA ticket。

我们也总结了以下一些注意事项给到在做开源社区的同胞们:

在邮件列表和 JIRA 中搜索是否有其他人已经提出了类似问题;

完整的描述问题,提供详细的版本信息,报错日志和重现步骤;

得到社区成员反馈之后,可以进一步会议沟通商讨解决方案;

在非中文环境需要使用英语。

其实作为中国的开发人员,有除了像 mailing list 和 JIRA 之外。我们也有钉钉群以及视频的方式可以联系到非常多的 Committer。其实更多的就是一个交流的过程,做开源就是要和社区多交流,可以促进项目之间的共同成长。

四、未来展望

img

在未来比较大的工作就是 Pravega schema registry 集成。Pravega schema registry 提供了对 Pravega stream 的元数据的管理,包括数据 schema 以及序列化方式,并进行存储。这个功能伴随着 Pravega0.8 版本发布了该项目的第一个开源版本。我们将在之后的0.10 版本中基于这一项目实现 Pravega 的Catalog,使得 Flinktable API 的使用更加简单;

其次,我们也时刻关注 Flink社区的新动向,对于社区的新版本、新功能也会积极集成,目前的计划包括 FLIP-143 和 FLIP-129;

社区也在逐步完成基于 docker 容器的新的 Test Framework 的转换,我们也在关注并进行集成。

最后也希望社区的小伙伴可以多多的关注 Pravega 项目,促进 Pravega connector 与 Flink的共同发展。

由戴尔科技集团举办的 Pravega 创客大赛将于7 月17 日开放注册,并于8 月13 日正式开启比赛。本次大赛旨在将开发人员、设计师和企业家聚集在一起,与志同道合的人共同探讨如何利用 Pravega 的优秀特性解决各类挑战,创造有价值的解决方案。

👇扫描二维码,关注活动详情 & 大赛评判标准👇

img

▼ 更多 Flink相关技术问题,可扫码加入社区钉钉交流群~▼

img14

▼ 关注公众号「Flink中文社区」,获取更多技术干货▼

img15

特别声明:以上内容(如有图片或视频亦包括在内)均为站长传媒平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。站长之家将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。任何单位或个人认为本页面内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向站长之家提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明(点击查看反馈地址)。本网站在收到上述法律文件后,将会依法依规核实信息,沟通删除相关内容或断开相关链接。

  • 相关推荐
  • 大家在看
  • 联想Legion Play掌机曝光 将与任天堂和Steam掌机竞争

    今年的掌机市场可谓风生水起,我们看到了任天堂Switch OLED以及令人惊讶的Steam Deck,现在看来,联想也想分一杯羹了。该公司正在准备发布自己的掌机产品联想Legion Play。Liliputing发现了联想Legion Play的图片以及一些更多的信息,它显示了新掌机的图片,这些图片也被链接到联想的网站,进一步证实了它的存在。联想Legion Play本应在今年早些时候的MWC 2021上正式发布,但该公司由于某些原因决定不发布。这款掌机似乎在运行一个

  • 尽管提供雷电4端口 但M1 Pro/M1 Max款MacBook Pro仍不支持eGPU扩展

    购买带有 ThunderBolt 3/4 端口的笔记本电脑会有很多好处,其中就包括可以选择附加 eGPU,以提高额外的图形性能。不幸的是,在苹果最新推出的 MacBook Pro 系列中,尽管 14.2 英寸和 16.2 英寸的版本带有支持的硬件,但并不支持这个选项。苹果不给 2021 年款 MacBook Pro 提供 eGPU 支持,可能与 M1 Pro 和 M1 Max 的图形性能提高有关。2021 年款 MacBook Pro 型号的 Thunderbolt 4 端口可以提供 40Gbps 的最大带宽,是 Thunderbol

  • “口吸”和“肺吸”难以取舍?MOTI魔笛MEGA PRO两全其美!

    在今年 5 月举办的上海IECIE蒸汽文化周上,国内电子烟头部品牌MOTI魔笛惊艳亮相新一代产品——MOTI·MEGA PRO,以颠覆行业的“口肺吸双重模式”和“口味专属加热方案”引爆行业热度。如今,将近半年时间过去,MOTI·MEGA PRO凭借优良的使用体验,持续成为电子雾化烟市场的风向。目前,国内的电子烟市场行情非常不错,作为一种体验感非常不错的升级型的产品,电子雾化烟的出现为众多烟民带来了福音。然而,由于入局者太多,产品同质

  • 一芯一意、两全其美 MOTI魔笛MEGA PRO 带来新体验!

    提及到电子雾化烟,则不得不提MOTI魔笛,作为国内电子烟的头部品牌,MOTI最近可谓动作品牌,尤其是品牌重磅打造的新品——MOTI · MEGA PRO。该款电子雾化烟自上线之初,便受到了众多消费者的关注,那么,MOTI魔笛的新品到底有哪些过人之处?与目前市面上千篇一律的电子雾化烟不一样,MOTI魔笛本次针对新品加入了众多人无我有的特征,使得MOTI · MEGA PRO可以轻易与市面上一些竞品区分开来,同时有效抵御假冒伪劣商品的攻击。其中?

  • SenseGlove Nova手套可为VR培训带来更真实的交互感

    佩戴 VR 头显开展训练,可为模拟环境带来一些真实感。与此同时,许多人也期待着能够通过触感的方式,与虚拟物体展开高级的互动。本文要为大家介绍的,就是一款被称作 SenseGlove Nova 的触觉力反馈手套。据悉,该手套能够让佩戴者在 VR 应用中感受物体的形状和纹理,以及硬度、阻力和冲击力。SenseGlove 认为这套方案在 VR 训练项目中非常实用,例如培训操作人员如何应对危险材料、使用复杂工具和物体、现代装配流水线上的工作、设

  • AppsFlyer最新榜单:汇量科技Mobvista旗下程序化广告平台Mintegral跻身全球留存实力榜四强

    10 月 19 日,移动归因与营销分析公司AppsFlyer发布了《广告平台综合表现报告》(第十三版)。在报告中,汇量科技Mobvista旗下程序化广告平台Mintegral表现亮眼,冲入全球全品类应用留存实力榜安卓端第4、iOS端第7,是今年少数进入该榜十强的中国公司之一。AppsFlyer半年一期的《广告平台综合表现报告》被誉为“最具权威性的移动营销行业报告”之一。本版报告汇总了2021 年上半年Android平台及 6 月至 8 月授权ATT的iOS用户数据,?

  • 避免过热:Linux将持续改进旧款英伟达Tegra SoC的电源管理

    Phoronix 指出:尽管 Tegra 2 和 Tegra 3 SoC 问世已有十年,但 Linux 主线内核仍在帮助英伟达善后,以解决相关平台设备过热的尴尬。近段时间,我们已见到热控制代码等工作改进。最新消息是,社区已对 Tegra 电源管理补丁实施第 14 次修订,且正努力让它们被 Linux 5.17 给收录(而不是 Linux 5.16)。用于明年 Linux 内核的 39 个补丁集,为 Tegra 驱动程序提供了运行时电源管理,且支持在 Tegra20(Tegra 2)和 Tegra30(Tegra 3

  • 打破苹果系统限制!腾讯WeGame Mac版开放预约:首批上线8款游戏

    多年以来,虽然苹果手机、电脑等产品一向都以系统闻名,不仅非常稳定、流畅,还能与各种设备完全互联互通,早在几年前就实现了如今安卓刚刚打通的万物互联”。但需要注意的是,也正是系统成了苹果产品最大的禁锢,比如Mac端就鲜有能用的软件,不少常用的软件都不能在苹果端完美使用,尤其是在游戏方面,这也是最令Mac用户介意的痛点。不过,现在Mac端游戏爱好者的福音来了。据相关报道,腾讯WeGame的Mac版本目前已经开放预约,用户

  • Sonnet升级DuoModo和eGPU Breakaway Box系列:最高Radeon RX 6900XT

    Sonnet Technologies 今天升级了 DuoModo(适用于桌面)和 eGPU Breakaway Box(适用于机架)产品线,最高装备了 AMD 旗舰显卡 Radeon RX 6900 XT。在提供灵活的配置和易用的安装步骤、紧凑的外观设计基础上,Sonnet 的 DuoModo 产品线提供专业、可扩展的系统,能通过 ThunderBolt 轻松将外接显卡连接 Mac、PC等。● AMD Radeon RX 6900 XT GPU该显卡由 AMD RDNA 2 架构提供支持,具有 80 个计算单元、128MB AMD Infinity Cache 和

  • NVIDIA为Linux 5.16提供Tegra NVDEC支持

    Tegra DRM驱动程序的最新变化是在本周五发出的,主要是为Linux5.16准备的新材料,这次值得注意的是,NVIDIA的NVDEC驱动程序被纳入其中。在经历了多轮公共代码审查之后,Linux5.16的Tegra DRM驱动更新包括引入NVDEC驱动以加速视频解码。这项开源的视频解码引擎工作是针对TegraX1(Tegra210)和更新的产品,包括目前的Tegra X2和Xavier SoC。早在2月份,NVIDIA提供了Tegra视频文档,作为其"开放GPU文档"的一部分,其中包括NVDEC和NVE

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天
京东双11红包