作者 | 弘锐

数据湖泊(Data Lake)是一种基于云计算的数据存储和处理架构,与传统的数据仓库相比,它具有更高的灵活性和可扩展性。在Data Lake中,数据以原始格式存储,便于进行各种分析和处理。它适用于各种应用场景,如机器学习和数据挖掘,同时也适用于需要处理大量实时数据的场景。

数据湖的起源可以追溯到2010年10月,由Pentaho的创始人兼首席技术官James Dixon首次提出。在当时的历史背景下,他提出数据湖的主要目的是为了推广自家产品Pentaho。当时核心要解决的问题是传统数据仓库报表分析面临的两个问题:

数据只使用了部分属性,只能用于预先确定的问题的回答,这导致丢失了最低级别的细节,因此限制了能够回答的问题的范围。

技术的提出始终以解决特定业务场景的问题为目的,因此,其本质是为了满足某种特定的需求。

正如我们所探讨的数据湖,已经超越了James Dixon最初的定义,不同厂商对数据湖也有了更多的不同界定。

数据湖是一种系统或存储设备,用于以自然或原始格式存储数据,通常采用对象块或文件形式。在企业中,数据湖通常作为全量数据的单一存储位置,包括原始系统产生的原始数据拷贝以及为各类任务(如报表生成、可视化、高级分析和机器学习)产生的转换数据。

数据湖中包含了各种类型的数据,其中包括来自关系型数据库的结构化数据(具有行和列)、半结构化数据(如CSV文件、日志、XML和JSON文件)、非结构化数据(如电子邮件、文档、PDF文件等)以及二进制数据(如图像、音频和视频)。企业可以选择在其本地数据中心创建数据湖,也可以选择在云端构建。

数据湖是一个中央存储库,可以保存任意规模的结构化和非结构化数据。您可以原样存储数据,无需将其转换为特定结构。此外,数据湖支持多种类型的数据分析,包括控制面板、可视化、大数据处理、实时分析和机器学习,以帮助您制定更好的决策。

Azure的数据湖是一个集成了各种功能的平台,使得开发人员、数据科学家和分析师可以更简单地处理、存储和利用数据。这些功能使得用户可以轻松地存储各种规模、类型和生成速度的数据,并且可以跨平台和跨语言进行各种类型的分析和处理。数据湖不仅可以加速应用数据的处理,还可以消除数据采集和存储的复杂性,并且支持批处理、流式计算和交互式分析等多种处理方式。

阿里云

数据湖是一个集成的存储环境,可以接受多种数据输入方式。您可以存储任意规模的各种类型的数据,包括结构化、半结构化和非结构化数据。通过与多种计算分析平台无缝对接,数据湖可以利用不同的计算引擎对存储的数据进行处理和分析。这种方式可以帮助打破数据孤岛,并挖掘潜在的业务价值。

根据不同的厂商,对于数据湖的概念和理解存在一定的差异。然而,从上述内容可以看出,大家也存在一些共同点:

统一的底层数据存储,用于存储原始数据,支持任意结构的数据存储,包括结构化、半结构化和非结构化数据,支持多种计算和分析能力,适用于多种应用场景,并且支持任意规模的数据存储与计算能力。其最终目标是更好地、更快地发现数据价值。

Data Lake 是一种解决业务场景中出现的问题的解决方案,其核心理念在于通过对数据的集成、转换和查询来快速响应业务需求。尽管不同的技术实现可能会存在差异,但 Data Lake 可以确保业务数据在不同系统之间得以有效传递和共享。

数据湖是一套为解决企业业务需求而设计的解决方案,其核心目的是发现数据价值并提供数据支持。因此,它应该具备以下能力:

  • 存储和管理海量数据的能力:数据湖可以容纳大量的结构化和非结构化数据,包括来自各种渠道和来源的数据。

  • 支持多种数据分析方法和工具:数据湖应该能够支持各种数据分析工具和方法,包括批处理、实时处理、数据挖掘、机器学习等。

  • 提供灵活的数据访问和可视化:数据湖应该提供灵活的数据访问和可视化工具,以便不同角色的人员能够快速、方便地获取并理解数据。

  • 支持安全性和合规性:数据湖应该能够支持各种安全性和合规性要求,包括数据隐私、访问控制、身份验证等。

  • 自动化的数据管理和治理:数据湖应该提供自动化的数据管理和治理功能,以便快速、准确地管理和维护数据湖中的数据。

