日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

这篇具有很好参考价值的文章主要介绍了日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

沃尔玛系统产生了世界上最大和最多样化的数据集之一,每天数据增长超 10 PB。 来自许多不同的来源及其支持的后端系统,一系列大量的业务事件流被发送到主要由 Apache Kafka 支持的消息传递层。

沃尔玛团队强烈希望扩展近乎实时的决策制定,如事件驱动架构的显着增加、来自生产数据库的变更数据捕获 (CDC)、ML 和计算机视觉服务,所有这些都导致了大表新的查询模式。 由于复杂的拓扑结构、事件的速度、 数据种类繁多,模式快速变化。

考虑到这些挑战,沃尔玛已经开始将数据湖从面向批处理的架构发展为现代 Lakehouse 方法,寻求一个通用框架来提供具有类似仓库语义(强类型、事务性)的近实时数据 保证和 ACID 合规性,并通过缓存、列统计信息、数据分区、压缩、Clustering和排序提高查询效率。

由于将数据从一种格式迁移到另一种格式的计算和开发人员时间成本很高,因此所选择的指南和方向将产生多年的重大影响。 为了减少所有未来已知和未知的风险,沃尔玛保持对支持的格式和运行时的所有方面的全面控制至关重要,确保在跨沃尔玛和公共云运行时根据需要灵活地维护、修补、升级和扩展框架,以及生态系统中的所有查询加速层。 这导致我们只选择开源格式,以确保沃尔玛能够维护和贡献。

我们团队基于以下方面评估了现代 Lakehouse 架构的当前行业标准:

  • 在多云环境中摄取/查询两个关键工作负载的性能。 WL1(工作负载 1)无限时间分区数据,由于数据延迟到达,具有显着扇出,< 0.1% 更新,> 99.9% 插入和 WL2(工作负载 2)主要有界基数,未分区数据写入 > 99.999% 更新,< 0.001% 插入
  • 对底层设计选择和架构评审的权衡
  • 与其他财富 500 强公司的行业专家和技术领导进行讨论

从这项工作中,考虑到系统特征创建了一个加权分数矩阵:

  • 可用性 [3]、可恢复性和可移植性
  • 与不同版本的 Spark、执行和查询引擎的兼容性 [3]
  • 沃尔玛真实世界数据集上每单位工作的成本 [3]
  • 摄取、查询、可调优的性能[2],合理默认值、迁移现有数据成本
  • 产品开发路线图 [2] 以及沃尔玛的贡献和影响能力
  • 支持 [2],产品、文档和部署控制的稳定性
  • TCO [3],基于工作成本和内部管理因素

为简洁起见我们包含了对开源数据湖格式(如 Apache Hudi、开源 Delta 和 Apache Iceberg)的调研(兼容性、性能和总体想法)。

兼容性

获胜者:Apache Hudi

模式演变和验证

今天沃尔玛在管理支持业务所需的数据管道总数方面有巨大的开销。 使我们的业务现代化和发展所需的数千个应用程序更改导致模式管理复杂性进一步加剧了这种情况。了解和管理这些架构演变的兼容性对于构建强大的 Lakehouse 至关重要。 此外至关重要的是 Lakehouse 中的无效模式演变必须在源头上迅速解决,并尽可能在源头上解决。

Lakehouse 平台在写入时强制执行模式以缓解读取兼容性问题,从而避免将发现和报告错误的责任放在消费系统上。 此外如果在读取发现故障之前写入了大量数据,则可能会导致数据丢失和/或昂贵且耗时的恢复。 通过在写入时验证模式,Hudi、Delta 和 Iceberg 消除了大部分数据不兼容问题,但 Lakehouse 写入端仍然需要处理来自上游数据源的无效和不可映射的模式。 许多这些上游模式问题无法通过 Lakehouse 格式来解决,需要通过灵活的模式管理或对上游源强制执行模式演化规则来全面解决。

