关于数据:深度对比Apache-CarbonDataHudi和Open-Delta三大开源数据湖方案

30次阅读

共计 4160 个字符,预计需要花费 11 分钟才能阅读完成。

摘要:明天咱们就来解构数据湖的外围需要,同时深度比照 Apache CarbonData、Hudi 和 Open Delta 三大解决方案,帮忙用户更好地针对本身场景来做数据湖计划选型。

背景

咱们曾经看到,人们更热衷于高效牢靠的解决方案,领有为数据湖提供应答渐变和事务处理的能力。在数据湖中,用户基于一组数据生成报告是十分常见的。随着各种类型的数据汇入数据湖,数据的状态不会一层不变。须要扭转各种数据的用例包含随工夫变动的时序数据、提早达到的时延数据、均衡实时可用性和回填、状态变动的数据(如 CDC)、数据快照、数据清理等,在生成报告时,这些都将被写入 / 更新在同一组表。

因为 Hadoop 分布式文件系统(HDFS)和对象存储相似于文件系统,因而它们不是为提供事务反对而设计的。在分布式解决环境中实现事务是一个具备挑战性的问题。例如,日常思考到锁定对存储系统的拜访,这会以就义整体吞吐量性能为代价。像 Apache CarbonData、OpenDelta Lake、Apache Hudi 等存储解决方案,通过将这些事务语义和规定推送到文件格式自身或元数据和文件格式组合中,无效地解决了数据湖的 ACID 需要。

很多用户看到这三种次要解决方案时,将陷入两难的地步,在不同状况下不知怎么抉择?明天咱们比照了三大计划,帮忙用户更好的依据本人的场景抉择解决方案。

Apache Hudi

Apache Hudi 是 Uber 为满足外部数据分析需要而设计的我的项目。疾速 upsert/delete 和 compaction 性能能够解决许多实时用例。该我的项目在 Apache 社区十分沉闷,2020 年 4 月获得了最高我的项目位置。

从 Hudi 的名字就能看出他的设计指标,Hadoop Upserts Deletes and Incrementals,次要反对 Upserts、Deletes 和增量数据处理。其要害个性如下:

1. 文件治理

Hudi 在 DFS 上将表组织为 basepath 下的目录构造。表被划分为分区,这些分区是蕴含该分区的数据文件的文件夹,相似于 Hive 表。

2. 索引

Hudi 通过索引机制将给定的 HoodieKey(记录键 + 分区门路)统一地映射到文件 id,从而提供高效的 upserts。

3. 表类型

Hudi 反对的表类型如下:

  • 写入时复制:应用专有的列文件格式(如 parquet)存储数据。在写入时执行同步合并,只需更新版本并重写文件。
  • 读取时合并:应用列(如 parquet)+ 行(如 Avro)文件格式的组合存储数据。更新记录到增量文件,并随后压缩以同步或异步生成列文件的新版本。

4. 查问类型

Hudi 反对三种查问类型:

  • 快照查问:查问是在给定的提交或压缩操作之后对表进行快照的申请。利用快照查问时,copy-on-write 表类型仅公开最新文件切片中的基 / 列文件,并保障雷同的列查问性能。
  • 增量查问:对于写入时复制表,增量查问提供自给定提交或压缩后写入表的新数据,提供更改流以启用增量数据管道。
  • 读取优化查问:查问查看指定提交 / 压缩操作后表的最新快照。只裸露最新文件版本的 base/columnar 文件,保障列查问性能与非 Hudi 列表雷同。仅在读取表合并时反对

5.Hudi 工具

Hudi 由不同的工具组成,用于将不同数据源的数据疾速采集到 HDFS,作为 Hudi 建模表,并与 Hive 元存储进一步同步。工具包含:DeltaStreamer、Hoodie-Spark 的 Datasource API、HiveSyncTool、HiveIncremental puller。

Apache CarbonData

Apache CarbonData 是三个产品中最早的,由华为奉献给社区,助力华为云产品的数据平台和数据湖解决方案应答 PB 级负载。这是一个雄心勃勃的我的项目,将许多能力都集中在一个我的项目中。除了反对更新、删除、合并操作、流式采集外,它还领有大量高级性能,如工夫序列、物化视图的数据映射、二级索引,并且还被集成到多个 AI 平台,如 Tensorflow。

CarbonData 没有 HoodieKey 设计,不强调主键。更新 / 删除 / 合并等操作通过优化的粒度连贯实现。CarbonData 与 Spark 严密集成,在 CarbonData 层中有很多优化,比方数据跳跃、下推等。在查问方面,CarbonData 反对 Spark、Hive、Flink、TensorFlow、pyTorch 和 Presto。一些要害个性包含:

1. 查问减速

诸如多级索引、压缩和编码技术等优化旨在进步剖析查问的性能,这些查问可能包含过滤器、聚合和用户冀望 PB 级数据的点查问响应工夫亚秒级。高级下推优化与 Spark 深度集成,确保计算在凑近数据处执行,以最小化数据读取、解决、转换和传输的数量。

2.ACID:数据一致性