统一存储系统

我们需要将这些数据集中存储在一个存储系统中

支持海量数据

对于处理海量数据并需要保证高性能的存储系统,必须具备可扩展的特性,例如HDFS、AWS S3和阿里云OSS等。这些系统可以满足海量数据的存储需求。

任意类型数据

能够处理各种类型的数据,包括结构化、半结构化、非结构化的数据。

原始数据不变

在整个数据湖中,应保存原始数据的初始记录,以确保数据的完整性和原始性。

支持多种分析任务

湖上数据支持多种分析引擎,涵盖离线分析、实时分析、交互式分析以及机器学习等数据分析场景。

计算可扩展性

湖上数据所使用的计算引擎需具备可扩展的能力,以应对数据量不断增长和业务发展的需求,实现弹性数据分析。

云上存储与计算分离

在云环境下,湖上数据采用存算分离的数据湖架构,让存储和计算各自发挥优势,实现灵活的资源伸缩,有效降低成本。但在传统的HDFS架构下,这并不是一个必需的能力,因为硬件成本相对固定。

上述的数据存储和数据分析能力只是数据湖解决方案的基础要求,如果要将数据湖应用到实际业务中,还需要结合一系列的数据湖管理能力,帮助用户管理和识别数据湖中的数据,避免数据沼泽的形成。

将来自不同数据源的数据集成到数据湖中,是构建高效数据驱动决策系统的第一步。这种能力有助于统一管理和利用各种类型的数据,从而提升数据分析的效率和精确度。

元数据管理在数据湖的运维中起着关键作用。通过提供统一的元数据能力,可以快速发现和定位数据湖中的元数据,方便进行数据管理和优化。这有助于避免数据湖变成无法有效利用的数据沼泽,提高数据的可用性和价值。

保护数据安全是数据湖建设的核心任务之一。通过对数据进行细粒度的权限管控,可以为企业的数据湖加上一道牢固的安全防护。更强大的数据安全能力还应支持敏感数据脱敏、数据加密、标签权限以及操作审计等功能。这些功能可以进一步保障数据的机密性和完整性,降低潜在的数据泄露风险。

数据探索可以提供在线的数据探索能力,满足日常对湖内数据进行快速探索和简单查看的需求,有助于更好地管理湖内的数据。

处理数据分散、存储混乱和数据孤岛问题,以确保联合数据分析和发现更多价值。为了避免文本重复,需要进行多个版本的改写。

数据湖要解决类似于数据仓库的问题,但存在一定的差异。事实上,数据湖的定义包括对半结构化和非结构化数据的管理。相比之下,传统数据仓库只能解决结构化数据的统一管理问题。

在这个高度互联的世界中,数据的来源已经不再局限于单一的渠道。随着各种应用场景的不断扩展,所产生的数据格式也日趋丰富和多样化,已经不能再仅仅局限于传统的结构化数据。因此,如何有效地存储和处理这些多种多样的数据,就成为了一个亟待解决的问题。

由于数据库或数据仓库的存储受到实现原理和硬件条件的限制,存储海量数据时成本较高。为了解决这个问题,出现了HDFS/对象存储这类技术方案。在数据湖场景下,使用这类低成本的存储技术架构,可以为企业大大节省成本。结合生命周期管理的能力,可以更好地为湖内数据分层,避免在保留数据和删除数据之间做出权衡,从而达到节省成本的目的。

随着数据种类的不断增加,分析需求也变得越来越多样化,传统的SQL方法已经无法满足这些复杂的需求。为了更贴近自身业务逻辑并挖掘更多数据价值,我们需要利用各种编程语言来定制化分析代码。同时,借助机器学习技术,我们可以进一步挖掘数据的深度和广度,发现更多隐藏在数据中的价值。