Iceberg 的模式演化方法是最灵活的,允许潜在上游模式格式,支持 Protocol Buffers、Avro 和 Thrift 中最有效的模式演化场景。 Hudi 和 Delta 支持 Avro兼容的模式演变,但缺乏列重命名能力, Protocol Buffers 和 Thrift 消息的二进制表示中支持该 Schema Evolution。 这要求沃尔玛在这些类型的管道进入我们的 Lakehouse 时对其实施限制。 在处理流数据时,模式演变必须在管道和查询不停止的情况下进行处理,排除允许任何向后不兼容的破坏性变更的可能性。

在写入上游数据源时验证模式有助于缓解这个问题,但是由于沃尔玛中很大一部分流数据是使用 JSON 编码的“代码模式”,迁移路径将很长。 由于可能发生不支持的模式变更、对运维(工具和监控)的投入、以及对数据所有者的培训以及对上游授权的长期投资,沃尔玛的消息来源坚持通过统一模式管理更改注册表。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

出于同样的原因,所有 Lakehouse 表格式仅支持向后兼容,以支持未来进行重大更改。表格式架构更改很少见,但读取端可能需要在迁移表之前进行升级。

引擎支持

沃尔玛数据使用多种引擎进行查询:Hive 和 Spark、Presto / Trino、BigQuery 和 Flink。 支持这些引擎的本地读取/写入端对于减少现有客户迁移到新 Lakehouse 非常重要。 此表列出了沃尔玛使用引擎的程度以及每个产品对该引擎的支持。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

架构与设计

性能的改进是沃尔玛着手研究表格格式变化的主要原因。 Hudi、Delta 和 Iceberg 都以性能为中心,虽然如下表所示每种系统方法存在差异,但它们的功能可以分为并发、统计、索引、托管和重组。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

性能

获胜者:Apache Hudi

摄取性能

批处理和流式摄取基准测试在两个难以满足业务延迟 SLA 的真实世界工作负载上执行。 这两个关键的内部工作负载被称为 WL1 和 WL2。 WL1(批处理)是一个典型的基于时间的表,按年、月、日、小时分区,并且存在大量延迟到达的记录,导致 Spark 摄取在许多分区中遭受显着的读/写放大。 没有分区的 WL2(流式传输)维护行级更新到有界数据集,低延迟数据通过从多 Cassandra 表捕获更改数据。

WL2 模式已成为沃尔玛维持对有界操作数据集上的低延迟数据湖表的业务需求的关键模式

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

所有测试构建了完全隔离的环境,以避免互相影响。 然后部署每个摄取作业(Delta、Hudi、Iceberg、Legacy)并留出足够的时间达到稳定状态。 中值批摄取时间是在一组合理的批次 (n > 30) 上测量的,并在所有摄取核心之间进行归一化以确定加权分数 [时间 * GB 摄取] / 核心(最低分数最好)。 执行压缩时,通过使用外部 Spark 应用程序异步执行或在内部作为内联(阻塞)隔离压缩,并从压缩阶段进行测量,从而计算出与标准摄取类似的指标。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

WL1 的结果表明,与现有的 ORC 处理管道相比,摄取性能显着提高,性能加速超过 5 倍,性能最高的是运行在 Spark 3.x 上的 Hudi。 对于 WL2 流摄取性能在 Delta 上快了 27%,但是 Hudi 的压缩速度显着加快,因为应用程序执行压缩并且缺少在 Delta 管道中执行的 Z-Ordering(在测试时 Hudi 尚不支持异步排序)。 这种额外的效率使 Delta 中的查询性能显着提高了查询性能。

Delta WL2 模式——摄取困难

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

摄取作业——由目标分区文件和要处理的记录的全局混洗组成——150 核(6 小时以上且未完成)

Reader 具有干净紧凑的数据视图(无需合并日志以进行实时查看)但是随着基数的增加,合并变得更加昂贵

