大数据架构变革进行时:为什么腾讯看好开源Apache Iceberg?

原作者: 人工智能 收藏 分享 邀请

人工智能图片

跟着年夜数据存储和处置需求越来越多样化,若何构建一个同一的数据湖存储,并在其长进行多种方式的数据阐发,成了企业构建年夜数据生态的一个主要标的目的。若何疾速、分歧、原子性地在数据湖存储上构建起 Data Pipeline,成了亟待处理的成绩。为此,Uber 开源了 Apache Hudi,Databricks 提出了 Delta Lake,而 Netflix 则倡议了 Apache Iceberg 项目,一时候这种具有 ACID 才能的表格局中心件成为了年夜数据、数据湖范畴炙手可热的标的目的。

固然现阶段国际依然缺少数据湖概念上的优异贸易计划,但在根本软件开源化的趋向下,国际企业在数据湖手艺点上的摸索与跟进并不比国外企业掉队太多。腾讯在 2018 年插手年夜数据存储开源项目 Apache Ozone,后又于 2019 年最先投进研发 Apache Iceberg;阿里巴巴也正结合 Apache Iceberg 社区积极鞭策 Flink 及时数据湖手艺计划的落地。那么,Iceberg 和其他两个开源项目有何分歧?为什么阿里和腾讯都在积极投进 Iceberg 的开源生态?Iceberg 有什么独到之处?

近期 InfoQ 采访了腾讯数据平台部数据湖内核手艺担任人、资深年夜数据工程师邵赛赛,他与我们分享了腾讯选择 Iceberg 前后的一些思虑和采取 Iceberg 之后所做的优化任务,本文基于采访清算而成。邵赛赛还将在 QCon 全球软件开辟年夜会(北京站)2020 带来主题为 《Iceberg - 新一代的数据湖表格局》 的演讲分享,感爱好的读者可以存眷。

计较引擎之下、存储之上的新手艺

数据库年夜牛、图灵奖取得者 Michael Stonebraker 曾在 MapReduce 降生之初撰写过一篇文章,题为 “MapReduce: A major step backwards”,Michael Stonebraker 在文章中直截了本地指出:MapReduce 轻忽了数据库范畴堆集跨越 40 年的手艺经历。固然年夜数据手艺的呈现和迭代下降了用户处置海量数据的门槛,但另一方面,与数据库如许高度优化的手艺比拟,年夜数据手艺的笼统和完成仍是太原始和低级。是以年夜数据手艺在后续十几年的成长中,一向以数据库为方针,将更大都据库的成熟手艺和理念自创到年夜数据中。

以后,年夜数据阐发范畴曾经相当成熟,若何自创更大都据库的成熟手艺和理念来晋升年夜数据的才能呢?Apache Iceberg、Hudi 和 Delta Lake 这三个定位近似的开源项目恰是从数据库方式论中罗致了灵感,将事务才能带到了年夜数据范畴,并笼统成同一的中心格局供分歧引擎适配对接。

若何界说这类新手艺?

复杂地说,这类新手艺是介于下层计较引擎和底层存储格局之间的一个中心层,我们可以把它界说成一种“数据组织格局”,Iceberg 将其称之为“表格局”也是表达近似的寄义。它与底层的存储格局(好比 ORC、Parquet 之类的列式存储格局)最年夜的差别是,它并不界说数据存储体例,而是界说了数据、元数据的组织体例,向上供给同一的“表”的语义。它构建在数据存储格局之上,其底层的数据存储依然利用 Parquet、ORC 等停止存储。

人工智能图片

Apache Iceberg、Hudi 和 Delta Lake 降生于分歧公司,需求处理的成绩存在差别,是以三者在设计初志上稍有分歧。

此中,Iceberg 的设计初志更偏向于界说一个尺度、开放且通用的数据组织格局,同时屏障底层数据存储格局上的差别,向上供给同一的操纵 API,使得分歧的引擎可以经由过程其供给的 API 接进;Hudi 的设计初志更像是为领会决流式数据的疾速落地,并可以或许经由过程 upsert 语义停止延迟数据批改;Delta Lake 作为 Databricks 开源的项目,更偏重于在 Spark 层面上处理 Parquet、ORC 等存储格局的固有成绩,并带来更多的才能晋升。