当数据规模增长到PB级别,传统数据库等技术的扩展性受到限制,或者扩展成本极高,而数据湖架构下的扩展技术能力则可以实现零成本,并且能够控制硬件成本。这种对比展示了数据湖架构在处理海量数据时的优势,为行业提供了更具性价比的解决方案。

在传统数据库和数据仓库中,通常需要在写入数据前预先定义Schema信息,这被称为Schema-on-Write模式。而在数据湖中,采取的是Schema-on-Read模式,即先保存数据,然后在后续分析过程中发现Schema。这样做可以有效避免文本重复,同时可以根据数据集的特点进行灵活的Schema发现和重构。

Lakehouse是一种新兴的数据技术架构,它在数据湖的基础上融合了数据仓库和数据库的特点。其最核心的特性是支持ACID,这使得Lakehouse方案简化了整个数据链路,并提高了数据链路的实时性。Lakehouse架构从原来的Lambda架构升级到了Kappa架构。

Lakehouse是一种综合了数据湖、数据仓库和数据库特点的新型数据技术架构。它的核心特性是支持ACID,这一特性不仅简化了整个数据链路,还提高了数据的实时性。Lakehouse从Lambda架构进化到Kappa架构,以避免数据改写过程中的重复问题。

根据Gartner报告,无论是开源社区还是云服务提供商,都已经为Delta Lake提供了成熟的解决方案。然而,Lakehouse的相关技术目前仍处于初步应用阶段。但从去年开始,越来越多的公司已经开始将其应用于各自的业务系统,并为业务带来了更多价值。

在我们的应用场景案例中,您将发现开源湖格式Delta Lake/Hudi/Iceberg的多种实际应用。这些湖格式为开发者带来了更多的可能性和机会,因此吸引了更多人进行尝试。如果您想深入了解这些技术,请继续阅读我们后续的系列文章,我们将为您详细讲解。

阿里云OSS为数据湖提供稳定的基础存储,其特点包括高可靠性、可扩展性、易于维护、高度安全、低成本和高性能。该产品还具备版本控制和生命周期管理功能。

阿里云的大数据分析引擎兼容OSS对象存储。如果您偏好开源系统,可以使用E-MapReduce服务,它为您提供Spark、Hive、Trino和Flink等开源计算工具。若您更倾向于全托管的解决方案,可以选择MaxCompute、Databricks、Hologres或Flink等计算产品。

JindoData是阿里云的大数据团队自行研发的,专为大数据和AI生态系统设计的,针对主要数据湖存储系统的全方位访问加速解决方案。该套件基于统一的架构和内核,主要包括JindoFS存储系统(原JindoFS Block模式)、JindoFSx存储加速系统(原JindoFS Cache模式)、JindoSDK大数据万能SDK以及全面的生态工具(JindoFuse、JindoDistCp)和插件支持。

阿里云数据湖构建(DLF)是一项全方位托管服务,致力于帮助用户在云上快速构建数据湖。该产品提供云原生数据湖所需的元数据管理、权限与安全管理和数据入湖能力,以及一键式数据探索功能。用户可以通过该服务轻松搭建和管理云原生数据湖方案,并且能够无缝对接多种计算引擎,消除数据孤岛现象,充分挖掘业务价值。

通过结合访问控制与云监控两款产品,可以为数据湖提供用户管理、权限控制、监控审计等功能。利用Dataworks的数据集成能力、DLF的数据入湖功能以及Flink产品的CDC,可以实现数据的全链路入湖,并支持多种数据源的数据入湖。离线作业的数据开发和任务调度可以使用Dataworks产品实现,也可以使用airflow+zeppelin/jupyter等开源方案实现。

Flink可以用于实时作业的数据采集、任务调度管理。而Dataworks则提供数据质量、数据治理等功能。

