关于数据仓库:基于Delta-lakeHudi格式的湖仓一体方案

12次阅读

共计 4403 个字符,预计需要花费 12 分钟才能阅读完成。

简介:Delta Lake 和 Hudi 是风行的凋谢格局的存储层,为数据湖同时提供流式和批处理的操作,这容许咱们在数据湖上间接运行 BI 等利用,让数据分析师能够即时查问新的实时数据,从而对您的业务产生即时的洞察。MaxCompute 在湖仓一体架构中,通过反对 Delta Lake 和 Hudi 在数据湖中提供数据仓库性能。

本文作者 孟硕 阿里云智能 产品专家

直播视频请点击 直播观看

一、最佳实际背景

整个最佳实际是基于 MaxCompute 的湖仓一体架构,模仿公司应用场景。比方公司 A 应用云上关系型数据库 RDS 作为本人的业务库,同时应用阿里云 EMR 零碎做日志数据采集。将数据会集到云上对象存储 OSS 上,引入了数据湖常会用的存储机制 Delta Lake 和 Hudi 为数据湖提供流解决、批处理能力。通过 MaxCompute 查问到实时数据,即时洞察业务数据变动。整个场景 demo 的架构是,云上 EMR 产生的实时变动的数据,包含在线数据库 RDS,通过数据入湖,而后实时的把数据变动体现在归档的 OSS 上。同时 MaxCompute 跟其余引擎一起剖析 OSS 上的数据。

湖仓一体架构:异构数据平台交融

因为企业外部会有很多业务线,不同的部门,因为自身业务的需要及员工的技术栈几个方面的起因,导致采纳的数据架构不一样,数据平台也不一样。技术架构有 Hadoop 技术体系,也有云上全托管架构,所以造成不同的部门对技术架构,应用的技术平台不一样,也造成了数据割裂的状况。湖仓一体就是帮忙企业把异构数据平台做一个买通,底层数据能够互相拜访,两头元数据层也能够做到相互透视,数据能够做到自在流动。数据湖局部不只是反对 EMR,也反对 ESC Hadoop 和云下 IDC Hadoop。其中 MaxCompute 数据仓库也能够和数据湖 EMR 做一个数据买通,在用 MaxCompute 跟联播数据源做一个联播查问,这样能够把所有的数据在 MaxCompute 中做一个汇总。比方有三张表,在 RDS 和 Hive 中,共事 MaxCompute 里有大量事实表,如果需要是对这个三个表做一个联结查问,通过这个架构,能够很不便的做到这一点。

更快的业务洞察

  • DataWorks 自助开明湖仓一体:5 分钟买通异构数据平台(Hadoop/ DLF+OSS)
  • 更宽泛的生态对接
  • 反对对接阿里云云原生数据湖构建(DLF)
  • 反对查问 DeltaLake、Hudi 格局
  • 反对对接更多内部联邦数据源 Hologres(RDS、HBaseUpcoming!)

更高的性能

  • 智能 Cache 实现 OSS/ HDFS 数据拜访减速
  • 湖数据查问减速

更好的综合数据开发与治理

  • 跨引擎开发和调度
  • 对立湖 / 仓数据开发体验
  • 对立湖 / 仓全局资产治理

湖仓一体的架构

首先看右侧局部,是跟 OSS 和 DLF 侧的买通,因为在 OSS 上咱们归档大量的半结构化和结构化的数据。有关系型数据库,有 nosql 数据库,能够通过 DLF 组件把 OSS 上的元数据爬取出来。相比于在 MaxCompute 上创立 OSS 表面拜访 OSS 数据,当初通过 DLF 对立自动识别 OSS schema,MaxCompute 间接映射这种形式,会更不便一些。一些数据的更新,schema 的变更,DLF 也能够自动识别到。同时 DLF 外面有用户权限治理,后续会陆续上线。也就是说对于 OSS 对接的引擎,对立的数据拜访权限会收敛到 DLF 里。

左侧是对 Hadoop 生态系统的买通,Hadoop 包含阿里云半托管的 EMR,开源的 on ECS 和 IDC Hadoop,也蕴含支流的发行版 CDH,也都能够做买通。下方再加上联邦数据源。通过 MaxCompute 能够连贯到各种各样的云上数据源,通过上传 DataWorks 做对立的开发和治理,以及数据治理。这样就有一个全域数据资产视图,开发工作数据也能联通,元数据也能投射到 DataWorks 之上。这就是整个湖仓一体的架构。

二、相干产品介绍

数据湖构建 DataLakeForamtion
DLF 次要是针对 OSS 数据,做一个托管,下层对接其余引擎如 EMR、Databricks、Datalnsight、PAI、MaxCompute、Hologres。这些引擎能够共享一份元数据在 DLF 上。后续企业能够依据不同部门,不同业务场景随便切换引擎。前期咱们也会逐步欠缺访问控制,以及一些企业级能力,比方平安,包含数据分层等。

