Apache Hudi Timeline Server介绍

这篇具有很好参考价值的文章主要介绍了Apache Hudi Timeline Server介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Apache Hudi Timeline Server介绍

1. 概述

  • Hudi 有一个中央时间线服务器,在驱动程序节点中运行并作为 Rest 服务。它有多种好处,第一个用例是提供 FileSystemView api。
  • Hudi 的核心是维护一个 TableFileSystemView,它暴露 API 来获取给定数据集的文件状态,驱动程序和执行程序将在写入和表服务生命周期的不同时间点查询该状态。中央时间线服务器维护一个缓存的 FSView,每个 Spark 任务都可以轮询该 FSView,从而避免每个 Spark 任务自己加载 FSView,这些 API 响应延迟非常低。如果没有这些API,每个执行器或 Spark 任务可能必须自己构建 FSview,这将导致过多的重复工作,从而影响延迟
  • 第二个用例是标记(Marker) 实现。Hudi 维护标记来区分 Spark 任务写入的最终数据文件集与由于 Spark 重试而创建的文件。第一个实现是直接标记,实现简单,但在非常大的范围内,我们发现删除标记花费了太多时间。因此我们引入了基于时间线服务器的标记来解决延迟问题。使用基于时间线服务器的标记,删除延迟仅为几秒钟,而在某些情况下使用直接标记需要 30 多分钟。

2 提供的服务

  • 提供文件系统视图
    Hudi 的核心是维护一个 TableFileSystemView,它暴露 API 来获取给定数据集的文件状态,驱动程序和执行程序将在写入和表服务生命周期的不同时间点查询该状态。众所周知的 API 包括:获取所有文件组的最新基本文件、获取给定分区的最新文件切片、获取最新的合并文件切片(在压缩正在进行时有用)、获取最新的挂起压缩操作、获取替换的文件组 (Clustering和其他替换提交操作)等。
    TableFileSystemview 有不同的实现,例如内存中的 FSView、基于元数据的 FSview、RockDBBased FSView、基于可溢出映射的 FSView 等。最常见的是内存和元数据 TableFileSystemView。内存表文件系统视图使用文件系统列表查询 Hudi 时间线和数据文件,并填充服务这些 api 所需的所有内部数据结构。基于元数据的文件系统视图使用元数据表而不是直接文件系统列表。所有这些 FSview 都有内置缓存,这意味着一旦为给定分区加载文件组,后续调用就可以从内存数据结构本身提供服务,而不会产生额外的 I/O。但是所有填充的数据结构(缓存)都必须在时间线发生新更改时(新提交完成时)重新加载,这不可避免。因此来自中央时间线服务器的缓存 FSView 通过减少延迟为我们提供了相当高的价值。

  • 使用 Timeline Server 控制 FileSystemView 调用的流程
    位于中心时间轴服务器在消除实例化 FileSystemView 过程中不必要的延迟方面发挥着至关重要的作用。时间线服务器是一个Rest服务,它在同一节点中运行,并在单独的线程中与驱动程序一起处理。所有 FileSystemView 调用都将由该时间线服务器通过 Rest 调用提供服务。执行器会将 FSview 调用路由到位于中心的时间线服务器并返回结果。由于我们还内置了一个缓存层,因此它们往往非常高效,并且避免了 FSview 的重复实例化以及不必要的 I/O。

  • 基于元数据的 FS 视图
    Hudi为每个数据表都有一个元数据表,用于缓存表中的文件列表。如果启用的话,FSview 也可以从元数据表构建。在这种情况下 FS 视图的实例化基于元数据表的 FILES 分区中的数据。这里我们讨论的是时间轴服务器中使用的 FSview 实现。
    我们已经确定了一些调用(例如清理器),其中每个分区都将跨所有 Spark 任务加载,因此我们添加了优化以尽可能使用对元数据表的单个调用来预加载所有分区。当表有 1000 个或更多分区时,这会极大地加快 FS 视图调用延迟。

  • 基于时间线服务器的标记
    时间线服务器也用作另一个标记实现,在此之前我们有执行器直接操作的直接标记,我们将在其他博客中讨论这个主题。如果感兴趣可以点击此链接讨论基于时间线服务器的标记

