【.com快译】一提到企业数据平台,详解新代人们往往想到的数据是各种数据目录结构、数据质量监控、湖数CI/CD、据平以及数据民主公众化(Data Democratization,详解新代即:提供数据查询的数据公共渠道)等方面。它们在满足用户的湖数多元化需求与体验的同时,不断通过合理的据平架构、以及高效的详解新代分拣手段,来持续提高其自身的数据质量和使用价值。不过,湖数我们在数据获取、据平过滤、详解新代以及分析环节,数据往往会受到因素的湖数限制: 自定义的数据获取引擎 基于上述考虑,企业在搭建与集成数据平台时,亿华云计算往往会以开源技术作为平台的核心,以流式和批处理的方式提供数据服务,并试图将数据服务层与数据持久化引擎进行解耦。当然,他们也可以一股脑地将这些任务交给诸如:BigQuery、Redshift、以及Snowflake等增值服务提供商、及其特定产品来实现。 数据平台架构的示例 说到数据平台,它往往需要全局性的数据模型定义。目前,许多企业、特别是一些技术类型的公司,都会采用域驱动设计(Domain Driven Design,DDD)的方法。该方法通常会涉及到如下方面: 在数据域处置方面,我们常用的方法是遵循自底向上的设计原则。这意味着:从生产者的数据域开始,数据产品将被视为自己的消费者进行构建。因此,数据平台需要为它们提供所有必要的工具、服务、支持、标准化流程、以及集成。 从生产者域到消费者域(数据即产品) 销售域是消费者数据域的一个极其常见的例子,当然也是非常复杂的。在那些拥有多渠道订单(如:电子商务、社交媒体、实体店等)的大公司中,渠道和部门之间有关销售的概念虽然略有不同,但是它往往是网站模板由那些来自多个域的数据所组成。 销售域 例如:由于每个团队所需要的数据、数据的验证过程、以及衡量指标有所不同,因此电商部门和财务部门的销售数据产品就可能不一样。如果您对该专题感兴趣的话,请参阅有关Data Mesh范例的文章。 众所周知,数据平台最具价值的资源便是数据。同时,数据也是最为复杂的。我们通常有两种上传数据的方式: 可见,“推式”方法虽好,但是许多公司往往有着各种遗留下来的系统,以至于团队无法及时准备好适合推送的数据。而通过提供“拉式”方法,我们则可以开发自动化的数据获取引擎服务。 总的说来,它是一个无需代码,只需各种SQL语句和映射,即可创建ETL流程和数据流程的自助服务平台。其目标是通过提供多种风格,来涵盖如下方面: 如果我们对所有类型的数据获取管道,都采取相同的方法,将会拥有一整套自动化的连接器,可方便团队推送他们的各种数据。例如:变更数据的捕获,各类事件、镜像、以及文件等。也就是说,通过为产品所有者构建可用于数据推送的通用组件,我们将能够实现自动化的获取层。 批处理的数据流 如上图所示,我们必须提供各种工具和标准化的流程(包括:数据获取与质量控制等),以允许生产者将他们的数据,通过Web门户或GitOps等自动化的方式,推送到数据平台上。 下面,我们将重点讨论如何开发一个获取引擎。 事件驱动型的微服务架构,是被应用到基于数据流的“推送策略(Push Strategy)”的最佳场景之一。此类架构通常是基于诸如Apache Kafka等持久性的消息传递系统,并遵循的是“发布-订阅(publish-subscribe)”的通信模式。 微服务架构模式 如上图所示,这种模式提供了一种可扩展的、松散耦合的架构,即: 我们可以通过提供标准化的获取连接器,来订阅此类主题,并将各种事件以近乎实时的方式,获取到我们的数据平台。当然,此类架构在信息范围方面会存在着如下缺陷: 在存储与分析原始数据,以及机器学习环境中,也就产生了数据湖的概念。它是一种基于对象存储的数据存储库,能够方便我们进行如下存储: 目前,云存储服务既能够为频繁调用的数据提供高性能与低延迟的处理能力,又能够为非频繁调用的数据提供低成本的大容量存储空间。因此,我们可以通过选用Azure Data Lake Storage Gen2,来为云对象的存储提供如下功能: 我们需要根据用户的实际需求和用例做到: Spark-SQL流经MariaDB 如上图所示,我们可以使用外部开源版本的Hive Metastore,而非具有集成限制的供应商管理服务,来自由地集成任何Spark平台环境(如:Databricks、Cloudera等)。 Spark-SQL为我们提供了一个分布式的查询引擎,以方便我们以更为优化的方式使用结构化与半结构化数据,并使用类似于数据目录的Hive Metastore。通过SQL,我们可以从如下位置查询到数据: Spark-SQL和HiveMetastore的流程 基于上述理论与知识基础,我们可以设计和构建出具有如下特征的数据湖平台: 数据湖即服务的架构 数据湖平台即服务是一种动态且可扩展的计算与服务层能力。其中,作为核心的Spark集群是数据湖平台的最小服务目录。我们既可以创建一个7x24的永久性集群,又可以创建一个临时的工作集群。例如,若想为数据产品团队提供沙盒分析服务,我们可以为每个成员都创建一个包含有相同数据,但彼此隔离的计算环境。对此,我们需要实现: 自助式的服务层 当然,上图只是一个非常简单化的视图,其中并没有定义安全性、高可用性、以及数据质量的相关服务。 如下图所示,作为一个开源层,数据湖提供了ACID功能,并确保用户能够看到一致性的数据。各种数据管道可以被用来刷新数据,但不会影响正在运行中的Spark过程。 ACID:原子性、一致性、隔离性、持久性 其他重要的功能还包括: 如下图所示,传统的数据湖、数据仓库、以及数据中心(Hub)之间有着概念性和技术性的区别。 数据湖、数据中心、数据仓库图表 Apache Hudi为传统的、基于Hadoop、Spark、Parquet、Hive等数据湖技术生态,添加了新的实用功能。其中包括:将计算和存储层进行架构上的解耦、无服务器化、SQL分析、Delta Engine、以及Databricks等新一代的数据湖平台。而根据Databricks的理论,Lake House可以被理解为新一代、更为成熟的数据湖。它包含了如下两个部分: 数据中心流程图 数据仓库流程图 目前,随着数据仓库的能力得到了大幅提升,诸如Snowflake、Bigquery、以及Oracle Autonomous Data Warehouse等技术产品,在数据分发等方面都表现出了不俗的性能。 总的说来,结合了Kafka等事件中心的新一代数据湖,是我们构建数据平台核心的优先选择。它作为一项成熟的技术,不但开源、持续进化,而且具有极具竞争力的性价比。我们可以将其部署到各种云端服务环境中,以更好地发掘数据的价值。 原文标题:Data Platform: The New Generation Data Lakes,作者:Miguel Garcia和Albert Palau 【译稿,合作站点转载请注明原文译者和出处为.com】数据模型(域驱动设计)
数据的获取模式
什么是数据获取引擎服务(Data Ingestion Engine Service)?
微服务架构之推送
数据湖(Data Lake)
Spark-SQL和HiveMetastore
数据湖即服务(Data Lake as a Service)
数据湖能够提供什么?
数据湖的进化
小结