传统的IDC机房面临着诸多问题,例如:日常运维成本较高,业务发展迅速,流量和计算压力不断增加,资源不足且补货周期长,数据分散且标准混乱,数据定义模糊且没有有效分层,导致分析使用困难。

在将解决方案存量数据从 Jindofs 迁移到阿里云的 OSS 的过程中,我们使用 EMR 创建了一个具有弹性的数据平台,以适应计算需求。此外,我们还利用 DLF 构建了数据湖的基础服务,并通过集成 Druid、Hologres 和 Impala 为上层数据应用提供了强大的支持。

采取EMR弹性伸缩方案后,业务价值大幅提升,运维成本显著降低30%,计算成本也缩减了10%-20%。此外,借助Jindofs+OSS归档存储技术,存储成本同样节省了10%-20%。构建统一的数据标准并实施分层处理后,业务方的使用效率获得了极大提升。为了避免文本的重复,进行了多版本的改写。

业务痛点:线下Hadoop环境管理复杂,涉及众多组件,导致平台运维难度大、成本高。此外,数据开发和运维过程繁琐,任务稳定性不足。更重要的是,缺乏健全的安全体系来保障数据安全。

解决方案与业务价值: 统一存储方案采用对象存储OSS,能处理任意规模的数据,可与各种业务应用以及计算分析平台对接。数据湖构建与管理依靠数据湖构建DLF解决数据入湖、统一元数据管理、统一权限控制等核心问题。数据湖采用Deltalake格式,支持数据的增量更新和消费,避免了Lamda架构的双链路需求,实现了离线和实时的数据计算。数据分析计算引擎采用DDI数据洞察和EMR-Presto交互式分析,在保证软件产品功能和性能领先的基础上,提供全托管免运维的服务,同时有极高的SLA保证。数据开发与调度则使用EMR Studio,这是E-MapReduce针对开源大数据开发场景的集群类型,提供交互式开发、作业提交、作业调试和工作流一站式数据开发体验。

业务难点在于存储和计算之间的不分离,这使得组件升级变得非常困难,许多新的组件特性无法使用。存储在本地磁盘上增加了运维的复杂性,并且有坏盘的风险。存储成本高,无法实现冷热分层存储。元数据管理仅在单个集群上进行,这使得集群的稳定性对元数据服务的稳定性有很大影响。流和批处理未分离,相互干扰,导致作业稳定性下降。

解决方案采用存算分离的技术,简化了价格结构,并允许随时升级到最新版本。该方案使用Flink和Hudi,充分利用了它们的最新特性。在OSS上存储的数据被精心分层,以实现高效的冷热数据管理,从而降低成本。DLF被用于元数据管理,同时也负责数据权限的管控。利用Jindo Block模式,Hbase能够同时实现对Flink和Hudi等新特性的快速支持,将Flink和Hbase等业务有效分离,显著提升了业务稳定性。此外,借助Hudi的 数据湖格式,实现了数据的快速插入,并支持了元数据的快速变更,满足了业务的准实时分析需求。

公司的首个数据湖是基于Hadoop和OSS构建的,同时引入了数据中台的Maxcompute作为执行和存储工具。这两套异构的系统导致了存储冗余、元数据不一致、权限不统一以及湖仓计算无法自由流动的问题。

解决方案采用了图架构,分别使用了MaxCompute和EMR两种不同的引擎,以适应不同的业务场景。为了实现元数据管理和统一用户权限管理,我们使用了阿里云数据湖构建了DLF。此外,我们还通过DataWorks进行了全链路数据治理,以提高数据质量和应用能力。

通过将EMR元数据整合到DLF,并使用OSS作为统一存储的底层,我们可以实现湖仓数据的分层存储。借助湖仓一体技术,我们可以连接EMR数据湖和MaxCompute数仓,让数据和计算在湖和仓之间自由流动。在数据中台上,我们使用MaxCompute存储维度建模的中间表,以避免数据冗余。

举报/反馈

21CN科技

4319获赞 612粉丝
24小时滚动报道IT资讯。
关注
0
0
收藏
分享