开发者学堂课程【云原生一体化数仓新能力解读课程:湖仓一体新能力解读】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1193/detail/18113
湖仓一体新能力解读
主要内容:
一、基于 Max Compute 的湖仓一体架构更新
二、典型使用场景介绍
三、能力展示 Demo
湖仓一体已经发布一段时间,在此期间对整体架构不断调整升级,有些能力会在近期发布,此课程作为一个预告并对新能力进行解读。本次课程将从以下三个方面进行介绍。
一、基于 Max Compute 的湖仓一体架构更新
此为整个的架构图,整体看来还是比较复杂的,对每一个部分进行简单讲解介绍。首先架构图的中间部分,Max Compute 为阿里巴巴的一个云数仓产品,以 Max Compute 云数仓作为中心,Max Compute 本身有一个架构数据,若之前对 Max Compute 有了解的话,其与传统的数据库略有差别。因为其属于两层结构,即用户在初始时需要创建 project ,然后在 project 里创建部分表格与分区对象。一般传统数据库,在数据库与表格之间有一层 schema ,当数据库至 Max Compute 进行数据迁移时,对 schema 层是有要求的,故本次 Max Compute 将此部分补充完整。
整个过程是 table 至 schema 再到 project ,总共为三层结构。对于湖仓一体的架构来说,仓即 Max Compute,使用外部的 schema 对接整个外部的数据N,将外部的数据N、内部的数据源称为 Foreign Server ,其中包括 Foreign Data Wrapper 涵盖每一个数据源的部分连接信息,目前支持的数据源有最早支持对接的Hive ,然后从 HDFS 进行抽取。之前对接阿里云本身的数据库构建组件 DLF,其主要作用是通过扫描 OSS 的文件,对其文件数据进行统一权限管理,然后通过Foreign Server对接 DLF 里面的数据,从而处理 OSS 的文件结构。以此则可以对接云上对象存储的数据库以及开源的 HDFS 数据库。
除此之外,同时支持阿里云开源内部的数仓以及数据库 Hologres 以及通用的关系型数据库 MySQL、PostgreSQL,对于外部数据库则是通过 GDPCH 连接的,对于内部的 Hologres 能够实现存储上的智能部分,故性能比前者较优化。此为利用外部的 schema 对接整个外部联邦的数据源,对于 OSS 上的非结构化数据,可以通过Mount OSS 路径升级至 Max Compute 的某个对象进行管理,即可以通过 Max Compute 的系统可以对 Mount OSS 对象进行授权管理以及使用 Max Compute 利用 AI 引擎对 OSS 文件数据结构进行处理。此部分是关于已有的内部对象 table,同时支持在此基础上创建内部的 schema 。内部的 schema 存储在数仓内部的 Storage ,称为坛文件系统。对于部分用户在传统的数据平台 Hadoop ,希望能够运用云上拓展的算例(但不是全部),此时可以在 Hadoop 里面通过 SDK 调用云上计算能力,同时将数据从云上导入至云下,作为云下 Hadoop 集群算例的拓展,此为集群拓展的架构之一。
以上内容整体的湖仓一体架构更新,总结为已有的对接内部存储,Hologres 阿里云内部的数仓与 Max Compute 都是使用盘古文件系统,并使用传统方式对接,同时在 project 与 table partition 之间加入一层 schema 以对接整个数据生态。对于数据图的存储,支持HDFS通过 Hive 映射至外部的 schema;对于 OSS 上通过 DLF 映射至 Foreign Data Wrapper 以及 Foreign Server,实现对整个 Extemal schema 的映射,同时也包括阿里云内部的 Hologres 以及外部的部分数据库生态,同时整个 Max Compute 算例能够被云下的 Hadoop 集群作为引用,作为云下算例的扩充。最上层有 Data Works 统一数据开发与治理平台,即复杂的结构可以通过统一的 Data Works 数据开发与治理平台进行屏蔽。
以上内容总结为三点:第一点为对外部数据库生态联邦查询,支持 Max Compute外部 Schema 整库映射 My5QL、Hologres DB/Schema,同时与 Hologres 能够存储直读,能够提升效率,故此客户可以不用进行数据迁移也能从关系型数据库直接通过外部数据源的映射,在 Max Compute 里面就能通过本地数仓对外部数据库生态联邦查询。
第二点为对非结构化数据的管理和处理,Max Compute 支持 Mount OSS 路径,将结构化文件、图片、视频等纳入到数仓权限体系做管理,即 OSS 是一个文件系统进行权限初步的管理,若将之提升为 Max Compute 的一个对象,则能够对每个用户是否能够访问 OSS 文件进行系统的权限化,并用引擎对文件格式数据进行处理,不管是结构化的、半结构化的,还是非结构化的。以上两个功能是在九月初发布的功能,欢迎进行试用。
第三点为对 Hadoop 资源池的云上扩展,例如在 ADC 或者云主机上搭建的Hadoop 集群,若遇到扩容或者业务线快速更新迭代,进行快速试错,不需要对云下整个集群或者云上的资源进行调整,提供一个 server 的云数仓服务,以此对业务进行快速的迭代与试错,执行作业是需要收费的,而其他部分若不使用的话则不进行收费,故此能够达到对现有资源的扩展。
接下来是 Max Compute 支持 Mount OSS 路径,将文件纳入到数仓权限体系做管理,并用引擎对文件格式数据进行处理。接下来讲解 Max Compute 在数据湖集成方面,通过第三方的预测即 Forrester Wave 对世界上的主流云数仓产品进行不同维度的评测,其中有一个维度为数据库的集成。下图右下角位置为阿里巴巴的云数仓产品得分,此方案取得了五分,对比其他产品此为最高分。从四个维度对数据库的集成能力进行对比,第一个为源生数据库查询能力,第二个为对数据库安全集成能力,第三个为对引擎的集成能力,第四个为是否有客户在实际使用此架构,在以上四项评比中,阿里云的 Max Compute 与 dict works 组合以及其他的阿里云云数仓产品进行评比中取得最高分。
Max Compute 对标的常见国际有商产品如下:
二、典型使用场景介绍
实际上之前已经介绍过 Max Compute 湖仓一体实时应用场景。第一个场景为最早开发此架构应对用户的需求,即客户保有 Hadoop 平台,希望能够自主可控,
1、IDC 线下 Hadoop 无迁移上云
第一个场景为最早开发此架构应对用户的需求,即客户保有Hadoop平台,希望能够自主可控,并不希望将所有数据进行迁移,但是其中有部分算法,例如AI 的算例在本地的开源体系架构是无法解决的。之前的操作是每天导入导出一条数据至云上,再通过云上的大规模方式引擎 Max Compute 进行处理,此架构的缺点为每天需要操作一条数据,以此会消耗大量的时间及成本。故此通过此架构线上线下打通底层存储的源数据,通过高速网速互联,故此云上就可以直接消费云下的数据,并将数据返回至云下。Max Compute 能够与 Hadoop 整套体系执行统一身份权限以及对数据进行缓存加速,此为之前已经实现的架构。
2、Server less 数据湖ETL/交互分析
第二个场景为云上对象存储已变为实时化的数据库,里面有离线的数据、实时入库的数据、包括结构化、非结构化以及半结构化数据。通过对 OSS 的统一管理,通过对外部数据元的管理 DUF,扫描 OSS 上的文件,能够 schema 化变成库表形式,否则变成新的管理。通过 DUF 执行数据管理,里面对接各个计算引擎,其中包括数仓的一切,同时也能够对接其他的数据引擎,例如阿里云的其他引擎,达到数据的共享、统一的元数据以及多引擎架构。
3、IDC Hadoop 的云上弹性资源池
第三个场景为 IDC Hadoop 的云上弹性资源池,即云上引擎 Max Compute 可以作为本地平台的一个弹性资源池,整体的客户管理、开发及治理都在本地 Hadoop 平台上进行,可以依据 Hadoop 开发的调度资源管理,将 Max Compute 当作一个资源池。从线下 Hadoop 集群发起作业读写云上 Max Compute 部分资源,以及利用Max Compute 部分算例进行云上云下的数据传输。
4、多联邦查询
另外一个使用场景是通过 Max Compute 执行多联邦查询,即通过映射 Hologres、外部的 Hive 以及其他JDBC的数据库的数据元,通过统一的开发界面,能够照应本地的 Max Compute 云数仓的 Hadoop 表,以及其他映射至 Max Compute 的Hadoop 表,接下来的 Demo 也将以 Max Compute 映射 Holog 的数据元,以此简单的展示一下 Max Compute 通过 schema 映射整个外部的数据库类型的数据。
三、能力展示Demo
整体 Demo 的架构比较简单,即设计两款云产品,第一款为阿里云的数仓产品Hologres,在 Hologres 里面有许多数据库,其中有一个 schema ,里面有许多表,以下为云数仓的 Hologres 详细界面:
Hologres 里面有当前的数据库,以及数据库下面的 schema ,schema 里面有两张表,通过 Max Compute 映射 schema,将整个 schema 里面的表映射至 Max Compute,故此可以对该表进行查询测试。首先浏览在 Holog 里面表格的数据:
然后可以在 Max Compute 开通 Hologres 数据库,首先登录阿里云的控制台,然后进入到 Data Works ,其为对外开放的工具。
例如在张家口有一个项目,则直接点击数据开发,在数据开发里面可以通过建立临时查询节点 OOPS SQL 创建一个新的查询任务,页面
里面则进行一个查询任务:
首先通过运行一个 FOREIGN SERVER,即架构图上的 FOREIGN SERVER 连接Hologres ,Hologres 里面有连接串、用户名密码以及已连接DB的名称。对比Hologres 实例:
里面有连接的信息可以进行复制粘贴,同时可以获取到数据库的信息,执行FOREIGN SERVER 之后,则可以依据 SERVER 创建 schema ,执行的 schema 为CREATE EXTERNAL SCHEMA ,接着重新创建一个,创建成功之后,检查是否创建成功:
观察上图可知,schema 已经创建成功,除了利用 Data Works 命令行连续查询,同时也可以通过 Max Compute 执行命令行终端实现此功能。为了展示可以通过不同的方式进行查询三层模型下的 schema 。
将刚刚新创建的 Demo 进行复制粘贴,输入 show tables in schema ,若进行顺利,则 Hologres 里面的两张表可以映射至 Max Compute ,结果如下:
以上结果包含了两张表的信息,接下来对此依次进行查询,结果如下:
同时也可以通过 Data Works 进行此查询命令,不过需要增加三个参数保证对外部数据元的兼容:
刚才在 Max Compute 客户端里面其实已经筛选级别配置完毕,故在 Data Works 里面需要再进行配置,然后针对 Hologres 发起查询,结果如下:
以上为查询结果的三条数据,同样可以在 Hologres 进行查询,得到以下四条数据:
再执行查询,结果如下:
观察可知,以上四条数据与 Hologres 是一致的,用此方式实现从 Max Compute 联邦查询外部数据,若 MySQL 或者其他类型外部数据也是一致的,首先需要创建FOREIGN SERVER ,通过FOREIGN SERVER 创建外部的 schema ,通过 DB 以及schema 能够将整个 schema 里面的表全部进行映射,此为映射数据元的整个过程。以此就可以在 Max Compute 里面实现连续查询、执行业务流程的作业,可以对此进行调度外部数据元:
然后通过 ODPS SQL 创建节点:
再将代码写入 Data Works 中,引入其他外部数据元以及本体的数据元,以此进行达到联邦查询的效果。Demo 实际上在整个架构图里面,从 Hologres 映射至 Max Compute 里面的 Foreign Server ,然后 Foreign Serve r将数据传入 schema ,最后在 Max Compute 里面实现 Hologres 的联盟查询。若之后客户有许多外部数据平台及数据库,则可以利用每一个数据元一起执行联邦查询。例如文件管理Mount OSS 处理非结构化的数据的方式及过程,作为 Hadoop 平台扩展资源进行调度,以及其他外部数据元的联邦查询。