没有对于故障的两头数据,按快照隔离工作,拆散读取和写入。对数据(查问、IUD【插入更新删除】、索引、数据映射、流式解决)的每个操作均合乎 ACID 规范。反对应用基于列和行的格局进行近实时剖析,以均衡剖析性能和流式采集以及主动切换。

3. 一份数据

通过集成 Spark、Hive、Presto、Flink、Tensorflow、Pytorch 等多种引擎。数据湖解决方案当初能够保留一个数据正本。

4. 各种优化指标

其余索引,如二级索引、Bloom、Lucene、Geo-Spatial、实体化视图,能够减速点、文本、聚合、工夫序列和 Geo 空间查问。通过 Polygon UDF,CarbonData 反对天文空间数据模型。

5. 更新和删除

反对合并、更新和删除操作,以启用诸如更改 - 数据 - 捕捉、迟缓更改 - 维(SCD-2)操作等简单用例。

6. 高扩展性

Scale 存储和解决拆散,也实用于云架构。分布式索引服务器能够与查问引擎(如 spark, presto)一起启动,以防止跨运行从新加载索引,并实现更快和可扩大的查找。

Delta【开源】

Delta Lake 我的项目于 2019 年通过 Apache License 开放源码,是 Databricks 解决方案的重要组成部分。Delta 定位为数据湖存储层,集成流式和批处理,反对更新 / 删除 / 合并。为 Apache Spark 和大数据工作负载提供 ACID 事务能力。一些要害个性包含:

1.ACID 事务:

Delta Lake 将 ACID 事务带到您的数据湖中。Delta Lake 存储一个事务日志,以跟踪对表目录所做的所有提交,以提供 ACID 事务。它提供可串行化的隔离级别,确保数据在多个用户之间的一致性。

2. 计划治理与执行

Delta Lake 利用 Spark 分布式解决能力解决所有元数据,通过提供指定模式和帮忙施行模式的能力,防止不良数据进入数据湖。它通过提供正当的谬误音讯来避免不良数据进入零碎,甚至在数据被集成到数据湖之前就进入零碎,从而避免数据损坏。

3. 数据版本控制和工夫旅行

将对数据湖中的数据进行版本控制,并提供快照,以便您能够像该快照是零碎以后状态一样查问它们。这有助于咱们复原到旧版本的数据湖中进行审计、回滚和相似的操作。

4. 凋谢格局

Delta Lake 中的所有数据都以 Apache Parquet 格局存储,使得 Delta Lake 可能利用 Parquet 本地的高效压缩和编码方案。

5. 对立的批量流式 sink

近似实时剖析。Delta Lake 中的表既是一个批处理表,也是流源和 sink,为 Lambda 架构提供了一个解决方案,但又向前迈进了一步,因为批处理和实时数据都下沉在同一个 sink 中。

与 CarbonData 相似,Delta 不强调主键,因而更新 / 删除 / 合并都是基于 spark 的连贯函数实现的。在数据写入方面,Delta 和 Spark 是强绑定关系。与 Spark 的深度集成可能是最好的个性,事实上,它是惟一一个具备 Spark SQL 特定命令(例如:MERGE),它还引入了有用的 DML,如间接在 Spark 中更新 WHERE 或 DELETE WHERE。Delta Lake 不反对真正的数据血缘关系(即跟踪数据何时以及如何在 Delta Lake 中复制数据的能力),然而有审计和版本控制(在元数据中存储旧模式)。

最初

Hudi 在 IUD 性能和读取合并等性能方面具备竞争劣势。例如,如果您想晓得是否要与 Flink 流一起应用,那么它目前不是为这样的用例设计的。Hudi Delta Streamer 反对流式数据采集。这里的“流式解决”实际上是一个间断的批处理周期。但从实质上讲,这仍不是一种存粹的流式的采集。该社区由 Uber 提供,并已凋谢其所有性能。

Delta 的次要劣势之一是它可能与 Spark 集成,特地是其流批一体化设计。Delta 领有良好的用户 API 和文档。该社区由 Databricks 提供,它领有一个具备附加性能的商用版本。

CarbonData 是市场上最早的产品,因为物化视图、二级索引等先进的索引,它具备肯定的竞争劣势,并被集成到各种流 /AI 引擎中,如 Flink、TensorFlow,以及 Spark、Presto 和 Hive。社区由华为提供,所有个性均已开源。

随着新版的公布,这三个都在一直填补他们缺失的能力,并可能在将来互相交融或竞争。当然,也能够把重点放在本人的情景上,构建本身劣势的门槛。对这些解决方案进行性能比拟有助于更好地理解它们的产品。因而,输赢仍是未知之数。

下表从多个维度总结了这三者。须要留神的是,本表所列能力仅突出 2020 年 8 月底的能力。

个性比照表

社区现状(截至 2020 年 8 月)

参考信息

1. https://github.com/apache/car…

2. https://github.com/delta-io/d…

3. https://github.com/apache/hudi

4. https://cwiki.apache.org/conf…

5. https://cwiki.apache.org/conf…

6. https://hudi.apache.org/

7. https://carbondata.apache.org/

8. https://delta.io/

免责申明:基于对各种参考链接的钻研和集体剖析,欢送读者反馈和改良!

翻译自 https://medium.com/@brijoobop…

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0