3. 结论

通常操作 Hudi 不需要任何像 Zookeeper 这样需要单独维护的集中运行服务器。在某种程度上时间线服务器是驱动程序节点中长时间运行的服务,用于避免不必要的 I/O,并通过缓存层为 FSview 调用提供服务。文章来源地址https://www.toymoban.com/news/detail-651326.html

到了这里,关于Apache Hudi Timeline Server介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Apache Hudi DeltaStreamer 接入CDC数据时如何完成 Kafka 的身份认证?

    题目有些拗口,简短截说,我们对于Apache Hudi DeltaStreamer在接入CDC数据时,对于其如何通过 Kafka 的身份认证,做了一系列测试和研究,有如下明确结论: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

    2024年02月16日
    浏览(39)
  • web server apache tomcat11-01-官方文档入门介绍

    整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 同时也为从零手写实现 tomcat 提供一些基础和特性的思路。 minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 web server apache tomcat11-01-官方文档入门介绍 web server apache tomcat11-02-setup 启动 we

    2024年04月16日
    浏览(67)
  • Apache Hudi初探(十)(与spark的结合)--hudi的Compaction操作

    在之前的文章Apache Hudi初探(六)(与spark的结合) 中,我们没有过多的解释Spark中 hudi Compaction 的实现,在这里详细说一下 注意:在hudi中有同步,异步Compaction的概念,为了保证写入的及时性和数据读取的时效性,hudi在一步compaction的过程中会引入一个后台线程进行compaction,所以异

    2024年02月15日
    浏览(35)
  • Apache hudi 核心功能点分析

    文中部分代码对应 0.14.0 版本 初始的需求是Uber公司会有很多记录级别的更新场景,Hudi 在Uber 内部主要的一个场景,就是乘客打车下单和司机接单的匹配,乘客和司机分别是两条数据流,通过 Hudi 的 Upsert 能力和增量读取功能,可以分钟级地将这两条数据流进行拼接,得到乘客

    2024年02月02日
    浏览(32)
  • Apache Hudi初探(五)(与flink的结合)--Flink 中hudi clean操作

    本文主要是具体说说Flink中的clean操作的实现 在flink中主要是 CleanFunction 函数: open函数 writeClient =FlinkWriteClients.createWriteClient(conf, getRuntimeContext()) 创建FlinkWriteClient,用于写hudi数据 this.executor = NonThrownExecutor.builder(LOG).waitForTasksFinish(true).build(); 创建一个只有一个线程的线程池,改

    2024年02月06日
    浏览(39)
  • Apache Hudi初探(一)(与flink的结合)

    和 Spark 的使用方式不同, flink 结合 hudi 的方式,是以 SPI 的方式,所以不需要像使用 Spark 的方式一样, Spark 的方式如下: (这里不包括 org.apache.spark.sql.sources.DataSourceRegister ) Flink 结合 Hudi 的方式,只需要引入了对应的jar包即可,以 SPI 的方式: 其中 HoodieTableFactory 是读写 H

    2024年02月16日
    浏览(36)
  • 提升 Apache Hudi Upsert 性能的三个建议

    Apache Hudi 社区一直在快速发展,各公司正在寻找方法来利用其强大的功能来有效地摄取和管理大规模数据集。 每周社区都会收到一些常见问题,最常见的问题与 Hudi 如何执行更新插入有关,以确保以低延迟访问最新数据。 快速更新插入的主要考虑因素之一是选择正确的存储

    2024年02月05日
    浏览(44)
  • 【Unity笔记】TimeLine的详细使用介绍

    2023年08月28日
    浏览(48)
  • Apache Hudi初探(二)(与flink的结合)--flink写hudi的操作(JobManager端的提交操作)

    在Apache Hudi初探(一)(与flink的结合)中,我们提到了 Pipelines.hoodieStreamWrite 写hudi文件 ,这个操作真正写hudi是在 Pipelines.hoodieStreamWrite 方法下的 transform(opName(\\\"stream_write\\\", conf), TypeInformation.of(Object.class), operatorFactory) ,具体分析一下写入的过程。 对于 transform(opName(\\\"stream_write\\\", conf), Ty

    2024年02月12日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包