云原生时代,“湖仓一体”是否代表未来?_数据仓库

过去几年中,「湖仓一体」(Lakehouse)作为一种新的数据管理架构,逐步独立地出现在许多客户的应用场景中。俨然“湖仓一体”已经成为了大数据领域最为火热的流行词。它是一种新的技术吗,或是仅仅是概念上的翻新呢?它到底解决了什么问题,拥有什么样新的特性呢?带着这些问题,小智为大家揭开 Data Lakehouse 的神秘面纱,来探一探其技术的本质到底是什么?


在决策支持和商业智能应用方面,数据仓库有着悠久的历史。数据仓库技术,自上世纪80年代末出现以来,经历了不断地发展。同时,MPP架构的出现,也使得系统能够处理更大规模的数据量。尽管仓库非常适合结构化数据,但是随着企业的现代化,产生了大量的非结构化、半结构化数据,这些数据呈现出多样性(variety),高速度(velocity)、大容量(volume)等特征。很显然,数据仓库并不适合这样的场景,而且就成本而言,一定不是最具优势的方案。


随着企业从多种数据来源中,大规模地收集数据,架构师也开始考虑,如何构建一个单一的系统,来实现数据的仓库化存储,并以此为多样化的数据分析应用提供承载。


大约十年前,数据湖出现了,它被定义为一种可以存储各类格式的原始数据存储库。数据湖虽然适合数据的存储,但又缺少一些关键功能,比如不支持事务、缺乏一致性/隔离性、不保证执行数据质量等,这样的短板决定了,让数据湖来承载读写访问、批处理、流作业是不现实的。这样一来,当初构建数据湖的目标并没有实现,而且在很多情况下,还失去了传统数据仓库原有的优势。


企业对于数据访问灵活性、高性能的需求从未降低,以此来支撑各种各样的应用系统,如包括数据分析、实时监控、数据科学和机器学习等。另一方面,对非结构化数据的处理(文本,图像,视频,音频),已经成为了人工智能的前沿、热点领域,而这却是数据仓库不擅长处理的。


目前,多系统共存是企业中比较常见的架构,例如一个数据湖,加上多个数据仓库,以及其他的专用系统,例如流、时间序列、图形和图像数据库等。这种架构的复杂性,带来了运维的难题,因为技术人员始终需要在不同系统之间移动或复制数据。更重要的是,数据的传输引入了延迟,不能提高数据的时效性。

云原生时代,“湖仓一体”是否代表未来?_数据库_02

随着云原生被更广泛接受,降低了大数据使用门槛,也标志着大数据的普惠期已经到来。


当前,业界对大数据产品的要求,包括了规模、性能、简单易用、成本、安全、稳定性等更全面满足企业级生产要求的维度。


在数据湖路线上,开源Hadoop得到广泛关注,大家对开源大数据技术的认知达到空前的水平。虽然赢得了不错市场份额,但是开放架构的松散则使开源方案在企业级能力构建上遇到瓶颈,尤其是数据安全、身份权限强管控、数据治理等方面,协同效率较差,甚至出现裂痕。


后来还是云厂商AWS真正将数据湖概念推广开了。AWS构筑了一套以S3为中心化存储、Glue为元数据服务,E-MapReduce、Athena为引擎的开放协作式的产品解决方案,在2019年推出Lake Formation解决产品间的安全授信问题。


AWS之后,各个云厂商在数据湖领域纷纷跟进,并在自己的云服务上提供类似产品解决方案。


随着数据湖与数据仓库两条大数据路线的进一步发展,自然也就出现了众多厂商试图都往“湖仓一体化”方向尝试,在抢跑过程中,虽然百花齐放,但一直未见硕果。


一方面,从数据仓库向数据湖融合做的尝试。


2017年AWS Redshift推出Redshift Spectrum,支持Redsift数仓用户访问S3数据湖的数据。开始在AWS产品体系内,尝试打通数据仓库到数据湖统一存储的边界。


2018年阿里云MaxCompute推出外表能力,支持访问包括OSS/OTS/RDS数据库在内的多种外部存储。实现阿里云产品体系内数仓产品到数据湖统一存储的打通。


此时,这类数据仓库到数据湖的打通,仍然停留在各自的技术体系内,而且是从存储层进行打通,上层元数据仍然要在数据仓库中人工重建,易用性较差,只适用于低频查询。


另一方面,从数据湖向数据仓库融合做的尝试。


2011年,Hadoop开源体系公司Hortonworks开始了Apache Atlas和Ranger两个开源项目的开发,分别对应数据追踪和数据权限安全两个数仓核心能力。


但是这两个开源项目的活跃度一直不高,经过了6年时间,直到2017年才完成孵化。且发布周期较慢,相较同时期的Spark、Flink等开源项目完全不可同日而语。


此外,如将Ranger作为权限管控组件、Atlas作为数据中治理组件,与今天的主流引擎仍旧无法做到全覆盖。社区对此认识不足,开源产品背后的各商业公司又难以达成一致,这极大限制了开源数据湖产品在这两个维度上的能力。


