当多丽丝遇见冰山:一个数据工程师的救赎

再次因数据错误而在半夜醒来,你是否曾梦想过一个理想的数据世界,在那里查询可以在几秒内返回结果,数据永不丢失,成本如此之低以至于你的老板都会面带微笑?听起来像是梦想吗?不!这正在变成现实。

还记得那个夜晚你被数据分区问题压垮的时刻吗?产品经理在拼命推动进展,而你却在处理分散的数据时苦苦挣扎?跨源查询像蜗牛爬山一样慢,而架构更改需要跨越七个部门进行协调。

但是现在,这些痛点正在被重写。 

Apache Doris和Iceberg的结合正在重新定义数据湖的工作方式。这不仅仅是简单的1+1=2;它带来了质的飞跃:秒级查询、无缝架构演进和真正的数据一致性保证。

Doris和Iceberg的完美交响曲

在数据工程领域,我们经常会遇到这样的问题:

小张正在处理一个数据分析需求,需要分析过去三个月的用户行为数据。这些数据分散在Hive数据仓库、业务数据库和对象存储中。跨源联接性能差,查询需要超过40分钟,数据不一致经常发生。

此外,小张还必须处理数据治理工作,每次表结构更改都让他头疼不已。多个下游应用程序依赖于这些表,架构更改需要跨多个团队协调,可能需要一周的时间才能完成一次更改。

这些问题随着数据的爆炸性增长变得更加突出。数据仓库和数据湖的传统分离已经无法满足需求。

幸运的是,在2.1版本中,Apache Doris的Lakehouse架构已经得到显著增强。它不仅提升了主流数据湖格式(Hudi、Iceberg、Paimon等)的读写能力,还引入了多SQL方言兼容性,允许从现有系统无缝切换到Apache Doris。在数据科学和大规模数据读取场景中,Doris集成了Arrow Flight高速读取接口,实现了数据传输效率提升100倍。

因此,小张决定在他的赎回中使用Doris + Iceberg。

Apache Doris原生支持Iceberg的许多核心功能:

  • 支持各种Iceberg Catalog类型,如Hive Metastore、Hadoop、REST、Glue、Google Dataproc Metastore和DLF。
  • 原生支持Iceberg V1/V2表格格式,以及读取Position Delete和Equality Delete文件。
  • 支持通过表函数查询Iceberg表格快照历史。
  • 支持时间旅行功能。
  • Apache Doris原生支持Iceberg表引擎。Apache Doris可以直接创建、管理和写入Iceberg表中的数据。它支持一整套分区转换函数,提供了隐藏分区和分区布局演进等功能。

此外,Doris 2.1.6版本带来了对Doris + Iceberg的重大升级:

Apache Doris支持对Iceberg进行DDL和DML操作。用户可以通过Apache Doris直接在Iceberg中创建数据库和表,并向Iceberg表中写入数据。

通过这一特性,用户可以使用Apache Doris在Iceberg上执行完整的数据查询和写入操作,进一步简化湖仓架构。

因此,小张可以快速构建基于Apache Doris + Apache Iceberg的高效湖仓解决方案,灵活满足实时数据分析和处理的各种需求:

  • 利用Doris的高性能查询引擎从Iceberg表和其他数据源中联接和分析数据,构建统一的联邦数据分析平台。
  • 在Doris中直接管理和构建Iceberg表,清洗和处理数据,并将其写入Iceberg表,构建统一的湖仓数据处理平台。
  • 通过Iceberg表引擎将Doris数据与其他上游和下游系统共享,以进一步处理,构建统一的开放数据存储平台。

这不再是简单的表面集成,而是湖仓架构的深度融合!

多瑞丝(Doris)和冰山(Iceberg)的实用总结

在探索和实践中的一系列起伏之后,小张总结了一些关于Doris + Iceberg的实用经验:

智能元数据管理

在传统解决方案中,元数据管理一直是一个棘手的问题。表分区信息、文件位置和模式更改历史散落在各处,导致查询性能差、操作和维护复杂。

Doris + Iceberg提供了统一的元数据管理层:

这种架构带来了几个关键价值:

  1. 无缝模式演进:表结构更改不再需要停机时间。Doris + Iceberg支持添加、删除和修改字段,以及调整分区方法。
  2. 数据版本管理:通过Iceberg的快照机制,您可以在任何时间点恢复数据状态。
  3. 统一目录服务:支持各种Iceberg目录类型,如Hive Metastore、Hadoop、REST、Glue、Google Dataproc Metastore和DLF,与现有基础设施无缝集成。

现在小张可以通过单个ALTER TABLE语句完成模式更改。系统会自动处理兼容性,并且下游应用程序保持不变。

高效的数据组织

Doris 创新地将 MPP 引擎与 Iceberg 的数据组织方法相结合:

SQL

 

这个 SQL 语句隐藏了强大的技术机制:

  • 文件组织:支持 HDFS 和对象存储等常见存储介质。
  • 智能分区:支持分区转换函数,以启用 Iceberg 的隐式分区和分区演化功能。
  • 存储优化:支持 Parquet 和 ORC 等列式存储格式,结合各种压缩方法以增强性能。

在 Doris 对 Iceberg 的 DDL 和 DML 操作支持下,数据一致性问题也得到了完全解决。

运维管理

为了确保数据平台的稳定性,小张采用以下方法监控和管理 Iceberg 表:

SQL

 

这个工具链提供:

  • 度量监控:实时控制表状态和快照指标。
  • 快照管理:清理过期快照以释放存储空间。
  • 故障恢复:支持回滚到任何历史版本(根据快照 ID 或快照创建时间读取历史版本数据)。

通过这些实践,基于 Doris + Iceberg 的小张数据平台已经达到了新的高度:

  • 查询性能提升了 300%。
  • 存储成本降低了 40%。
  • 运维效率提高了 200%。

多丽丝湖屋令人兴奋的旅程永不停歇。

敬请期待下一期更多有趣、实用和有价值的内容!

Source:
https://dzone.com/articles/when-doris-meets-iceberg