当前位置: 首页 > 科技观察

详解新一代数据湖--数据平台

时间:2023-03-19 16:35:18 科技观察

【.com速译】提到企业数据平台,人们往往会想到各种数据目录结构、数据质量监控、CI/CD、数据民主以及公开(DataDemocratization,即:提供数据查询的公共渠道)等方面。在满足用户多样化需求和体验的同时,通过合理的结构和高效的整理方式,不断提升自身的品质和使用价值。然而,我们在数据的获取、过滤、分析中往往会受到因素的限制:团队成员的知识储备。云服务的使用效率。与现有业务和产品的集成。整体处置成本。定制化数据采集引擎基于以上考虑,企业在构建和集成数据平台时,往往以开源技术为平台核心,以流式和批式的方式提供数据服务,并尝试将数据服务层与数据持久化。解耦引擎。当然,他们也可以将这些任务委托给BigQuery、Redshift、Snowflake等增值服务商及其具体产品。数据平台架构的示例数据模型(领域驱动设计)当涉及到数据平台时,它通常需要全局数据模型定义。目前很多企业,尤其是一些技术型公司,都会采用领域驱动设计(DomainDrivenDesign,DDD)的方法。这种方法通常涉及以下几个方面:生产者(producer)和消费者(consumers)。其中,消费者域由多个生产者域的数据组成。某些数据可以具有主要字段和次要字段。数据域的组织结构不是静态的,可能会发生变化、合并、演变和删除。在数据域处理方面,我们通常的做法是遵循自下而上的设计原则。这意味着:从生产者的数据域出发,将数据产品构建为自己的消费者。因此,数据平台需要为他们提供所有必要的工具、服务、支持、标准化流程和集成。从生产者域到消费者域(数据就是产品)销售域是消费者数据域的一个极其常见的例子,当然也很复杂。在拥有多渠道订单(例如电子商务、社交媒体、实体店等)的大公司中,销售的概念在渠道和部门之间略有不同,但往往是由多个领域的数据驱动的.由...组成的。比如销售领域:由于每个团队需要的数据、数据校验流程、衡量指标不同,电商部门和财务部门的销售数据产品可能不同。如果您对该主题感兴趣,请参阅有关数据网格范例的文章。数据获取方式众所周知,数据平台最有价值的资源就是数据。同时,数据也是最复杂的。我们通常有两种上传数据的方式:Pull:基于集中管理,核心团队通过开发数据管道将数据引入平台。但是,由于一开始与其他团队的依赖性很小,所以这种方法更有效;但后期可能会成为瓶颈。推送:它对运维、架构和范式非常有用,但对其他团队则不一定。例如,分销团队在分析销售数据时,需要销售团队将他们的数据推送到数据平台。而且由于销售团队很忙,这不是他们的首要任务,因此分销团队可能要等待更长的时间。可见“推”的方式固然好,但很多公司往往存在各种遗留系统,导致团队无法及时准备好适合推送的数据。并且通过提供“拉”的方式,我们可以开发自动化的数据采集引擎服务。什么是数据摄取引擎服务(DataIngestionEngineService)?总的来说,它是一个无需代码即可创建ETL流程和数据流程的自助平台,只需要各种SQL语句和映射即可。它的目标是通过提供多种风格来涵盖以下方面:允许团队自己将数据推送到交换区。提供一个中心化的核心团队,为非技术团队上传数据。通过提供自助服务平台,简化技术团队的数据采集流程。如果我们对所有类型的数据摄取管道采用相同的方法,我们将拥有一整套自动化连接器,供团队推送他们的各种数据。例如:捕获变更数据、各种事件、图像和文件。也就是说,通过为产品所有者构建可用于数据推送的通用组件,我们将能够自动化采集层。批处理的数据流如上图所示。我们必须提供各种工具和标准化流程(包括:数据采集和质量控制等),让生产者通过门户网站或GitOps自动化他们的数据。推送到数据平台。下面,我们将重点介绍如何开发采集引擎。微服务架构的推送事件驱动微服务架构是应用于基于数据流的“推送策略”的最佳场景之一。此类架构通常基于ApacheKafka等持久消息系统,并遵循“发布-订阅”通信模型。微服务架构模式如上图所示。这种模式提供了一种可扩展的松散耦合架构,即:发布者向主题发送消息。所有注册过该主题的订阅者都会收到这条消息,也就是说该事件产生一次,消费多次。由于发布者和订阅者之间没有依赖关系,因此它们可以相互独立运行。我们可以通过提供标准化的采集连接器来订阅此类主题,并以近乎实时的方式将各种事件采集到我们的数据平台。当然,这种类型的架构在信息范围方面存在以下缺点:由于持久性主题通常具有基于时间或大小的约束,因此在发生错误时重新处理它们很复杂。没有重新发送历史数据的过程。不提供各种海量场景的异步数据质量API。数据湖(DataLake)在原始数据的存储和分析,以及机器学习环境中,也出现了数据湖的概念。它是一个基于对象的数据存储库,有助于我们存储:来自关系数据库的结构化数据。来自NoSQL或其他来源的半结构化数据,例如:CSV、XML、JSON等。非结构化数据和二进制数据(例如:文档、视频、图像等)。目前,云存储服务不仅可以为频繁调用的数据提供高性能、低延迟的处理能力,还可以为不频繁调用的数据提供低成本的大容量存储空间。因此,通过选择AzureDataLakeStorageGen2,我们可以为云对象存储提供以下功能:Volume:可以管理海量数据,PB级信息,千兆吞吐量。性能:针对要分析的各种用例进行了优化。安全性:允许对目录或单个文件设置POSIX(便携式操作系统接口,便携式操作系统接口)权限。即:使用服务主体和OAuth2.0将AzureDataLakeStorageGen2的文件系统挂载到DBFS(数据库文件系统)。事件:作为一项服务,可以为执行的每个操作(例如创建和删除文件)自动生成一个事件。通过这些事件,我们可以设计事件驱动的数据流。根据用户的实际需求和用例,我们需要:提供对数据的只读访问,使数据湖成为所有用户的数据源和单一数据存储库。结构化和半结构化数据可以通过DeltaLake等存储库以柱状格式存储。允许数据根据业务领域进行分区和存储,并分布在多个对象存储中。提供Hive的metastore服务,通过各种外部表提供spark-SQL访问。这将允许用户从数据的物理位置中抽象出来,并拥有一个单独的数据镜像。Spark-SQL流经MariaDB如上图所示,我们可以通过使用外部开源版本的HiveMetastore而不是供应商管理的服务来自由集成任何Spark平台环境(例如:Databricks、Cloudera等)整合限制。Spark-SQL和HiveMetastoreSpark-SQL为我们提供了一个分布式查询引擎,方便我们更优化地使用结构化和半结构化数据,使用类似于数据目录的HiveMetastore。通过SQL,我们可以从以下位置查询数据:DataFrame和DatasetAPI。DatabricksNotebooks等外部工具是一种用户友好的工具。它可以帮助非技术用户使用数据。Spark-SQL和HiveMetastore的进程数据湖即服务(DataLakeasaService)基于以上理论和知识基础,我们可以设计和构建一个具有以下特点的数据湖平台:其数据采集引擎负责采集数据,在HiveMetastore中创建和管理元数据。它的核心由两个主要组件组成,对象存储层和HiveMetastore,它们提供计算层作为服务。计算层由集成到数据湖中的多个Sparks集群组成。他们通过各种Spark作业、SQLAnalytics或DatabrickNotebook访问数据。DataLakeasaService架构DataLakePlatformasaService是一种动态的、可扩展的计算和服务层能力。其中,以Spark集群为核心,是数据湖平台最小的服务目录。我们可以同时创建7x24永久集群和临时工作集群。比如我们要为数据产品团队提供沙盒分析服务,我们可以为每个成员创建一个包含相同数据但相互隔离的计算环境。为此,我们需要实现:根据Spark技术,定义组成沙盒分析的组件。通过Web服务目录或代码方式(如git-ops)提供自助服务功能。自助服务层当然,上图是一个非常简化的视图,没有定义安全、高可用、数据质量相关的服务。数据湖能提供什么?如下图所示,数据湖作为一个开源层,提供了ACID功能,保证用户看到的数据是一致的。可以使用各种数据管道来刷新数据,而不影响正在运行的Spark进程。ACID:原子性、一致性、隔离性、持久性其他重要特性包括:Schemaon-write:它在写入数据时强制执行模式检查,如果检测到模式不匹配则返回作业失败。SchemaEvolution:它支持兼容性场景的模式演变,例如添加新列。时间旅行:数据版本控制允许我们将数据作为代码进行管理。在代码存储库中,用户可以让数据集的每次更改在其整个生命周期内生成新版本的数据。Merge:支持合并、更新、删除操作,实现复杂的数据采集场景。数据湖的演变如下图所示。传统的数据湖、数据仓库和数据中心(Hub)在概念和技术上存在差异。数据湖、数据中心、数据仓库图ApacheHudi为传统的基于Hadoop、Spark、Parquet、Hive的数据湖技术生态增加了新的实用功能。其中包括:计算层和存储层的架构解耦、Serverless、SQL分析、DeltaEngine,以及Databricks等新一代数据湖平台。按照Databricks的理论,LakeHouse可以理解为新一代更成熟的数据湖。由以下两部分组成:DataCenterDataCenterFlowchartDataWarehouse数据仓库FlowchartforSpecificorSimplifiedScenarios目前,随着数据仓库的能力有了很大的提升,如Snowflake、Bigquery、OracleAutonomousDataWarehouse等技术产品在数据分发等方面表现良好。总结总的来说,结合Kafka和其他事件中心的新一代数据湖是我们构建数据平台核心的重点。作为一项成熟的技术,它不仅开源、不断演进,而且具有极具竞争力的性价比。我们可以将其部署到各种云服务环境中,更好地挖掘数据的价值。原标题:数据平台:新一代数据湖,作者:MiguelGarcia和AlbertPalau