数据入湖

  • 反对多种数据源入湖,MySQL、SLS、OTS、Kafka 等
  • 离线 / 实时入湖,反对 Delta/Hudi 等多种数据湖格局
  • 数据入湖预处理,反对字段 mapping/ 转换 / 自定义 udf 操作

元数据管理

  • 对立元数据管理,解决元数据多引擎一致性问题
  • 兼容开源生态 API
  • 主动生成元数据,升高应用老本

访问控制

  • 集中数据拜访权限管制,多引擎对立集中式赋权
  • 数据拜访日志审计,统计数据访问信息

三、最佳实际 Demo

整体架构

企业构建和利用数据湖个别须要经验数据入湖、数据湖存储与治理、数据摸索与剖析等几个过程。次要介绍基于阿里云 MaxCompute、数据湖构建(DLF)+ 对象存储(OSS)构建一站式的数据入湖与剖析实战。其次要数据链路如下:

第一步:RDS 数据筹备

RDS 数据筹备,在 RDS 中创立数据库 academy_db。在账户核心创立可能读取 employees 数据库的用户账号。通过 DMS 登录数据库,运行一下语句创立 anti_fraud_result 表,及插入大量数据。

CREATE TABLE `anti_fraud_result` (`transactionid` varchar(32) NOT NULL,
  `uid` varchar(32) DEFAULT NULL,
  `card` varchar(32) DEFAULT NULL,
  `longitude` double(12,8) DEFAULT '12.00000000',
  `latitude` double(12,8) DEFAULT '12.00000000',
  PRIMARY KEY (`transactionid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;

INSERT INTO `anti_fraud_result` values ("12489571","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489572","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489573","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489574","82005","123123",3.14592040,101.12315432);

第二部:DLF 数据入湖

进入 DLF 控制台界面:https://dlf.console.aliyun.co…,点击菜单 数据入湖 -> 数据源治理 -> 新建数据源。输出数据库相干连贯信息

填写 RDS 实例、登录信息以及网络和平安组信息后,点击“连贯测试”

  • 在 OSS 中新建 Bucket 和目录,如 bucket: rtcompute,目录:oss://rtcompute/csvfile/
  • 在 DLF 控制台界面点击左侧菜单“元数据管理”->“元数据库”,点击“新建元数据库”。填写名称 covid-19,新建目录并抉择。

  • 创立入湖工作:

a. DLF 控制台中点击菜单“数据入湖”->“入户工作治理”,点击“新建入湖工作”-> 抉择“关系数据库实时入湖”,依照下图的信息填写数据源、指标数据湖、工作配置等信息。并保留。

如果是 Hudi 格局,在“存储格局”中能够抉择 Hudi:

b. 下一步输出工作实例名称,RAM 角色以及最大资源使用量,点击下一步确认信息

c. 在 DLF 控制台“入户工作治理”界面中,找到刚创立的入湖工作列表,点击“运行”启动入湖作业;该数据入湖工作,属于全量 + 增量入湖,大概 3 至 5 分钟后,全量数据会实现导入,随后主动进入实时监听状态。如果有数据更新,则会自动更新至 Delta Lake 或 Hudi 数据格式中。

第三步:MaxCompute 中查问数据

开明 DataWorks 与 MaxCompute(疾速启动请参考 文档),并进入 DataWorks 长期查问界面(请参考文档)

创立 MaxCompute 内部 Project 映射 DLF 元数据:

create externalproject -source dlf -name ext_dlf_delta
     -ref ms_proj1
     -comment "DLF"
     -region "cn-shanghai"
     -db covid_19
     -endpoint "dlf-share.cn-shanghai.aliyuncs.com"
     -ossEndpoint "oss-cn-shanghai-internal.aliyuncs.com";

-- 显示映射表信息
show tables in ext_dlf_delta;

查问数据:

set odps.sql.hive.compatible=true;
set odps.sql.split.hive.bridge=true;
select * from ext_dlf_delta.sh_rds;

第四部:RDS 中新增数据

INSERT INTO `anti_fraud_result` values ("12489575","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489576","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489577","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489578","82005","123123",3.14592040,101.12315432);
INSERT INTO `anti_fraud_result` values ("12489579","82005","123123",3.14592040,101.12315432);

MaxCompute 中校验数据

set odps.sql.hive.compatible=true;
set odps.sql.split.hive.bridge=true;
select * from ext_dlf_delta.sh_rds;

在 1 分钟之内,在 MaxCompute 中查看数据已更新:

原文链接
本文为阿里云原创内容,未经容许不得转载。

正文完
 0