数据库 频道

我们需要怎样的湖仓一体架构?

  近两年,湖仓一体(Lakehouse)架构成为数据技术融合的典型,被视作新的数据范式,自2020年被提出,受到包括云厂商在内的各方追捧。日前谷歌云发布了Big Lake迈进湖仓一体的大门,而在星环科技春季发布周,湖仓一体也成为融合数据云时代的重要构成,受到关注。

  有了数据仓库,数据湖,为什么还要湖仓一体?湖仓一体如何释放数据要素价值?

为什么需要湖仓一体?

  讲湖仓一体前先讲一下数据仓库和数据湖,在1991年出版的“Building the Data Warehouse”,数据仓库之父比尔·恩门首次提出数据仓库的概念。数据仓库面向主题,可以存储结构化数据为特定的商业智能和分析报告服务。大数据时代,非结构化、半结构化数据越来越多,有数据表明非结构化数据占企业数据的80%以上,并以每年55%和65%的速度在增长,比如视频、图片、声音,从中可以获得比结构化数据更有价值的洞察,不过数据仓库模型中的结构化和有序的信息存储方式并不能支持,这导致数据湖(Data Lake)架构出现。

  2010年数据湖概念应运而生,数据湖是一个以原始格式存储数据的存储库或系统,可以存储结构化、半结构化、非结构化数据,是一个灵活的架构。

  数据湖架构有很多优点,但是也有弊端,有专家指出,如果数据湖没有被治理好(缺乏元数据、定义数据源、制定数据访问策略和安全策略,并移动数据、编制数据目录),则会变成数据沼泽。去年比尔·恩门在一次与Databricks创始人的线上连线中指出,大多数数据湖项目失败了,他认为数据湖的问题在于架构。

  在很长一段时间内,数据湖架构中所缺失的,企业都是采用“数据湖+数据仓库”混合架构来弥补。

  在日前星环科技春季发布周,星环科技公共事业部系统架构负责人徐流明指出,2010年后,随着大数据技术的兴起,数据应用场景更加多元化,出现实时计算、全文检索、机器学习,以及其他数据科学类分析需求,数据湖概念也随之而来。在这个阶段,大家的关注点更多在于如何用不同的技术栈支撑不同的数据分析场景,很多企业采用“数据湖+数据仓库”的混合架构处理结构化和非结构化等问题,但是对数据平台架构的合理性、可维护性、易用性没有太多关注,导致很多企业建设的数据平台架构非常复杂,为后期的平台迭代和运维等造成了很大问题。

  徐流明介绍,“湖+仓”混合架构中,数据湖和数据仓库是两套独立的技术体系混合部署在一个数据平台上,数据湖是基于Hadoop技术来实现,主要用于支撑多元异构的数据存储,去执行批处理、流处理等工作负载。数据仓库主要是基于MPP或者关系型数据库来实现,主要支撑结构化数据在OLAP场景下的BI分析和查询需求,由于湖和仓之间是互相独立的,需要通过ETL实现数据交换。这种架构可以在一定程度上解决企业多场景的数据分析需求,但也有一些明显的弊端。

  一是混合部署架构较为复杂,导致架构设计和项目实施交付成本较高,且后期平台运维难度较大;二是数据冗余非常明显,Hadoop和MPP属于分布式系统,为了保障数据的高可靠性一般通过冗余备份的方式实现,本身两种技术都已经做了数据冗余备份,但是采用混合架构无法避免有部分数据既存在Hadoop平台,又存在MPP平台,进一步增加了数据冗余比例,增加存储成本;三是数据链路过长,通常数据处理要先入湖,进行批处理后再入仓,由湖入仓需要ETL加载,影响查询时效性;四是容易产生数据一致性问题,无论由湖入仓,还是由仓入湖,混合架构下实质都是在两种数据平台间进行数据迁移,迁移过程难免会出现数据一致性问题,增加额外的数据校验成本。

  “湖+仓的混合架构是在数据平台架构演进过程中技术向业务妥协的一个产物,它并不是真正意义上的湖仓一体平台。”徐流明强调,“从技术角度看,湖仓一体是以多模型数据平台技术为依托,打破传统Hadoop+MPP混合部署模式,实现湖仓技术架构统一。通过一站式的多模型数据平台支撑数据湖、数据仓库、数据科学等多样化的数据分析场景。未来,湖仓一体作为新一代大数据技术架构,将逐渐取代单一数据湖和数据仓库架构。”

