谈谈企业如何实施数据湖(上)

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 目前,很多大型集团企业都在热烈讨论建立数据湖的最佳方式。

目前,很多大型集团企业都在热烈讨论建立数据湖的最佳方式。成熟的数据湖解决方案是什么样的?是否应用于实际场景?什么是数据湖?数据湖和大数据平台有什么区别?目前市场上有哪些数据湖解决方案? 本文提供了对数据湖概念的深入了解,并比较了市场上一些常见的解决方案。

一、什么是数据湖

数据湖的概念最近成为了一个热门话题。许多企业正在建立或计划建立自己的数据湖。在开始规划数据湖之前,我们必须回答以下关键问题:什么是数据湖?数据湖项目需要构建哪些模块?如何构建基础数据湖架构?

首先,我们看看维基百科、亚马逊 (AWS)和微软提供的数据湖定义。

维基百科对数据湖的定义是:

数据湖是以自然/原始格式存储的数据系统或存储库。数据湖通常是所有企业数据的单一存储,包括用于报告、可视化、高级分析和机器学习等任务的源系统数据的原始副本和转换数据。数据湖可以包括来自关系数据库的结构化数据(行和列)、半结构化数据(CSV、日志、XML、JSON)、非结构化数据(电子邮件、文档、pdf)和二进制数据(图像、音频、视频)。数据沼泽是一个恶化的、未被管理的数据湖,其目标用户要么无法访问,要么提供的价值很少。

亚马逊对数据湖的定义是:

数据湖是一个集中式的存储库,允许您以任何规模存储所有结构化和非结构化数据。您可以按原样存储数据,而不必首先对数据进行结构化,并运行不同类型的分析——从仪表板和可视化到大数据处理、实时分析和机器学习,以指导更好的决策。

微软对数据湖的定义是:

数据湖包含了开发者、数据科学家和分析人员存储任何大小、形状和速度的数据所需的所有功能,并可以跨平台和语言进行所有类型的处理和分析。它消除了吸收和存储所有数据的复杂性,同时更快地启动和运行批处理、流媒体和交互式分析。Azure数据湖在身份、管理和安全方面与现有的IT投资合作,以简化数据管理和治理。它还与运营商店和数据仓库无缝集成,因此您可以扩展当前的数据应用程序。我们借鉴了与企业客户合作的经验,并为Office 365、Xbox Live、Azure、Windows、必应和Skype等微软企业运行了一些全球规模最大的处理和分析系统。Azure数据湖解决了许多阻碍你最大化数据资产价值的生产力和可伸缩性挑战,并提供了一项服务来满足你当前和未来的业务需求。

无论数据湖的定义的来源如何,大多数数据湖概念的定义都着重于数据湖的以下特征:

■数据湖提供了足够的数据存储空间,可以存储企业或组织的所有数据。

■数据湖可以存储各种类型的海量数据,包括结构化、半结构化和非结构化数据。

■存储在数据湖中的数据是原始数据或业务数据的完整副本。数据存储在数据湖中,就像在业务系统中一样。

■数据湖提供完整的元数据来管理所有类型的数据相关元素,包括数据源、数据格式、连接信息、数据模式和权限管理功能。

■数据湖提供多种分析功能,包括批处理、流计算、交互式分析和机器学习,以及作业调度和管理功能。

■数据湖支持全面的数据生命周期管理。除了原始数据,数据湖还存储分析和处理的中间结果,并保存这些过程的完整记录。这有助于跟踪任何数据记录的整个生产过程。

■数据湖提供了全面的数据检索和发布功能。数据湖支持多种数据源。它从数据源检索完整的增量数据,并以标准方式存储检索到的数据。数据湖将数据分析和处理的结果推送到适当的存储引擎,这些引擎支持来自不同应用程序的访问。

■数据湖提供大数据能力,包括超大存储空间和处理大规模数据所需的可伸缩性。

