Apache Hudi:统一批和近实时分析的存储和服务

简介: Apache Hudi:统一批和近实时分析的存储和服务

一篇由三位Hudi PMC在2018年做的关于Hudi的分享,介绍了Hudi产生的背景及设计,现在看来也很有意义。

分为产生背景、动机、设计、使用案例、demo几个模块讲解。

Uber的行程在2018年已经达到700个城市,70个国家,200w+司机的规模。

而数据在Uber中可分为摄取和查询,而摄取包括从kafka、hdfs上消费数据;查询则包括使用spark notebook的数据科学家,使用Hive/Presto进行ad hoc查询和dashboard展示,使用Spark/Hive构建数据管道或ETL任务等。引入Hudi,Hudi可以管理原始数据集,提供upsert、增量处理语义及快照隔离。

这是典型的流、批分析架构,可以看到,流、批处理会共同消费消息中间件(如kafka)的数据,流处理提供小于1min延迟的结果,批处理提供大约1小时延迟的结果,而批处理结果可修正流处理结果,这是一种典型的Lambda架构,即需要维护两套系统,维护成本会较高。

当使用数据湖后,会提供如下优势:1. 支持最新数据上的Ad hoc查询;2. 近实时处理(微批),很多业务场景并不需要完全实时;3. 对于数据的处理更为得当,如检查文件大小,这对HDFS这类存储非常重要,无需重写整个分区的处理;4. 维护成本更低,如不需要复制数据,也不需要维护多套系统。

Hudi作为Uber开源的数据湖框架,抽象了存储层(支持数据集的变更,增量处理);为Spark的一个Lib(任意水平扩展,支持将数据存储至HDFS);开源(现已在Apache孵化)。

基于Hudi的架构设计,支持upsert,支持增量处理,支持不同的视图等等,可以看到与典型的Lambda框架不同,此时基于Hudi的分析架构只需要维护Hudi即可,由Hudi提供的能力来满足上层应用不同的需求。

Hudi在HDFS上管理了数据集,主要包括索引,数据文件和元数据,并且支持Hive/Presto/Spark进行查询。

Hudi提供了三种不同类型的视图,读优化视图、实时视图、增量视图,社区正在重构这三个定义,分别为读优化视图、快照视图、增量视图。

对于COW类型,支持读优化视图,对于MOR类型,支持读优化视图、实时视图,而对于最新的发布版而言,COW支持读优化视图和增量视图,MOR支持读优化视图、实时视图和增量视图。

在COW模式下,读优化视图仅仅读取parquet数据文件,在批次1upsert后,读优化视图读取File1和File2文件;在批次2upsert后,读优化视图读取File 1'和File2文件。

使用COW模式可以解决很多问题,但其也存在一些问题,如写方法,即更新的时延会比较大(由于复制整个文件导致)。

下面的工作流表示了如何处理延迟到达的更新,更新首先会反应至源表(Source table),然后源表更新至ETL table A,然后更新至ETL table B,这种工作流的延迟更大。

根据上面分析,可归纳出如下问题,高社区延迟、写放大、数据新鲜度受限以及小文件问题。

与COW模式下更新时复制整个文件不同,可以将更新写入一个增量文件,这样便可降低数据摄取延迟,降低写放大。

MOR模式下提供了读优化视图和实时视图。

在批次1upsert之后,读优化视图读取的也是Parquet文件,在批次2upsert之后,实时视图读取的是parquet文件和日志文件合并的结果。

对比Hudi上不同视图下的权衡,COW下的读优化视图拥有Parquet原生文件读取性能,但数据摄取较慢;MOR下的读优化视图也有parquet原生文件读取性能,但会读取到过期的数据(并未更新);MOR下实时视图数据摄取性能高,在读的时候会合并;合并(compaction)会将日志文件转化为parquet文件,从实时视图转化为读优化视图。

针对compaction(压缩),Hudi提供了基于MVCC无锁的异步压缩方式,这样便可解耦数据摄取,使得数据摄取不受影响。

异步压缩会将日志文件和数据文件合并形成新的数据文件,之后读优化视图便可反应最新的数据。

Hudi还提供了并发保证,如快照隔离,批次写入的原子性。

Hudi使用案例分享

在Uber,通过Uber自研的Marmaray消费kafka中的数据,然后再写入Hudi数据湖,每天超过1000个数据集的100TB数据,Hudi管理的数据集大小已经达到10PB。

而对于HDFS的典型的小文件问题,Hudi在摄取数据时会自动处理小文件来减轻namenode的压力;支持大文件写入;支持对现有文件的增量更新。

Hudi也考虑了数据隐私问题,即数据如何删除,Hudi提供了软删除和硬删除两种方式,软删除不会删除key,只会删除内容,而硬删除会删除key和内容。

使用Hudi的增量处理来构建增量管道和dashboard。

目录
相关文章
|
13天前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
132 3
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
存储 数据管理 物联网
83 0
存储 SQL 分布式计算
76 0
|
4月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
7月前
|
存储 SQL Apache
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
本文将从技术选型的视角,从开放性、系统架构、实时写入、实时存储、实时查询等多方面,深入分析 Apache Doris 与 Elasticsearch 的能力差异及性能表现
560 17
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
|
9月前
|
存储 SQL 监控
计算效率提升 10 倍,存储成本降低 60%,灵犀科技基于 Apache Doris 建设统一数据服务平台
灵犀科技早期基于 Hadoop 构建大数据平台,在战略调整和需求的持续扩增下,数据处理效率、查询性能、资源成本问题随之出现。为此,引入 [Apache Doris](https://doris.apache.org/) 替换了复杂技术栈,升级为集存储、加工、服务为一体的统一架构,实现存储成本下降 60%,计算效率提升超 10 倍的显著成效。
371 0
计算效率提升 10 倍,存储成本降低 60%,灵犀科技基于 Apache Doris 建设统一数据服务平台
|
11月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
11月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
369 8
|
11月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
522 5
|
12月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
409 3

推荐镜像

更多