什么是数据湖
数据湖,英文名叫做Data Lake。它和数据库、数据仓库一样,是一种存储和处理数据的平台。
或者,更准确来说,数据湖是一个技术体系。它不是某一个具体的产品,而是一种架构,包括了很多的技术和组件(下文会详细说)。
我们还是先从数据湖的发展历程开始说起吧。
2010年10月,在纽约的Hadoop World大会上,Pentaho公司创始人及CTO詹姆斯·迪克森(James Dixon)率先提出了数据湖的概念。当时,他之所以提出数据湖,主要是为了推广自家的Pentaho产品以及Hadoop。
它是大数据的一个核心技术,诞生于2006年,具有极强的数据存储和处理能力。
詹姆斯·迪克森的Pentaho产品,是一个BI(Business Intelligence,商业智能)分析组件,基于Hadoop技术。
介绍数据仓库的时候,小枣君提到过,数据仓库会把众多数据源的数据汇集起来,进行ETL(抽取Extract、转换Transform和加载Load)三板斧操作,然后存储,用于BI、SQL查询、数据挖掘、数据分析等目的。
图片
换言之,Pentaho,是将当时新兴的Hadoop技术应用于数据仓库的一个尝试,主要是为了解决数据仓库的能力不足问题。
数据仓库正式诞生于1990年左右,到2010年,已经无法跟上时代。
数据仓库(包括数据集市),会对来自数据源的数据进行预处理和筛选。所以,在进行数据分析和数据价值挖掘时,会面临几个问题:
1、数据被预处理过,只保留了指定的属性。分析时,只能回答之前预设的问题。
2、数据被筛选过,很多底层的细节被筛除了。分析时,无法获得这些信息。
3、随着当时互联网的高速发展,非结构化数据(电子邮件,文档, PDF)以及半结构化数据(CSV,日志, XML, JSON)迅猛增长。数据仓库主要以处理结构化的数据(关系型数据库,例如数据表格、行与列)为主,无法很好地满足需求。
换言之,数据仓库,是把所有数据源的数据,按一开始制定的规则,进行了处理,变成了产品,缺乏灵活性。
而数据湖,是利用Hadoop等大数据技术的处理能力和成本优势,将所有数据源的数据,不做预处理,全部都存起来。
图片
这就解决了前面提到的几个问题:
1、数据湖中的数据接近原生,内容齐全,属性完整。应用层在使用数据时,可以基于需求,进行灵活设计。
2、数据信息未被筛选,底层细节都在,可以尽可能还原业务(也是为了更好地分析)。
3、结构化、非结构化、半结构化,所有数据都能保存和处理,满足互联网时代发展的需要。
数据湖还解决了一个重要问题,那就是数据孤岛。很显然,企业内部各个业务系统的数据都放在一起了,当然也就没有孤岛了,可以开发横跨多个系统的数据应用。
我们可以举个买菜炒菜的例子。
数据仓库,因为存储成本高,所以,买了菜之后,会进行预处理,变成指定的炒菜素材,例如土豆块、菜叶、肉丝等。炒菜时,厨师直接取用。如果厨师想要做一些特殊的菜,一些原生态的菜,就没办法了。如果厨师想要烧鱼,也没办法。
数据湖,就是你拥有了一个超大且便宜的空间,可以保存你购买的所有食材。食材的品种非常丰富,且不需要做任何预处理。各个厨师可以根据自己的需要,在炒菜时自行处理。厨师拥有了更多的灵活度,菜品也更加丰富。
数据湖的出现,满足了企业用户存储全域原始数据的需求。
2011年,CITO Research网站的CTO和作家丹·伍德斯(Dan Woods)也力推数据湖的概念。他指出:“如果我们把数据比作大自然的水,那么各个江川河流的水未经加工,源源不断地汇聚到数据湖中。”
很多人也许会问,为什么叫“数据湖”?而不是“数据池”、“数据河”、“数据海”?
因为“数据池”太小,体现不出数据的大量。“数据河”是流动的,数据无法保存。“数据海”则是因为没有边界。数据湖是属于企业的,需要边界,需要注意隐私和安全。
数据湖的主要特征
我们再简单地梳理一下数据湖的优点。
第一,数据的多样性。
数据湖可以存储多种类型的数据,包括结构化数据、半结构化数据和非结构化数据。这符合了物联网(IoT)、社交媒体和移动互联网的时代需求。
最近这几年,AI特别火爆。数据是AI的三要素(算力、算法、数据)之一。数据湖有利于企业发展AI业务,例如机器学习、生成式人工智能等。
第二,处理的实时性。
传统的数据仓库,采用的是——写时模式(Schema-On-Write)。数据加载到数据仓库时,首先需要定义好它。
数据湖,采用的是——读时模式(Schema-On-Read)。只需加载原始数据,然后,当准备使用数据时,再定义它。
这是两种截然不同的数据处理方法。数据湖简化了前期操作,数据准备的周期更短,可以灵活满足更多不同上层业务的高效率分析诉求。
图片
第三,容量更大。
数据湖具有海量的数据存储能力。数据湖基于分布式存储系统构建,能够灵活扩展,可以轻松应对PB级甚至EB级的数据量。
第四,成本更低。
数据湖往往基于开源软件和廉价硬件构建,而且部署在云环境中,成本大幅下降,减少了企业的投资。
第五,应用的多样化。
前面说了,数据湖保留了数据的原始特征和细节,所以,为后续的灵活分析和挖掘提供了丰富素材。企业用户可以进行批处理分析、实时流处理分析和交互式分析,满足不同业务场景的需求。
数据湖面对的挑战
说完了优点,我们再来看看挑战。
建设和使用数据湖,不是一件简单的事情。很多企业盲目跟风建设数据湖,最终却没有达到效果。
想要拥抱数据湖,面对的挑战主要来自两个方面。
第一,是性能。
数据湖的数据量很大,数据格式也很杂。缺乏一致的数据结构和ACID(原子性、一致性、隔离性和持久性)事务支持,导致数据湖在满足报告和分析需求时性能不佳。
第二,是数据治理。
数据治理是数据湖的最核心要素(没有之一),指对企业中数据的可用性、完整性和安全性的全面管理,以提升数据的质量和可用性。
前面提到,我们可以将数据源的数据“倒入”数据湖,无需进行处理。但是,“不处理”并不代表“不治理”、“不管理”。
在介绍数据仓库的时候,我们提到过元数据。元数据,就是管理数据的数据。元数据中包括了数据存储位置、数据格式、数据模式、数据分布等信息。
数据湖拥有海量数据,管理元数据显得更为重要。
数据湖会建立一个数据目录。数据目录是元数据的集合,可以理解为是一张“数据清单”。通过数据目录,用户可以搜索和发现数据湖中的数据,提高数据的可访问性和可发现性。
图片
具体来说,基于数据目录,结合数据管理和搜索工具,上层计算引擎可以直接获取数据的关键信息,进行数据处理。
数据目录,还可以对数据湖中的数据进行访问控制,控制的力度可以做到“库表列行”等不同级别。
除了数据目录之外,数据治理还需要关注数据质量和数据合规。
数据湖存储的数据,具有不同的质量和精度,可能导致分析结果不准确、不可靠。因此,需要建立数据质量系统,确保数据的完整性、准确性、一致性以及标准化。
数据合规,很容易理解,就是数据存储和使用必须符合法律法规,例如GDPR(通用数据保护条例)、HIPAA(健康保险便利和责任法案)等。数据合规一旦出问题,可能导致数据泄露、法律诉讼或巨额罚款,损害企业的声誉,也带来经济上的损失。
特别值得一提的是,如果数据湖没有得到妥善的治理,就会变成庞大的“数据沼泽”,根本没办法发挥数据的价值,反而变成累赘。
数据湖的架构
前面说过,数据湖是一个框架和技术体系。它由多个互相协作的组件和产品组成的。
围绕数据湖的技术组件和产品,一般来自四类厂商:
· 开源解决方案
· 云服务商(如亚马逊AWS、微软Azure、Google Cloud、阿里云、华为云等)
· 专业数据库出身的厂商
· 一些初创企业或团队
不同的公司,会开发不同的组件和产品,应用于不同的层级。少部分公司,能够提供完整的全套解决方案,或者基于云服务的全托管方案。
出于成本的考虑,很多企业可能更倾向于使用开源产品。开源数据湖方案比较知名的分别是:Delta Lake(DataBricks公司)、Apache Iceberg、Apache Hudi和Apache Paimon。
图片
数据湖概念被提出来之后,云服务厂商特别激动,也特别热情,吆喝得最卖力。原因很简单,数据湖想要实现海量数据的低成本存储,一般会用到分布式存储和云存储服务。而且,云服务厂商可以提供前面提到的全托管方案。
AWS的数据湖产品体系
不同的方案提供商,会提出不同的数据湖架构。但是,基本上都包括四个主要层次:
数据摄取层(数据采集层):负责从各种数据源收集数据,并将其传输到数据湖中。
数据存储层:以原始格式存储大规模的数据。
数据管理层:对数据进行管理和组织,包括数据的分类、编目、索引等功能。还要负责数据的安全和合规。
数据访问层(数据分析层):提供各种工具和框架,支持用户对数据湖中的数据进行查询、统计分析、机器学习等操作。
好了,看到这里,大家一定会发现,数据仓库和数据湖有各自的优点和缺点。
图片
那么,有没有办法,可以将两者之间的优点相结合呢?
当然有的,那就是数据湖仓,也叫湖仓一体。