简而言之,数据湖是一个不断发展的、可扩展的大数据存储、处理和分析基础设施。面向数据的数据湖可以以任何速度和规模检索和存储任何类型和来源的完整数据。它以多种模式处理数据,并在整个生命周期内管理数据。它还通过与各种不同的外部数据源交互和集成来支持企业应用程序。

d1b1b34079c92194540ee87e6e1eb018.png

注意以下两点:

(1)可扩展性意味着数据湖在大小和能力方面是可伸缩的。具体来说,数据湖不仅为日益增长的数据提供了足够的存储和计算能力,而且不断提供新的数据处理模型来满足不断出现的需求。业务需求总是随着业务增长而发展。例如,我们已经看到了业务需求如何从批处理发展到交互式和即时分析,然后是实时分析和机器学习。

(2)面向数据意味着数据湖简单易用,帮助您专注于业务、模型、算法和数据,而无需处理复杂的IT基础设施。数据湖是为数据科学家和分析人员设计的。目前,原生云是构建数据湖的理想方式。

二、数据湖的基本特征

数据湖的基本特征可以通过比较数据湖与大数据平台、传统数据仓库的区别来看。首先,让我们看一看来自AWS网站的比较表。

bc0b15d28d139958bedec81cb3d51d23.png

上表比较了数据湖和传统数据仓库之间的差异。我们可以从数据和计算两个方面进一步分析数据湖的特征:

1.数据保真度:数据湖以业务系统的方式存储数据。与数据仓库不同,数据湖存储的是原始数据,数据湖的格式、模式和内容不能被修改。数据湖按原样存储业务数据。存储的数据可以包括任何格式和任何类型的数据。

2.数据灵活性:如上表的“Schema”行所示,写模式或读模式表示数据模式的设计阶段。模式对于任何数据应用程序都是必不可少的。即使是无模式数据库,如MongoDB,也建议使用相同或相似的结构作为最佳实践。写模式(schema -on-write)是指在写入数据之前,根据特定的业务访问模式确定数据导入的模式。这使得数据和业务之间能够进行有效的适配,但增加了早期阶段数据仓库维护的成本。如果没有清晰的业务模型,可能无法灵活地使用数据仓库。

数据湖采用读模式(schema on-read),这意味着它将业务不确定性视为常态,并能够适应不可预测的业务变化。您可以根据需要在任何阶段设计数据模式,这样整个基础设施就可以生成满足业务需求的数据。保真度和灵活性是密切相关的。由于业务更改是不可预测的,因此可以始终保持数据原样,并根据需要处理数据。因此,数据湖更适合创新型企业和业务快速变化、成长的企业。数据湖是为数据科学家和业务分析师设计的,他们通常需要高效的数据处理和分析,喜欢使用可视化工具。

3.数据管理:数据湖提供全面的数据管理能力。由于其保真度和灵活性,数据湖至少存储两种类型的数据:原始数据和处理数据。存储的数据不断地积累和演变。这需要强大的数据管理功能,包括数据源、数据连接、数据格式和数据模式。数据模式包括数据库和相关的表、列和行。数据湖为企业或组织的数据提供集中存储。这需要权限管理功能。

4.数据可追溯性:数据湖存储组织或企业的全部数据,并对存储的数据进行整个生命周期的管理,从数据定义、访问、存储到处理、分析和应用。强大的数据湖充分再现了数据生产过程和数据流,确保每条数据记录从访问、存储、处理到消费过程都可追溯。

5.数据丰富的计算引擎:数据湖支持多种计算引擎,包括批处理、流计算、交互分析和机器学习引擎。批处理引擎用于数据加载、转换和处理。流计算引擎用于实时计算。交互式分析引擎用于探索性分析。大数据和人工智能(AI)的结合催生了各种机器学习和深度学习算法。例如,TensorFlow和PyTorch可以通过HDFS、Amazon S3或Alibaba Cloud Object Storage Service的样本数据进行训练。因此,一个合格的数据湖项目应该为可扩展和可插拔的计算引擎提供支持。