由于全局洗牌的成本和不断增长的数据大小,Delta 写入无法有效地处理数据。 我们尝试了一种替代架构来将数据附加到表中并运行后台(异步 - 非阻塞压缩)但是 Delta 的架构下这些操作并不能成功完成。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

摄取作业——由 2 个作业组成,一个仅附加流作业和一个异步 cron 计划压缩。 由于多个写入端修改相同的文件而失败。

Reader 通过读取重复项并在数据上应用窗口来消除重复记录。

Hudi WL2模式

在测试中具有同步或后台压缩的 Hudi MOR(读取时合并)表是唯一能够处理这种模式的开放文件格式,确保最新的写入和清理的视图可供数据消费者使用。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

摄取作业——具有文件组映射的行键,降低了连接操作的复杂性——150 核(~15 分钟批处理/50 分钟压缩)

Reader——可以选择压缩(避免更改日志视图)或性能较慢的实时视图。 定期压缩将日志合并到各自的文件组中

查询性能

选择了常见的业务查询模式,并为工作负载 1 命名为 Q1-Q7,为 WL2 命名为 Q1-Q10。 这些模式包括:

  • 表数
  • 聚合分区计数
  • 主键计数
  • 计算基于分区的主键
  • 基于主键查询
  • 基于主键和分区的查询
  • 基于数据集字段查询
  • 基于数据集字段和分区的查询
  • 主键上的 2 表连接
  • 主键上的 3 表连接

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

尽管 Delta 在大多数查询中有大约 40% 的最佳性能,但在将交易实时数据之上的 Delta 视图与 Hudi RT 视图进行比较时情况不同,其中 Hudi 在提供去重(最新记录视图)方面明显更快。 Delta 的一个显着性能优势在于记录的 ZOrdering,这可以加速表中的大多数查询。ZOrdering 现在可用于 Hudi 以及文件组元数据管理方面的改进。 这将使基准更加接近。

图 3 和图 4 是对所测试的三种 Lakehouse 技术的查询和摄取性能的总结。 需要考虑的是,Hudi 通过比 Delta 更复杂的配置提供了显着的性能优化。 在我们测试时,“开箱即用”的 Delta 默认配置得到了显着优化,并且需要更少的框架知识。

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路

总体而言

获胜者:Apache Hudi

根据沃尔玛的调研,考虑到在可用性、兼容性、成本、性能、路线图、支持和 TCO 方面的加权矩阵的最终得分,沃尔玛选择 Apache Hudi 来支持我们的下一代 Lakehouse。 此外值得注意的是最终决策受到高度多样化的技术栈的巨大影响,在沃尔玛的内部云、谷歌和 Azure 中拥有超过 60 万个 Hadoop 和 Spark 核。这些工作负载还运行在大量 Spark 发行版和版本中。 Apache Hudi 是唯一一个兼容2.4.x Spark版本,让我们在庞大的生态系统中具有更大的灵活性和采用率。

沃尔玛已经着手进行重大转型,已经开始迁移一些关键工作负载。 同时领域正在迅速发展,沃尔玛将不断重新评估该领域的最新技术,为这些开源做出贡献,推动它们满足我们复杂的业务需求,并确保互新旧仓储技术之间的互操作性。

沃尔玛平台团队广泛利用开源技术,因此重点是仅评估开源数据湖格式。 我们并没有主要关注企业产品。 考虑到这一点,我们选择了 Apache Hudi 来推动我们的 Lakehouse 模式向前发展。 来帮助世界上最大的公司进行转型发展,支持创建最大的 Lakehouse 之一

注意:这个领域正在迅速变化,本博客中的一些发现和结果可能在发布时已经过时。 本文测试的版本为 Delta Core 1.0.0、Apache Iceberg 0.11.1、Apache Hudi 0.10.1文章来源地址https://www.toymoban.com/news/detail-444031.html