固然这三个项目在设计初志上稍有分歧,但完成的思绪和供给的才能却很是类似,他们都供给了 ACID 的才能,都基于悲观锁完成了抵触处理和供给线性分歧性,同时响应地供给了 time travel 的功用。

可是由于设计初志的分歧,三个项目以后的才能象限各有分歧,Iceberg 在其格局界说和焦点才能上最为完美,可是下游引擎的适配上稍显缺乏;Hudi 基于 Spark 打造了完好的流式数据落处所案,可是其焦点笼统较弱,与 Spark 耦合较紧;Delta Lake 异样高度依靠于 Spark 生态圈,与其他引擎的适配尚需时日。不外邵赛赛以为,这三个项目现有的差别会跟着社区的鞭策和改良以实时间的累积渐渐磨平,终极能够会变得更趋于不异。

Apache Iceberg 在腾讯的采取环境

腾讯在 Iceberg 还未进进 Apache 孵化器时就曾经最先存眷,跟着这几个手艺的开源以及进进孵化器,这一范畴最先逐步升温,从 2019 年下半年最先,腾讯正式在该手艺长进行摸索和投进。

为什么选择 Iceberg?

谈及引进 Iceberg 的缘由,邵赛赛暗示,那时团队在构建年夜数据生态的进程中碰到了几个痛点,而 Iceberg 刚好能处理这几个痛点:

T+0 的数据落地和处置。传统的数据处置流程从数据进库到数据处置凡是需求一个较长的环节、触及很多庞杂的逻辑来包管数据的分歧性,因为架构的庞杂性使得全部流水线具有较着的延迟。Iceberg 的 ACID 才能可以简化全部流水线的设计,下降全部流水线的延迟。

下降数据批改的本钱。传统 Hive/Spark 在批改数据时需求将数据读掏出来,点窜后再写进,有极年夜的批改本钱。Iceberg 所具有的点窜、删除才能可以或许有用地下降开支,晋升效力。

至于为何终极选择采取 Iceberg,而不是其他两个开源项目,手艺方面的考量首要有以下几点:

Iceberg 的架构和完成并未绑定于某一特定引擎,它完成了通用的数据组织格局,操纵此格局可以便利地与分歧引擎(如 Flink、Hive、Spark)对接,这关于腾讯外部落地长短常主要的,由于高低游数据管道的跟尾往往触及到分歧的计较引擎;

杰出的架构和开放的格局。比拟于 Hudi、Delta Lake,Iceberg 的架构完成更为优雅,同时关于数据格局、类型零碎有完整的界说和可退化的设计;

面向对象存储的优化。Iceberg 在数据组织体例上充实思索了对象存储的特征,防止耗时的 listing 和 rename 操纵,使其在基于对象存储的数据湖架构适配上更有上风。

除往手艺上的考量,邵赛赛和团队也对代码质量、社区等方面做了具体的评价:

全体的代码质量以及将来的退化才能。全体架构代码上的笼统和上风,以及这些上风关于将来停止演变的才能是团队很是存眷的。一门手艺需求可以或许在架构上继续演变,而不会详细完成上需求年夜量的不兼容重构才干撑持。

社区的潜力以及腾讯可以或许在社区阐扬的价值。社区的活泼度是另一个考量,更主要的是在这个社区中腾讯能做些什么,能阐扬什么样的价值。假如社区绝对封锁或曾经足够成熟,那么腾讯再插手后能阐扬的价值就没有那么年夜了,在选择手艺时这也是团队的一个主要考量点。

手艺的中立性和开放性。社区可以或许以开放的立场往鞭策手艺的演变,而不是有所保存地向社区进献,同时社区各方绝对中立而没有一个绝对的强势方来完整节制社区的演进。

优化和改良

从正式投进研发到此刻,腾讯在开源版本的根本上对 Iceberg 停止了一些优化和改良,首要包罗:

完成了行级的删除和更新操纵,极年夜地节流了数据批改和删除所带来的开支;