6.多模式存储引擎:理论上,数据湖应该提供内置的多模式存储引擎,以允许不同应用程序访问数据,同时考虑一系列因素,如响应时间(RT)、并发性、访问频率和成本。但在现实中,数据湖中的数据存取并不频繁,数据湖相关应用仍处于探索阶段。为了平衡成本和性能,数据湖通常使用相对便宜的存储引擎,如Amazon S3、Alibaba Cloud OSS、HDFS或对象存储(Object-Based storage, OBS)。必要时,数据湖可以与外部存储引擎协作,以满足各种应用程序的需求。

三、数据湖的基本架构

数据湖是下一代大数据基础设施。首先,让我们来看看大数据基础设施的演变。

阶段1:离线数据处理基础设施,如Hadoop。

如下图所示,Hadoop是一个以HDFS为核心存储,以MapReduce (MR)为基本计算模型的批处理数据基础设施。针对HDFS和MR开发了一系列组件,这些组件不断提升大数据平台的数据处理能力,如用于在线KV操作的HBase、用于SQL的Hive、用于工作流的Pig等。不断有新的计算模型被提出,以满足日益增长的批处理性能的需求,产生了诸如Tez、Spark和Presto等计算引擎。MR模型也发展成有向无环图(DAG)模型。DAG模型改进了计算模型的抽象并发性。它根据聚合操作将作业划分为逻辑阶段,从而对每个计算过程进行拆分。每个阶段由一个或多个任务组成,并发执行,提高计算进程的并行性。为了降低数据处理中间结果的写入频率,Spark、Presto等计算引擎会尽可能将数据缓存到计算节点的内存中。这提高了数据处理效率和系统吞吐量。

ad30bab1c66940095c8d6e9313d063ab.png

阶段2:Lambda架构

随着数据处理能力和处理需求的不断变化,无论如何提高批处理性能,在某些处理场景中都不可能实现高实时性能。该问题可以通过Storm、Spark Streaming、Flink等流计算引擎解决。批处理与流计算相结合,以满足许多新兴应用的需要。Lambda提供了一个数据模式,将批处理和流计算返回的结果统一起来,因此不必关心使用了什么底层计算模型。下图显示了Lambda体系结构。

61d6032ab643f8cbd03839e7d6d72f0a.png

Lambda体系结构集成了流计算和批处理。数据从左到右流经Lambda平台,传入的数据分为两部分。一部分是批处理,另一部分是流计算。批处理和流计算的最终结果通过服务层提供给应用程序,确保访问一致性。

阶段3:Kappa架构

Lambda体系结构允许应用程序一致地读取数据。然而,批量处理和流计算的分离使研究和开发复杂化。是否有一个单一的系统可以解决所有这些问题?一个常见的实践是使用流计算,它具有固有的和高度可伸缩的分布式体系结构。通过提高流计算并发性和增加流数据的时间窗,实现了批处理和流计算两种计算模型的统一。

49522f0d9951ab4742ae0c7724617563.png

简而言之,大数据基础设施已经从Hadoop架构发展到Lambda和Kappa架构。大数据平台处理企业或组织的全数据,同时提供全方位的数据处理能力,以满足应用需求。在当前的企业实践中,关系数据库基于独立的业务系统存储数据。其他数据存储在大数据平台上统一处理。大数据基础设施是专门为存储和计算而设计的,但忽略了数据资产管理。基于资产管理的考虑,设计了一个数据湖。

有一次,我读了一篇有趣的文章,文章提出了这样一个问题:为什么我们要用“数据湖”而不是“数据河”或“数据海”?我想从以下几个方面来回答这个问题:

■一条河流自由流动,最终汇入大海。企业数据需要很长一段时间才能积累,这就像雨水填满湖泊一样。湖泊自然分层以适应不同的生态系统。这与企业建立统一的数据中心,在不同层存储管理数据的情况类似。热数据存储在数据中心的上层,便于应用程序访问。温数据和冷数据存储在数据中心不同的存储介质中。这实现了数据存储容量和成本之间的平衡。

■海是无边无际的,而湖是界限分明的。湖泊的边界类似于一个企业或组织的业务边界。因此,数据湖需要具备足够的数据和权限管理能力。

