大数据在一线互联网已经爆发了好多年,2015年-2020年(国内互联网爆发期)那时候的大数据开发,刚毕业能写Hive SQL配置个离线任务、整个帆软报表都20K+起步。如果做到架构师,50K跑不掉。现在市场回归理性后:
数据架构在过去20年发展迅速,尤其是过去十年,几乎每年都有新概念、新产品开源出来。一些新名词爆发式展现出来:数据仓库、数据集市、大数据、离线数仓、实时数仓、时空数据库、数据中台、数据湖、流批一体、湖仓一体、实时湖仓、商业智能(BI)等等。
本系列文章不做源码级分析大数据框架,而是关注大数据的发展历史、主流架构和原理、落地流程。可作为架构师对于大数据架构的扫盲贴。(笔者花了2月的时间阅读大量文章总结出来的,欢迎留言交流。)
回到顶部(go to top)
前面说了大数据领域出了很多概念:数据仓库、数据集市、大数据、离线数仓、实时数仓、时空数据库、数据中台、数据湖、流批一体、湖仓一体、实时湖仓。我们就来简单解析一下这些"专业名词",从概念上达成一致,有一个基本的定位。
如上图所示,这些大数据领域的名词,我们可以分为2大类:1.数据服务架构相关 2.数据库、数仓相关。其中绿色角标标识具体概念的,黄色角标标识抽象概念的。
1.大数据:广义上的大数据概念,涵盖数据服务、数据仓库领域的概念。
1.数据服务架构相关:
2.数据仓库架构相关:
1.具体概念
2.抽象概念(逻辑概念)
数据库是“按照数据结构来组织、存储和管理数据的仓库”。数据库有很多种类型适用不同业务场景,最常见的是关系型数据库、键值型数据库、时序数据库。
支持事务ACID特性的数据库。常见的有Mysql、Oracle、PostgresSQL等。
数据仓库是Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
EDW也是一种数据仓库DW。上世纪90年代,使用结构化数据+3NF范式建模,构建EDW企业数据仓库。
2003~2006年 Google发表了三篇论文:分布式文件系统GFS、分布式计算框架MapReduce、分布式存储系统BigTable。2006年,Hadoop正式面世。此后,以Hadoop技术栈为代表的离线数仓架构引领大数据发展了十多年。这时候的处理任务基本都是批处理任务。离线数仓特指:应对批处理(离线计算)场景的数据仓库。如下图所示:
早期离线数仓使用离线计算引擎实现批处理数据。最常用的离线计算引擎就是Hive(Hadoop技术体系)。典型应用是定时任务跑批生成报表数据。
2014年,Flink为代表的实时计算风靡,基于Flink为计算引擎的实时数仓跃然纸上。实时数仓特指:应对实时处理(实时计算)场景的数据仓库。典型的实时数仓如下图所示:
数据集市(Data Mart),也叫数据市场,就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。
按照抽取方式可分为两类:
1)独立型数据集市:直接从源数据抽取业务数据。
2)从属型数据集市:从数据仓库/数据湖抽取。
随着互联网->移动互联网->IOT物联网 这一条商业智能发展线路的改变,产生了大量的照片、视频、文档等非结构化数据、时序数据。数据湖诞生了:允许用户以任意规模存储所有结构化和非结构化数据,并支持对数据进行快速加工和分析。用户可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析(从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。
数据仓库的成长性很好,而数据湖更灵活。数据仓库支持的数据结构种类比较单一,数据湖的种类比较丰富,可以包罗万象。数据仓库更加适合成熟的数据当中的分析和处理,数据湖更加适合在异构数据上的价值的挖掘。
2020年,阿里巴巴实时团队提出“流批一体”的理念,期望依托Flink框架解决企业数据分析的3个核心问题,理念中包含三个着力点,分别是一套班子、一套系统、一个逻辑。
3.单纯使用Flink框架的方向:主要是在尝试和探索Flink SQL在流数据、批数据上的效果。
2020年,为提供一体化数据平台,一种新的开放式架构湖仓一体(Lakehouse)出现,它结合了数据湖和数据仓库的最佳元素,是新一代大数据分析的基础设施。现普遍认为美国大数据软件公司Databricks最先提出湖仓一体架构,他们将其定义为:一种结合了数据湖和数据仓库优势的新范式,直接在低成本存储的数据湖上实现与数据仓库类似的数据结构和数据管理功能。数据分析师和数据科学家可以在同一个数据存储中对数据进行操作,同时它也能为公司进行数据治理带来更多的便利性。
湖仓一体的实现路径主要有两种。一是在数据仓库的基础上实现数据湖的特性,一般方案是在数据仓库中建外部表,代表厂商是美国的Snowflake;二是在数据湖中提供与数据仓库中类似的数据结构和数据管理功能,一般方案是实现多版本并发控制等,代表厂商是美国的Databricks。两种实现路径均面临相同的问题,如数据如何打通、如何保证元数据一致性、湖和仓上不同引擎之间数据交叉的引用问题等等。
数据仓库->数据湖->数据湖仓(湖仓一体)的演变,示意图如下:
湖仓一体架构解决了3个问题,增强了3个能力。
2.6.3 解决了3个问题
01 打通湖与仓库的壁垒,解决数据重复性问题。
如果一个组织同时维护了一个数据湖和多个数仓,这无疑会带来数据冗余现象,严重时甚至出现数据口径不一致的问题。湖仓一体架构下,数据湖成为数据仓库的数据源,数据仓中的冷数据可以转移至数据湖低成本存储,许多数据管道通常可以同时读取和写入数据,保证使用SQL时数据的一致性,统一了口径并去除了重复性,可在企业级应用中支持事务一致性处理。
02 解决数据停滞问题(Data stagnation),更好实现数据治理。
在数据湖中,数据停滞是最为严重的问题之一。用户轻易将大批量数据入湖,但如果没有专员进行维护和治理,很容易变成数据沼泽,最终导致海量数据无法赋能业务。湖仓一体的显著优点是可以对海量数据进行Catalog,这一特性更有效地帮助提升数据分析的时效性,支持数据的全生命周期追溯和管理。
03 实现存算分离,解决高昂成本问题。
数据仓库多通过降低冗余或整合异构数据源来做到降低成本,但由于其计算与存储耦合,架构上的每个节点有计算资源和存储空间,数据会横向分布到各个节点之间,计算的时候每个节点都只需处理位于这个节点上面的数据。这种架构下不能弹性分配计算和存储资源,随着数据业务的快速增长,用户在计算、存储性能上的扩展需求往往不同步,计算性能通常仅需要在负载高峰期间扩展,而存储性能一般需要长期、线性扩展。此外,增加或减少节点后大量数据需重新排布,可能会造成节点频繁宕机。大部分数据仓库无法实现存算分离,所以成本高居不下。
数据湖通常使用大数据文件系统(如Hadoop HDFS)和Spark,在廉价的硬件上存储海量的数据,但对计算能力明显不足。
仓与湖相结合成为最性价比方式:湖仓一体架构实现存算分离,存储和计算分别使用单独的群集,这样系统能够扩展到更多并发用户和更大数据量,一些云服务厂商的数据仓库也逐渐考虑向这方面转变。
2.6.4 增强了3个能力
1.流批一体保证实时处理:现在已经有越来越多的行业和技术领域需求大数据实时分析系统,例如金融行业需要使用大数据系统结合VaR (金融风险管理,value at risk) 或者机器学习方案进行信贷风控,零售、餐饮行业需要大数据系统实现辅助销售决策,各种IOT场景需要大数据系统持续聚合和分析时序数据等。湖仓一体支持端到端的流式计算,从而能够支持实时数据应用,用户不再需要专门服务于实时数据的应用程序,系统集成度更高。
2.消除孤岛加强团队协作:数据分析师和数据科学家对数据的要求和数据存储介质的使用情况不同,数据分析师多使用数据仓库或数据集市来对已经分类的数据进行进一步处理和解读,而数据科学家与数据湖交际更多,他们多使用未经处理的海量数据来加以分析和建模。湖仓一体使得两个团队可以在同一数据架构上进行工作,避免不必要重复开发的同时。湖仓一体架构支持更多数据格式,用于各种工作场景和不同的团队,使用的存储格式是开放式和标准化的,如Parquet格式,支持强制的Schema以及数据治理,星型模型或者雪花模型均可。
3.更好地支持AI和BI发展:更多的环湖服务(比如多维分析、预测分析、数据科学、机器学习、大数据处理、决策支持等)可以为整个业务带来价值。可以直接在源数据上使用BI工具。
回到顶部(go to top)
上图展示了数据管理技术发展脉络。面向未来,以湖仓一体为代表的未来数据治理将呈现以下三点趋势:
1、多场景融合:加速向通用人工智能转型。
目前数据库市场定制化产品较多,随之而来的是较高的成本,一些拥有价值数据的中小企业很难采纳价格较高的“数据+AI”产品。随着数据存储产品的演变,通用型产品出现,更多商业化方案和赋能计划在数据的支撑下实现。
2、存算分离:为用户提供更多的使用选择。
传统方式下,存算高耦合,用户即使没有计算需求,但困于数据量庞大,仍需要支付高昂的存储费用。据观察,众多数据库厂商逐步向存算分离模式靠拢,通过解决弹性伸缩问题,以给用户最佳解决方案。
3、湖仓一体:成为新的数据基础设施底座,逐步实现海量大数据的联机交易和联机分析。
在数据分析领域,湖仓一体代表未来的发展趋势,同时也是全流程流批一体化的基础。这种架构下可以更好地应对 AI 时代数据分析的需求,在数据存储格式、数据处理和分析以及面向 AI 的演进等方面,显著领先于其他数据库。