由此可见,数据湖这样一个统一存储、各引擎和组件松散协同的组织方式,在建设需要强管控特性的企业级能力方面存在着天然效率不足的问题。


2018年,Nexflix开源了内部增强版本的元数据服务系统Iceberg,提供包括多版本和多版本并发MVCC在内的增强数仓能力。


2018-2019年,Uber和Databricks相继推出了Apache Hudi和DeltaLake,均推出Delta文件格式用以支持Update/Insert、事务等数据仓库功能。新功能带来文件格式以及组织形式的改变,打破了数据湖原有多套引擎之间关于共用存储的简单约定。


这三个开源项目虽然出发点不尽相同,但是目标都指向了本该是统一的中心元数据服务,在开源数据湖体系中造成了事实上的混乱。


在这场从数据仓库到数据湖,或从数据湖到数据仓库的湖仓一体化争夺大战中,阿里云从微博的大数据实际应用出发,构建并成功落地了“湖仓一体化”架构和方案,通过技术手段把数据湖和数据仓库两套不同的架构体系融合在一起,向上对微博提供统一无缝的数据开发和管理体验。


数据「湖仓一体」具有以下关键特征:


事务支持:在企业中,数据往往要为业务系统提供并发的读取和写入。对事务的ACID支持,可确保数据并发访问的一致性、正确性,尤其是在SQL的访问模式下。


数据的模型化和数据治理:「湖仓一体」可以支持各类数据模型的实现和转变,支持DW模式架构,例如星型模型、雪花模型等。该系统应当保证数据完整性,并且具有健全的治理和审计机制。


BI支持:「湖仓一体」支持直接在源数据上使用BI工具,这样可以加快分析效率,降低数据延时。另外相比于在数据湖和数据仓库中分别操作两个副本的方式,更具成本优势。


存算分离:存算分离的架构,也使得系统能够扩展到更大规模的并发能力和数据容量。(一些新型的数据仓库已经采用了这种架构)


开放性:采用开放、标准化的存储格式(例如Parquet等),提供丰富的API支持,因此,各种工具和引擎(包括机器学习和Python / R库)可以高效地对数据进行直接访问。


支持多种数据类型(结构化、非结构化):Lakehouse可为许多应用程序提供数据的入库、转换、分析和访问。数据类型包括图像、视频、音频、半结构化数据和文本等。


支持各种工作负载:支持包括数据科学、机器学习、SQL查询、分析等多种负载类型。这些工作负载可能需要多种工具来支持,但它们都由同一个数据库来支撑。


端到端流:实时报表已经成为企业中的常态化需求,实现了对流的支持后,不再像以往一样,为实时数据服务构建专用的系统。


那说完了Data Lakehouse的特性,它到底解决了什么问题呢?


这些年来,在许多的公司里,数仓和数据湖一直并存且各自发展着,也没有遇到过太过严重的问题。但是仍有一些领域有值得进步的空间,比如:


数据重复性:如果一个组织同时维护了一个数据湖和多个数仓,这无疑会带来数据冗余。在最好的情况下,这仅仅只会带来数据处理的不高效,但是在最差的情况下,它会导致数据不一致的情况出现。Data Lakehouse统一了一切,它去除了数据的重复性,真正做到了Single Version of Truth。


高存储成本:数仓和数据湖都是为了降低数据存储的成本。数仓往往是通过降低冗余,以及整合异构的数据源来做到降低成本。而数据湖则往往使用大数据文件系统(譬如Hadoop HDFS)和Spark在廉价的硬件上存储计算数据。而最为廉价的方式是结合这些技术来降低成本,这就是现在Lakehouse架构的目标。


报表和分析应用之间的差异:报表分析师们通常倾向于使用整合后的数据,比如数仓或是数据集市。而数据科学家则更倾向于同数据湖打交道,使用各种分析技术来处理未经加工的数据。在一个组织内,往往这两个团队之间没有太多的交集,但实际上他们之间的工作又有一定的重复和矛盾。而当使用Data Lakehouse后,两个团队可以在同一数据架构上进行工作,避免不必要的重复。


数据停滞(Data stagnation):在数据湖中,数据停滞是一个最为严重的问题,如果数据一直无人治理,那将很快变为数据沼泽。我们往往轻易的将数据丢入湖中,但缺乏有效的治理,长此以往,数据的时效性变得越来越难追溯。Lakehouse的引入,对于海量数据进行catalog,能够更有效地帮助提升分析数据的时效性。


潜在不兼容性带来的风险:数据分析仍是一门兴起的技术,新的工具和技术每年仍在不停地出现中。一些技术可能只和数据湖兼容,而另一些则又可能只和数仓兼容。Lakehouse灵活的架构意味着公司可以为未来做两方面的准备。

文章参考:

​https://databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html​

​https://www.xplenty.com/glossary/what-is-a-data-lakehouse/​

​https://databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html​

全球云观察 | 大数据云原生时代,为什么说湖仓一体代表了未来?

 -End-