■数据湖需要细粒度的管理。数据沼泽是一个恶化的、未被管理的数据湖,它的预期应用程序无法访问,或者没有提供什么价值。

随着大数据基础设施的发展,企业和组织将数据作为一种重要的资产类型来管理。为了更好地利用数据,企业和组织必须采取以下措施来管理数据资产:

■长期存储数据资产

■对数据资产进行有效管理和集中治理

■提供多模式计算能力,以满足数据处理需求

■为企业提供统一的数据视图、数据模式和数据处理结果

数据湖不仅提供了大数据平台的基本功能,还提供了数据管理、数据治理、数据资产管理等功能。为了实现这些功能,数据湖提供了一系列数据管理组件,包括数据访问、数据迁移、数据治理、质量管理、资产目录、访问控制、任务管理、任务编排和元数据管理。下图是一个数据湖系统的参考架构。与大数据平台类似,典型的数据湖提供超大规模数据处理所需的存储和计算能力,以及多模式数据处理能力。此外,数据湖还提供了更完善的数据管理功能:

b630fd88ba8ed1db9be579aa24e50cd6.png

(1)强大的数据访问能力

数据湖提供了数据访问功能,允许您定义和管理各种不同的外部数据源,并从这些数据源提取和迁移数据。提取和迁移的数据可以包括来自外部源的元数据和实际存储的数据。

(2)强大的数据管理能力

数据湖提供基本的数据管理能力和扩展的数据管理能力。基本数据管理功能是数据湖所需的功能,包括元数据管理、数据访问控制和数据资产管理。扩展的数据管理功能包括作业管理、流程编排以及与数据质量和数据治理相关的功能。作业管理和流程编排功能允许您管理、编排、调度和监视数据湖系统中处理数据的作业。这些功能通常由数据湖开发人员通过购买或定制用于数据集成或开发的子系统和模块来获得。通过从数据湖中读取相关元数据,可以将自定义的子系统和模块集成到数据湖中。数据质量和数据治理能力是复杂的,不是由数据湖系统直接提供的。然而,数据湖系统提供了接口或元数据,允许有能力的企业和组织将数据湖系统与现有的数据治理软件集成或开发自定义的数据湖系统。

(3)共享元数据

数据湖提供元数据作为其所有计算引擎与存储数据集成的基础。在一个有效的数据湖系统中,计算引擎在处理数据的同时直接从元数据中检索信息。这些信息包括数据存储位置、数据格式、数据模式和数据分布,并直接用于数据处理,无需人工干预或编程。此外,一个有效的数据湖系统在数据库、表、列和行各级控制对存储数据的访问。

上图所示的集中存储是一个与业务相关的概念。它为企业或组织的内部数据的存储提供了一个统一的区域。数据湖采用可扩展的分布式文件系统进行存储。大多数数据湖实践推荐使用分布式系统,如Amazon S3、阿里巴巴云OSS、OBS、HDFS作为数据湖的统一存储。

下图说明了数据湖中的总体数据生命周期。从理论上讲,管理良好的数据湖会永久保留原始数据,同时不断改进和发展流程数据,以满足您的业务需求。

28c84a8c1838480b2d8fc6f6df85f52b.png

四、数据湖解决方案

随着数据湖应用成为一种趋势,各大服务提供商纷纷推出自己的数据湖解决方案及相关产品。

1.AWS数据湖解决方案

92c476c88b6104b087c27d8528de5f4e.png

上图展示了AWS的数据湖解决方案。该解决方案基于AWS的数据湖组成,该数据湖是一个管理组件,与AWS的其他服务一起组成企业数据湖。从左到右显示了四个阶段:数据流入、数据积累、数据计算和数据应用。下面的部分将详细解释每个阶段。

(1)数据流入

数据流入是数据湖的入口,分为元数据流入和业务数据流入。元数据流入包括两个步骤:数据源准备和元数据抓取。这两个步骤形成一个数据目录,并生成安全设置和访问控制策略。这个解决方案提供了一个专门的组件来从外部数据源检索元数据。该组件连接到外部数据源,检测数据格式和模式,并在相应的数据目录中为数据湖创建元数据。业务数据流入是通过提取、转换和加载(ETL)完成的。