需要什么样的湖仓一体架构?

  2020年Databricks提出Lakehouse(湖仓一体)架构,背后的基本思想是将数据仓库和数据湖模型的优势结合,取长补短。在Databricks的描述中,Lakehouse是数据湖和数据仓库的混合体。一方面,它提供了处理结构化程度较低的数据类型的灵活性,如文本和图像文件,这在数据科学和机器学习项目中是常用的。但它也借用了数据仓库的学科,特别是在确保数据质量和确保其脉络被跟踪和管理方面,数据仓库有独特的优势。

  湖仓一体架构目前还是较新的概念,除Databricks外,Snowflake以及一些云大厂进行了相关布局。作为大数据基础软件供应商,星环科技对湖仓一体布局较早,在日前的春季新品发布周,星环科技发布了湖仓一体2.0解决方案。

  星环科技认为湖仓一体架构是未来的趋势,该公司指出,湖仓一体的架构是以多模型数据平台技术为依托,打破了传统Hadoop加MPP的混合部署模式,实现湖仓技术架构统一,如此才属于真正的湖仓一体平台。

  徐流明介绍,星环科技湖仓一体解决方案总体分为五层架构,从下至上依次为信创自主可控硬件生态层、基于云原生技术的容器化资源管理层、统一分布式存储层、统一分布式计算引擎和统一数据操作层。此外,贯穿五层架构还提供了全生命周期的数据管理功能,可以实现多模态数据以及元数据统一管控,同时还支持统一多租户管理,实现资源层、数据层、以及应用层的完整隔离。

  据悉,在技术架构层面,星环科技湖仓一体架构与Databricks的Delta Lake和谷歌云的Big Lake有相似之处,也有差异。徐流明介绍,相同点主要体现在存储层都强调通过一套统一的存储系统来实现多源异构数据的统一存储问题,为上层计算引擎提供统一调用接口,同时在存算分离、统一元数据管理等方面也具有一定的相通性。

  差异性主要体现在计算引擎层和接口层,Big Lake与Delta Lake的计算引擎层和接口层是独立的。以Databricks为例,星环科技湖仓一体方案通过一套统一的计算引擎来解决不同模态数据在不同场景下的融合分析问题,Databricks湖仓一体架构的计算引擎主要依赖Apache Spark体系,对分析场景比如时空分析、时序分析等的支撑可能有局限性;在接口层星环科技湖仓一体方案对外提供统一查询接口(标准化SQL语法),简单易用,Databricks湖仓一体方案在接口层针对不同的分析场景,还必须使用大量API接口。

  在湖仓一体架构中,有不少专家强调开放性的特性,使用的存储格式(如Parquet)是开放式和标准化的,并提供API以便各类工具和引擎(包括机器学习和Python / R库)可以直接有效地访问数据。开放性也一度成为Snowflake和Databricks争论的焦点,星环科技对此有自己的理解。

  “接口层的开放性比存储层的开放性更加重要。我们更倾向于让数据分析人员把星环湖仓一体平台当成一个数据库系统来使用,只通过简单的SQL查询接口就可以满足多样化、高性能的分析需求,而不是让数据分析人员直接操作底层的存储系统。”徐流明介绍,在接口开放性方面,星环科技湖仓一体方案可以支持标准SQL语法,同时也可以兼容Oracle/DB2/TD等存储过程和数据库方言;在存储开放性方面,星环研发了统一的分布式数据管理系统,为不同存储引擎提供公共的存储管理服务,保障数据一致性,实现数据统一管理运维和高可用。目前分布式数据管理系统接入了9款存储引擎,支持10种数据模型的存储。同时可插拔特性,可以根据需要接入其他存储引擎,方便后续业务的灵活扩展。存储格式支持主流的数据格式,如Parquet、ORC等,同时还针对高IOPS的存储介质专门设计了更高效的存储格式Holodesk,可以大大提高高并发集市场景的查询性能,对外也可以提供标准化的接口。

  在目前国产化与信创浪潮下,星环科技湖仓一体解决方案突出了自己自主可控能力,徐流明指出,对内,星环一直在坚持自主研发与技术创新,不断的通过关键技术突破解决客户最难、最迫切的业务难题,把困难留给自己,把方便带给客户。上图中绿色的部分是已经实现了自主可控的组件,占整个技术组件的90%以上;对外,星环也在积极和信创上下游合作伙伴做兼容适配,拥抱信创生态,同时也在积极参与国家信创大数据标准规范的制定工作。目前,星环科技湖仓一体解决方案已经在金融、政府、交通、邮政、医疗、能源等行业以及部分大型国有企业落地应用,典型客户包括中化集团、中国邮政集团、广州农商行等。

  有分析人士指出,围绕着湖仓一体架构(Lakehouse)的概念有很多炒作是有原因的。从本质上讲,它是一种新的数据管理范式,结合了数据仓库和数据湖的功能,改变了数据团队共同运作的方式,这种新的架构代表了处理数据的方式的重大根本转变。在多源异构的复杂数据世界中释放数据要素价值,湖仓一体架构被寄予厚望。

1