数据湖是传统数据仓库概念在源类型、处理类型和用于业务分析解决方案的结构方面的高级版本。数据湖主要通过云实现,采用多种数据存储和数据处理工具进行架构,基于管理服务的服务用于处理和维护数据湖的数据基础设施。
Pentaho首席技术官詹姆斯·迪克森有一个关于数据湖的著名类比,他创造了“数据湖”这个词。数据湖类似于湖泊,水从不同的来源进入,并保持在原始的形式,而包装瓶装水类似于数据集市,经过多次过滤和净化过程,类似于数据集市的数据处理。
数据湖是一个存储库,它以原始格式存储大量的原始数据。从Azure到AWS,拥有一个合适的数据湖架构的力量在于对每一家企业的市场速度、创新和规模。对于不再想要与结构竖井斗争的大型企业,这些架构可以帮助您建立组织共识并实现数据所有权。
数据湖就像一个大容器,与真实的湖泊和河流非常相似。就像湖泊中有多条支流一样,数据湖中有结构化数据、非结构化数据、机器对机器、日志实时流动。数据湖使数据大众化,是存储组织的所有数据以供后期处理的一种经济有效的方式。研究分析师可以专注于在数据中寻找意义模式,而不是数据本身。
参考架构一
数据湖可以包含来自关系数据库的结构化数据(行、列或面向对象节点)、半结构化数据(如XML、JSON、CSV和日志)、任何非结构化数据(如pdf、文档和电子邮件)和二进制数据。
它们都被广泛用于大数据的存储,但它们是不可互换的。湖泊通常是原始原始格式的数据池,其用途尚未定义。数据仓库更像是结构化和过滤数据的存储库,这些数据已针对特定目的进行了处理。
Azure(来自微软)和AWS(来自亚马逊)是两种著名的解决方案,它们包含了使开发人员、数据科学家和分析人员能够轻松存储任何大小、形状和速度的数据,以及跨平台和语言进行所有类型的处理和分析所需的所有功能。
参考架构二
数据湖不仅提供了大数据平台的基本功能,还提供了数据管理、数据治理、数据资产管理等功能。为了实现这些功能,数据湖提供了一系列数据管理组件,包括数据访问、数据迁移、数据治理、质量管理、资产目录、访问控制、任务管理、任务编排和元数据管理。上图显示了一个数据湖系统的参考架构。与大数据平台类似,典型的数据湖提供超大规模数据处理所需的存储和计算能力,以及多模态数据处理能力。此外,数据湖还提供了以下更复杂的数据管理功能: 改进的数据访问功能、改进的数据管理能力、共享元数据。
参考架构三
作为数据源的物理湖:该架构中最明显的交互是将数据湖作为虚拟层的核心数据源连接起来。湖中的所有表都可以通过虚拟层访问。涉及数据湖中的数据的查询将完全下推到湖泊引擎,因此在这种情况下,查询执行完全发生在湖泊集群中,性能等同于物理架构
其他来源:其他不在湖中的数据资产也连接到虚拟层,使其数据通过单层提供给最终用户。虚拟层允许联邦查询,根据需要将本地数据与外部数据源结合起来
作为存储和缓存的物理湖:虽然Denodo本身没有任何存储,但它可以在缓存系统中持久化数据。由于相同的物理湖可以配置为缓存系统,这意味着任何缓存的视图都会自动成为湖的一部分。以类似的方式,Denodo也可以在湖中创建临时表和物化视图。从这个角度来看,Denodo可以作为一种有效地将任何数据输入湖中的方法,并将湖中处理的结果保存下来以供未来使用。Denodo根据源结构和数据类型自动创建表,并使用Snappy压缩的Parquet将内容上传到HDFS、Amazon S3或Azure Blob Storage。
作为执行引擎的物理湖:在这种情况下,Denodo的基于成本的优化器(CBO)可以决定使用湖的执行引擎,甚至对涉及到不在湖中的数据的查询。这个决定是由Denodo的优化器根据查询和数据量的分析自动做出的。也可以通过提示手动启用它。当它被使用时,Denodo会临时将特定的数据按需移动到湖边,在那里执行处理管道的某些阶段,可以利用其MPP架构。这种技术可以使联邦查询的执行速度惊人地快。
虚拟层作为安全层:当湖中的数据暴露给不同类型的用户,而不仅仅是数据科学家时,保护访问成为虚拟层的重要组成部分,充当单一的入口点。数据虚拟化工具提供了一个丰富的安全层,类似于传统数据库,允许对不同的表、视图、行和列进行基于角色的访问控制。
参考架构四
采集层:左边的层描述了数据源。数据可以批量或实时载入数据湖
洞察力层:右边的层次代表了使用系统洞察力的研究方面。SQL、NoSQL查询甚至excel都可以用于数据分析。
HDFS是结构化和非结构化数据的经济有效的解决方案。它是系统中所有静止数据的着陆区域。
分离层从存储层获取数据,并将其转换为结构化数据,以便于分析。
操作层运行分析算法和用户查询,实时、交互式、批处理生成结构化数据,以便于分析。
统一的管理层系统的管理和监控。包括审计和能力管理、数据管理、工作流管理。
参考架构五
一个成功的企业数据湖的未来特征包括:
用于摄取内容的常见的、易于理解的方法和API。使外部系统更容易将内容推送到EDL中,通过框架轻松配置和测试连接器将内容拉入EDL。
企业管理模式。用于通过业务系统标识和跟踪元数据字段的方法。因此,我们 可以跟踪到“EID”等于“EMPLOYEE_ID”等于“CSV_EMP_ID”,并且可以跨多个业务系统可靠地关联。
用于内容处理的业务用户界面,格式转换、解析、充实和反规范化(所有需要应用于数据集的通用流程)。
文本挖掘,非结构化文本,如电子邮件、报告、问题描述、研究笔记等,通常很难用于分析。通用文本挖掘技术将可以丰富和规范化这些元素。
与文档管理的集成,“挖掘数据湖”的目的是产生商业洞察力,从而导致商业行为。预计这些见解和行动将被写下来,并通过报告进行沟通。因此,系统搜索这些报告作为一个前兆分析——换句话说,一个系统的方法检查先前的研究,最终将被纳入研究周期。
参考架构六
提取层(使用Azure数据工厂的ETL, CDC),摄入层(Azure数据砖块,HDInsights),存储层(Azure Blob存储、Azure数据湖第2代),控制框架(用Azure数据工厂编制,SQL db)
数据目录(Azure Catalog),消费层(Power BI、Azure ML、Azure数据砖块等分析工具)。上面的架构描述了一个组织如何在微软Azure云上构建企业数据湖。
参考架构七
原始数据层——也称为摄入层/着陆区,因为它实际上是数据湖的汇聚。主要目标是尽可能快速和有效地摄取数据到Raw。为此,数据应该保持其原生格式。在这个阶段我们不允许任何转换。
清理数据层-也称为策划层/一致性层。数据被转换为可消费的数据集,并可能存储在文件或表中。在这个阶段,数据的用途和结构是已知的。
应用程序数据层——也称为可信层/安全层/生产层,来源于清理和强制任何需要的业务逻辑。
沙盒数据层——另一层可能被认为是可选的,用于高级分析师和数据科学家的工作。在这里,他们可以进行他们的实验,寻找模式或相关性。
参考架构八
大数据项目的传统方法始于技术,并假定一定程度的集中和整合。这些方法的问题是,它们没有认识到跨组织和更广泛的合作伙伴、供应商和客户生态系统的用户、设备和API的特殊数据需求的多样性。集中式数据设计假设了一个最小的共同点,即本质上以一种不灵活和有限的方式硬编码业务。
数据拓扑是一种以用户为中心的设计方法,它简化了数据的组织、流程和管理,以支持业务目标和结果。数据拓扑包含团队和组织中的业务现实和专门的数据需求。在应用以用户为中心的数据设计和数据流技术时,数据拓扑提供了业务目标与支持和交付这些目标的技术和基础设施之间的桥梁。
参考架构九
数据湖是一个安全、健壮、集中的存储平台,可以让您摄取、存储和处理结构化和非结构化数据。原始数据资产保持完整,同时对数据执行数据探索、分析、机器学习、报告和可视化,并根据需要进行调整。这意味着原始数据可以在以后重用和重新使用,而不会带来太多麻烦。
尽管许多支持者或供应商可能做出大胆的承诺,但Data Lake架构永远不会消除对传统数据库的需求,也不会取代它们。这根本不是预想或设计来做的。大多数日常业务操作将继续依赖于传统的数据库系统。重复和严格定义的任务——如销售、发票、库存、银行事务——在传统数据库中得到了完美的实现。数据湖与传统数据库相结合,从组织现有的数据中产生更多的价值,从现有数据中获得新的见解和发现新的信息。
参考架构十
数据摄入和存储
开放数据湖从应用程序、数据库、实时流和数据仓库等来源中摄取数据。它以原始形式或独立于平台的开放数据格式存储数据。
数据处理与连续数据工程
开放数据湖支持使用开放标准并发、高吞吐量的写和读。将数据转换为创建用例驱动的可信数据集。
查阅及使用资料
开放数据湖支持不同的用例,如特色分析、数据发现、商业智能报告、机器学习。支持不同类型的数据访问和工具。数据访问可以通过SQL或编程语言,如Python, Scala, R等。
数据访问
很难在湖中找到数据。如果没有数据目录,用户可能会把大部分时间花在试图发现和配置数据集的完整性上,然后才会相信这些数据集的用例。数据目录对数据集进行抓取和分类,记录数据集,并支持搜索界面来帮助发现。
数据消费
对于商业智能报告,SQL是通用语言,运行在数据仓库和数据湖中的聚合数据集上。临时分析同时使用SQL和非SQL,通常运行在湖泊中的原始和聚合数据集上,因为仓库可能不包含所有数据,或者由于非SQL访问受限。使用ODBC、JDBC驱动程序和连接器的高性能连接套件支持第三方SQL客户端、BI工具。机器学习用户需要通过单节点本地Python内核进行各种工具和编程访问;Scala和R具有用于数值计算和模型训练的标准库,如TensorFlow, Scikit-Learn, MXNet;能够序列化和部署,监控容器模型。
治理——成本控制、安全性、遵从性
当多个团队开始访问数据时,就需要对成本控制、安全性和遵从性目的进行监督。
大数据项目的成本可能会失控。云计算中缺乏本地成本控制和生命周期策略加剧了这种情况。细粒度的成本归属和报告在用户、集群、作业和帐户级别是必要的,以成本有效地扩展用户和数据湖上的使用。
湖中的数据应该在静止和传输中进行加密。云提供商使用由云提供商管理的密钥或由客户完全创建和管理的密钥来提供服务。数据湖的外围安全包括网络安全和访问控制。云提供商支持将企业身份基础设施映射到云提供商的资源和服务的权限基础设施的方法。通常支持LDAP和/或Active Directory进行身份验证。
扩大后的数据隐私法规,如GDPR和CCPA,围绕“删除权”和“被遗忘权”创造了新的要求。开放数据湖不仅支持在不中断数据消费的情况下删除特定数据子集的能力,而且还提供了易于使用的非专有方法来实现这一点。
基础设施和操作
开放数据湖提供了一个在云上实现自动化的平台运行时,比如对实例类型的编程访问、低成本计算(AWS上的Spot、Azure上的低优先级VM、GCP上的可抢占VM)。这解放了组织,使其能够专注于构建数据应用程序。
参考架构十一
数据湖架构由三个组件或层组成:数据源、数据处理层和目标层。
数据源是向数据湖提供业务数据的提供者,ETL或ELT介质用于从各种来源检索数据,以便进行进一步的数据处理。
数据湖的数据处理层包括数据存储、元数据存储和复制,支持数据的高可用性。将索引应用于数据,以优化处理。最佳实践包括为数据处理层提供基于云的集群。数据处理层被有效地设计为支持数据的安全性、可伸缩性和弹性。此外,通过管理维护适当的业务规则和配置。处理层数据湖将处理后的数据提供给目标系统或应用。系统通过API层或连接器使用来自数据湖的数据。