AWS将元数据抓取、ETL和数据准备抽象为一个称为AWS Glue的产品。AWS Glue和AWS Lake Formation共享相同的数据目录。AWS Glue的官方文档声明“每个AWS帐户在每个AWS区域都有一个AWS Glue数据目录。”

在对异构数据源的支持方面,AWS提供了支持Amazon S3和AWS关系数据库以及AWS NoSQL数据库的数据湖解决方案。AWS通过AWS Glue、Amazon Elastic MapReduce (EMR)、Amazon Athena等组件支持数据迁移。

(2)数据积累

Amazon S3通过数据湖提供集中存储,支持按需扩展和现收现付计费。

(3)数据计算

数据湖解决方案采用AWS Glue进行基本数据处理。AWS Glue通过批处理ETL任务实现基本计算。这些任务有三种触发方式:手动、计划和基于事件。AWS在生态系统中有效地实现了所有服务。AWS Lambda用于扩展基于事件的触发模式,因此可以同时触发一个或多个任务。这大大提高了自定义任务触发的开发能力。所有ETL任务都由CloudWatch监控。

(4)数据应用

AWS使用外部计算引擎支持除批处理外的丰富计算模式。例如,Amazon Athena和Amazon Redshift提供基于SQL的交互式批处理能力,而Amazon EMR提供基于Spark的计算能力,如流计算和机器学习。

(5)权限管理

AWS的数据湖解决方案使用AWS lake Formation在数据库、表和列级别提供完整的权限管理功能。但是AWS Glue仅在数据库和表级别访问AWS Lake Formation。这意味着AWS Glue与AWS湖紧密集成,对存储在AWS湖中的数据具有更高的访问权限。

AWS Lake Formation的权限分为数据目录访问权限和底层数据访问权限,分别控制对元数据和实际存储的数据的访问。对实际存储的数据的访问权限又分为数据访问权限和数据存储权限。数据访问权限类似于数据库授予其表的访问权限。数据存储权限指定Amazon S3中每个特定数据目录的显式或隐式访问权限。如下图所示,用户A仅被授予数据访问权限,不能在Amazon S3的指定桶中创建表。

因此,为了满足不同应用的访问需求,数据湖除了支持核心存储引擎(如Amazon S3、Alibaba Cloud OSS、OBS、HDFS等)外,还需要支持其他的存储引擎。例如,Amazon S3存储原始数据,NoSQL存储可以KV模式访问的处理数据,在线分析处理(OLAP)引擎存储用于实时创建报告或支持临时查询的数据。许多文章强调数据湖和数据仓库之间的区别,但数据湖本质上是聚合数据管理的特定实现。未来数据湖和数据仓库的集成可能性很大。

aff7e57fd76a7be8de1559fec7382341.png

简而言之,AWS的数据湖解决方案为元数据管理和权限管理提供了全面支持。它将不同的数据源连接到计算引擎,形成上下游关系。这确保了数据的移动性。AWS的数据湖解决方案也完全支持流计算和机器学习。Amazon Kinesis是一个流计算服务,提供Kinesis Data Firehose来创建一个完全管理的数据分发服务。通过Kinesis data流实时处理的数据可以很容易地通过Kinesis data Firehose写入Amazon S3。该数据可以从JSON格式转换为Parquet格式。AWS Glue中的元数据可以被Amazon Kinesis访问。这表示围绕AWS数据湖解决方案的生态系统已经成熟。在机器学习方面,Amazon SageMaker从Amazon S3读取训练数据,然后将训练好的模型写回Amazon S3。AWS的数据湖解决方案仅提供流计算和机器学习作为扩展的计算能力,而不是必需的能力,但可以轻松地将它们与解决方案集成。

3add4354d4d96c9676901fa675d56715.png

