CIDR'21-(Databricks三巨头讲湖仓一体)Lake

2023-02-01  本文已影响0人  Caucher

标题:湖仓:新一代一体化数据仓库和先进分析的开放平台
作者:Michael Armbrust1, Ali Ghodsi1,2, Reynold Xin1, Matei Zaharia1,3
均来自Databricks公司,二作是Databricks CEO,三作是Databricks首席架构师,四作是Databricks CTO。

编者的总结

  1. 清晰地解释清除了现代OLAP存在的问题,以及改善的必要性。
  2. 整体上是一个湖上建仓的方案,即在已有的HDFS或S3上,赋予更多的数据库的性能。针对地是数据分析,尤其是ML数据服务的过程。
  3. 文章其实没有提出更新的管理技术,而是将已有的技术进行整合,提出一个很有商业场景的架构,且实现起来难度有限,显然在Databricks已经初步完成其框架。

编者的思考

  1. 考虑到ML的工作负载,lakehouse似乎确实比MPP数据库的前景要好一些,不过这都取决于具体的文件格式和查询优化,如果能做到SQL查询和ML负载的高性能,至少在短期内也能获得市场优势。
  2. 和HTAP的关系尚有些模糊,HTAP能否直接替代lakehouse,或者说只用HTAP会比lakehouse的成本高多少?HTAP+lakehouse的组合会是未来十年最先进的技术架构吗?即事务逻辑+实时分析走HTAP,历史数据和大吞吐的数据I/O走lakehouse。

Abstract

作者论断:现在的数据湖马上就要逐渐消亡,取而代之的是新一代湖仓系统:

  1. 基于直接访问的文件格式,比如Parquet,ORC
  2. 将ML和数据科学的优先级放在第一位
  3. 性能强劲

湖仓将帮助解决现代数仓的几个主要问题:

1 Introduction

数仓第一代

数仓第二代

现代数仓四大问题

  1. 可靠性:数据湖(Hadoop or S3)和数仓(Teradata,snowflake)之间保持同步是很难的。两者之间的ETL过程的每一步都有可能出错。
  2. 数据新鲜度:数仓里的数据新鲜度是落后于湖内的,经常是落后几天【编者注:不同公司、不同业务可能不一样,有实时需求的可能落后几小时,编者曾经编写的系统是按天同步的】。作者认为这是相对于第一代数仓的倒退,第一代数仓基本可以做到实时的,虽然劣势也明显。当然,数仓流水线也可以设计得更加实时一点【编者:比如用kafka构建实时数仓】,但是毕竟更困难。
  3. 不支持ML:现代的ML系统比如pytorch,基本没有能构建在现有的数仓之上的。另一方面,ML任务和BI任务完全不一样,BI可能只需要简单聚合,抽取一小部分数据;ML训练任务逻辑复杂,需要反复大批量读取数据,如果使用SQL来读取数据则太低效了。
    • 注意现有的数仓,比如teradata,它的数据文件存储格式只能由它自己的存储引擎来解析,用户想要直接从数据文件中读取数据是不可能的,至少没有方便可靠的工具。
    • 用户要想从数仓训练个模型,要么得从数仓导出数据文件(那将又是一次ETL!),要么直接去数据湖(比如S3、HDFS)里面捞数据,但是数据湖里面(很多时候)没有任何DB方面的质量保障,比如索引、ACID、数据版本等等。
  4. 两份存储成本:数据湖一份+数仓一份。一个最近的解决方案是直接干掉数据湖,数据直接进数仓,数仓内部进行存算分离【编者注: Clickhouse,TiDB,Doris可能属于这一类】。但作者认为可行性不高,用户使用的也不多,主要原因是非结构化数据还是很难存下来,另一方面ML负载也不好直接访问数据。

本文的核心问题

能否将基于开放文件格式(Parquet、ORC等)的数据湖转变为一个高性能的、完备的(DBMS的性质)数仓系统?

这样一个系统,就称之为湖仓一体系统lakehouse.


image.png

湖仓的解决方案

那具体来说,湖仓是如何解决上述的四个问题呢?

  1. 对数据湖中的数据(其实就是一些文件)也提供一些关键的数据管理功能,比如事务、回滚、版本等,现在有一些文件格式就能做到这件事,比如Delta Lake, Iceberg。这样的话,ML系统就方便于直接访问高效数据格式。
    • 另一方面,湖仓也提供ETL的功能对数据做清洗,提升数据质量。但至少不用清洗完再用ETL导到别的地方去做查询。
  2. 高性能可以通过直接对Parquet,ORC,Iceberg这类文件格式进行优化达成,Databricks就曾经做过一个Delta engine,跑下来性能就很好。