到了这里,关于日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 掌握退款与测评自养号技术,在亚马逊、沃尔玛上轻松做卖家

    今天,我想与大家分享在亚马逊、沃尔玛退款自养号中的一些经验。众所周知,自养号的环境是至关重要的,它涉及到系统的纯净度、下单所用的信用卡以及许多其他细节。一个良好的养号环境能够确保账号的安全与稳定,进而提高退款成功率。 在市场上,我们看到的环境系

    2024年01月18日
    浏览(89)
  • 理解分布式存储的真实成本 - 10PB的硬件和软件

    我们最近与一家大型银行的首席信息官进行了一次对话。他们是全球系统性重要银行之一——规模极其庞大。这位CIO决定将MinIO引入为数据分析计划的对象存储。这个部署从抵押贷款、交易和新闻平台收集数据,以运行Spark和其他分析工具,为银行提供洞察力。MinIO所取代的实

    2024年01月25日
    浏览(39)
  • Pb从入坑到放弃(三)数据窗口

    数据窗口是 Pb 的一个特色控件,有了数据窗口对于 pb 来说可谓如虎添翼。 对数据库中的数据操作,几乎都可以在数据窗口中完成。 使用数据窗口可以简单检索数据、以图形化的方式显示数据、绘制功能强大的数据统计报表。 数据窗口画板由Design, Preview, Control List, Dat

    2024年02月13日
    浏览(50)
  • pb如何在数据库保存和读取图片

    字段类型Image(不同数据库不同,如果没有再查找blob等类型),然后使用如下编程套路: 读取:    这样的字段不能放在数据窗口的Detail节中,通常用户点击某行数据,获取该行的主键信息,以该信息为条件检索图片信息。比如,主键为id,图片保存在zp字段中:    在dw_1的

    2024年02月09日
    浏览(43)
  • pb:获取服务器时间、判断是否有重复数据

    /*----------------------------------------------------------------------- * 函数名称:datetime gf_getsysdate(string as_dbms) * 功能描述:取得服务器的的日期时间(DateTime)                       * 参数含义:as_dbms 所使用的数据库DBMS   * 返 回 值:datetime类型,系统日期 * 调用举例:ldt_today

    2024年02月06日
    浏览(45)
  • 阿里十年技术沉淀|深度解析百PB级数据总线技术

    数据总线作为大数据架构下的流量中枢,在不同的大数据组件之间承载着数据桥梁的作用。通过数据总线,可以实时接入来自服务器、K8s、APP、Web、IoT/移动端等产生的各类异构数据,进行统一数据管理,进而实现与下游系统的解耦;之后可以异步实现数据清洗、数据分发、实

    2024年02月06日
    浏览(32)
  • Microsoft Fabric 学习----- Lakehouse vs Warehouse

    做了几年Power BI 开发人员,微软最近上发布了Microsoft Fabric, 对它的研究安排起来! 从微软官方中文文档入手 Microsoft Fabric 中的端到端教程 - Microsoft Fabric | Microsoft Learn Microsoft Fabric 是将 Power BI、Azure Synapse 和 Azure 数据资源管理器中的新组件和现有组件汇集到单个集成环境中. F

    2024年02月11日
    浏览(25)
  • Go 单元测试中 testing 包的数据类型M/T/B/PB

    testing.M 对main方法进行的测试 testing.T 对函数/方法进行单元测试 testing. B 对性能进行的测试 testing.PB - 命令 作用 go test 【包名】或 go test . 运行当前package内的所有用例 go test ./… 或 go test 【目录名】/… 递归执行当前目录下所有用例: go test -v [单元测试文件]. // 如 go test -v f

    2024年04月17日
    浏览(31)
  • 解锁MySQL性能瓶颈!超实用的10种优化方法大揭秘

    💡一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、协程、DPDK等。 👉 🎖️ CSDN实力新星,CSDN博客专

    2024年02月03日
    浏览(42)
  • Redis为什么能抗住10万并发?揭秘性能优越的背后原因

    Redis是一个开源的,基于内存的,高性能的键值型数据库。它支持多种数据结构,包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图),可以满足各种应用场

    2023年04月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包