对 Spark 3.0 的 DataSource V2 停止了适配,利用 Spark 3.0 的 SQL 和 DataFrame 可以无缝对接 Iceberg 停止操纵;

增添了对 Flink 的撑持,可以对接 Flink 以 Iceberg 的格局停止数据落地。

这些改良点进步了 Iceberg 在落地上的可用性,也为它在腾讯外部落地供给了更为吸惹人的特征。同时腾讯也在积极拥抱社区,年夜部门的外部改良都已推往社区,一些外部定制化的需求也会以更为通用的体例进献回社区。

今朝团队正在积极测验考试将 Iceberg 融进到腾讯的年夜数据生态中,此中最首要的应战在于若何与腾讯现有零碎以及自研零碎适配,以及若何在一个成熟的年夜数据系统中寻觅落地址并带来较着的收益。邵赛赛详细提到了以下几点:

Iceberg 的高低游配套才能的扶植绝对缺少,需求较多的配套才能的扶植,好比 Spark、Hive、Flink 等分歧引擎的适配;

其次是 Iceberg 焦点才能成熟度的验证,它能否可以或许支持起腾讯年夜数据量级的考验,其所传播鼓吹的才能能否真正到达了企业级可用,都需求进一步验证和增强;

最初,腾讯外部年夜数据颠末多年成长,曾经构成了一整套完好的数据接进阐发计划,Iceberg 若何可以或许在外部落地,优化现有的计划很是主要。

Iceberg 的缺乏和将来

Iceberg 降生的时候不长,固然拥有高度笼统和很是优雅的设计,但功用上仍有缺乏,尤其在环绕生态零碎的成立和周边才能的打造上还有良多任务需求做。邵赛赛以为,以后 Iceberg 最主要的缺掉点是和下层引擎的对接。此刻 Iceberg 和 Spark 的对接是最为完美的,可是因为 DataSource V2 API 仍在不竭地改良中,关于一些语义的下推依然缺掉,是以才能上和内置的存储格局比拟仍有完善(好比 bucket join 的撑持)。而关于 Hive、Flink 的撑持尚在开辟中。由于 Iceberg 是一个同一的数据组织格局,想要周全利用的话必需使一切的下层引擎可以或许对接适配,是以这一块环节的补足是以后最为主要的。

其次,Iceberg 贫乏行级更新、删除才能。腾讯外部曾经为 Iceberg 增添了行级更新、删除的才能,但在 Iceberg 社区尚未有如许的才能,这些才能所需的格局界说仍在设计中。行级更新、删除才能是现稀有据组织格局的最年夜卖点,是以该功用的补强关于 Iceberg 的推行和落地非常主要。

在腾讯外部,后续关于 Iceberg 的计划首要仍是以适配分歧的引擎以及优化焦点才能为主,同时会环绕 Iceberg 和高低游的引擎供给端到真个面向终端用户的数据管道才能。

今朝比拟于 Hudi、Delta Lake,Iceberg 在国际的存眷度较少,这首要是因为其首要开辟团队在手艺推行和运营下面的任务偏少,并且 Iceberg 的开辟者多为海内开辟者,可是此刻曾经有越来越多年夜公司插手到了 Iceberg 的进献中,包罗 Netflix、Apple、Adobe、Expedia 等国外年夜厂,也包罗腾讯、阿里、网易等国际公司。邵赛赛很是看好 Iceberg 将来在国际成长的远景,在他看来,一个好的手艺架构能够临时不惹人注目,但终极仍是会获得更多人的承认。跟着国际推行的增多,以及国际开辟者在这个项目上的投进、运营,将来在国际 Iceberg 远景可期。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

本文作者2020-5-6 07:38 PM
人工智能
粉丝1 阅读44 回复0

精彩阅读

排行榜

人工智能公众号

扫码微信公众号
我陪你畅想未来

最智能的人工智能网!
QQ:162057003
周一至周五 9:00-18:00
意见反馈:162057003@qq.com

扫一扫关注我们

Powered by Discuz! X3.4   © 2020 ( 鲁ICP备18055727号 )  |  |网站地图