2 Existing steps towards Lakehouses

由于对开放文件格式的需求和ML负载的增加,现在直接在数据湖上做查询的工具越来越多,主要分以下两类:

  1. 直接在数据湖上运行的SQL引擎:比如presto, impala, spark, AWS Athena等等;
  2. 数仓/OLAP数据库提供的外部表功能,可以直接访问数据湖的文件。

但是这两类工具仍然有问题,一个是性能方面还不够,基本上还是建不了索引;另一方面是数据质量管理和DB的基本功能方面还是很欠缺。

3 The Lakehouse Architecture

作者对于湖仓的定义也很简单,要满足两个方面:

  1. 低成本,开放的访问存储,比如S3,HDFS上用Parquet, ORC来存储;
  2. 有传统DBMS的完整功能,事务、数据版本、审计、索引、缓存、查询优化等等。

3.1 Implementing a Lakehouse System

实现一个湖仓,分4步走:

  1. 存储层采用S3等低成本对象存储;
  2. 在开放文件格式上加一个metadata层,用于数据质量管理,以此引入事务和数据版本功能。
    • 已经开发出来的技术比如Delta Lake和Apache Iceberg已经得到了广泛使用。
  3. 实现缓存、索引、查询优化等性能加速技术;
  4. 在metadata层之上,实现声明式的Dataframe API。
    【以下为编者的解释】
    • Dataframe API熟悉pandas或者spark sql的朋友很容易理解,其实就是数据库中表在开发时的数据结构抽象;
    • 声明式和命令式相对应,这里主要体现在延迟执行上,给优化留出足够的空间。

3.2 Metadata Layers for Data Management

基本思路就是每个表额外存一个文件用来表管理,或可称为meta文件。
已有的技术包括Delta Lake (Databricks),Iceberg (Netflix), Hudi (Uber)等.

3.3 SQL Performance in a Lakehouse

性能是湖仓设计的最大挑战,即如何在S3上做到和OLAP数据库一样的性能。
性能问题本身是很综合的,和能给出的资源息息相关,比如能否实现Cache层,能否改文件格式等等。因此作者在这里提出了和文件格式无关的一系列优化方案,综合到Databricks Delta Engine里面,最终满足性能需求,具体包括:

上述三项是lakehouse的核心设计点,对于经典负载来说,频繁访问的热数据一般都已经在Cache中了,所以访问延迟会很低;对于冷数据更重要的是吞吐量和减少I/O,在有了后两条之后也能得到性能提升。

3.4 Efficient Access for Advanced Analytic

为ML提供支持,最方便的办法就是提供Dataframe API库,几乎所有ML框架都是以Dataframe作为数据结构的,因此在lakehouse中,我们只需提供这样一个命令式库,然后将命令改写成spark SQL交给spark执行即可。
由于Spark会把Selection和projection的环节下推至存储引擎,那lakehouse上述的三点优化就有了用武之地。

4 Research Questions and Implications

4.1 Are there other ways to achieve the Lakehouse goals?

有没有其他架构方式不用lakehouse呢?
比如给OLAP数据库上面弄一个服务层,让它能支持ML负载就好了?

4.2 What are the right storage formats and access APIs?

文件格式+存储访问+SQL格式,这三者的设计如何才是最优的,目前尚无定论。

4.3 How does the Lakehouse affect other data management research and trends?

lakehouse会如何影响其他数据管理研究和趋势?

  1. 像polystore这样的多存储查询,可能更多地都会落在lakehouse上;
  2. 数据集成和清洗可以考虑快速并行访问所有数据,比如跨表的join和clusert;【编者:像spark SQL现在已经是这样在做的了,不知是否有误解】
  3. HTAP可以是lakehouse的前置层,直接把一致性数据/归档给湖仓系统,让湖仓来负责一致性快照数据的查询。
  4. 专门为ML设计的数据管理系统可以直接改到lakehouse上面来,声明式的ML引擎可以加在lakehouse之上;
  5. 云原生的微服务查询引擎可以和metadata layer结合;
  6. 公司数据管理的组织架构可以用湖仓方便组织。
上一篇下一篇

猜你喜欢

热点阅读