Apache Hudi作为Uber开源的数据湖框架,抽象了存储层(支持数据集的变更,增量处理);为Spark的一个Lib(任意水平扩展,支持将数据存储至HDFS);开源(现已在Apache顶级项目)。
场景一:近实时摄取(Near Real-Time
Ingestion)
对于RDBMS摄取,Hudi通过Upserts提供了更快的负载;
对于像Cassandra / Voldemort / HBase这样的NoSQL数据库,采用更有效的方法使得摄取速度与较频繁的更新数据量相匹配;
对于像Kafka这样的不可变数据源,Hudi也会强制在DFS上保持最小文件大小,从而解决Hadoop领域中的古老问题以便改善NameNode的运行状况。
对于所有数据源,Hudi都提供了通过提交将新数据原子化地发布给消费者,从而避免部分提取失败。
场景二:增量处理管道(Incremental Processing Pipelines)
通过记录粒度(而非文件夹或分区)来消费上游Hudi表HU中的新数据,下游的Hudi表HD应用处理逻辑并更新/协调延迟数据,这里HU和HD可以以更频繁的时间(例如15分钟)连续进行调度,并在HD上提供30分钟的端到端延迟。
场景三:统一存储分析(Unified Storage
For Analytics)
将流式原始数据带到数据湖存储中,Hudi能够在几分钟内提取数据,并编写比传统批处理速度快几个数量级的增量数据管道,从而开辟了新的可能性。
Hudi没有前期服务器基础设施投资,因此可以在不增加运营开销的情况下,对更新鲜的分析进行更快的分析。
场景四:数据删除(Data Deletion)
Hudi还提供了删除存储在数据湖中的数据的功能,而且还提供了处理大型写放大的有效方法,该写放大是由于用户通过基于user_id(或任何辅助键)的Merge On Read表类型进行的随机删除而导致的。
Hudi优雅的基于日志的并发控制,确保了提取/写入可以继续进行,因为后台压缩作业可分摊重写数据/强制执行删除的成本。