AWS的数据湖解决方案提供了参考体系结构中显示的所有功能,除了质量管理和数据治理。质量管理和数据治理与企业的组织结构和业务类型密切相关,需要大量的定制和开发工作。因此,通用方案不提供这两个功能。一些优秀的开源项目,如Apache Griffin,支持质量管理和数据治理。如果需要这两个功能,可以根据需要开发它们。

相关文章
|
存储 SQL 分布式计算
谈谈企业如何实施数据湖(下)
目前,很多大型集团企业都在热烈讨论建立数据湖的最佳方式。
谈谈企业如何实施数据湖(下)
|
存储 机器学习/深度学习 SQL
企业如何搭建敏捷数据湖架构
“数据湖”是当前很多人、很多企业都在谈论的最新流行的话题之一。可是,让我们认真想一想,数据湖是不是像许多流行的IT词一样,很少有人真正知道如何解释它,能够实现什么价值以及如何设计和构建它。
企业如何搭建敏捷数据湖架构
|
存储 人工智能 Cloud Native
|
机器学习/深度学习 运维 Cloud Native
报名倒计时 | 解锁企业数据湖仓先进开启方式,探秘机器学习高阶玩法!
数据湖作为大数据领域炙手可热的技术之一,已成为当今企业追逐的技术风向标。同时,云原生分布式数仓的先进风潮也正席卷传统的数据仓库领域,引领着未来数仓的发展方向。如果您还在思考如何将二者的优势兼顾,打造适合企业的数据湖仓一体化方案,那么本次阿里云企业数据湖仓和机器学习最佳实践研讨会将会给你答案!
172 0
报名倒计时 | 解锁企业数据湖仓先进开启方式,探秘机器学习高阶玩法!
|
存储 分布式计算 大数据
阿里云数据湖解决方案全面满足数据需求,帮助企业释放数据价值
基于阿里云对象存储OSS构建的数据湖解决方案,可以全面满足数据的存储、离线分析、交互查询等各种业务诉求,帮助企业释放数据的价值
3755 0
阿里云数据湖解决方案全面满足数据需求,帮助企业释放数据价值
|
存储 SQL 分布式计算
阿里云云原生数据湖分析DLA重磅发布-数据湖管理,助力企业一站式管理OSS数据湖存储数据
数据湖当前在国内外是比较热的方案,MarketsandMarkets市场调研显示预计数据湖市场规模在2024年会从2019年的79亿美金增长到201亿美金。一些企业已经构建了自己的云原生数据湖方案,有效解决了业务痛点;还有很多企业在构建或者计划构建自己的数据湖。阿里云数据湖分析服务DLA的数据湖管理功能定位为帮助用户构建统一、安全、高效、开放的数据湖解决方案。
阿里云云原生数据湖分析DLA重磅发布-数据湖管理,助力企业一站式管理OSS数据湖存储数据
|
存储 分布式计算 监控
企业数据上云构建数据湖的正确姿势
在刚刚落幕的2019中国数据与存储峰会上,阿里云对象存储OSS(Object Storage Service)和业界专家一起探讨了《企业数据上云构建数据湖的正确姿势》。OSS作为非结构化数据存储池和数据湖底座,为双十一期间淘宝、天猫、支付宝等应用提供了如丝般顺滑的图片、视频体验,OSS基于多年支撑双一的上云经验,从“迁、存、稳、用”四个纬度总结了上云的正确姿势。
2818 0
企业数据上云构建数据湖的正确姿势
|
存储 测试技术 大数据
带你读《企业数据湖》之三:Lambda架构:一种数据湖实现模式
本章将深入技术细节,介绍如何实现数据湖及Lambda架构。
4491 0
|
4天前
|
SQL 分布式计算 数据处理
Uber基于Apache Hudi增量 ETL 构建大规模数据湖
Uber基于Apache Hudi增量 ETL 构建大规模数据湖
71 2
|
4天前
|
存储 SQL 分布式计算
基于Apache Hudi + MinIO 构建流式数据湖
基于Apache Hudi + MinIO 构建流式数据湖
121 1
http://www.vxiaotou.com