开发者学堂课程【SaaS 模式云数据仓库系列课程 —— 2021数仓必修课:快速打通数仓和数据湖的湖仓一体最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/55/detail/1060
快速打通数仓和数据湖的湖仓一体最佳实践
目录:
一、数据湖 vs 数据仓库
二、下一代大数据演进方向:湖仓一体
三、湖仓一体演示
一、数据湖 vs 数据仓库
1.大数据的演进
数据湖和数据仓库很难有一个清晰的界定。
之所以大家认为自己用得是数据仓库,是因为数据仓库的概念出现的很早,大数据概念出现之前,数据库时代数据仓库的概念就出现了,从用户使用认知角度来看,计算存储分离的叫数据湖。
2.一个典型的数据湖系统剖析
阿里云 EMR 数据湖—基于开源生态的大数据平台
(1)系统架构图
从图上可以看出,模块数量较多,层次结构清晰。从下往上看,最下面一层是存储层,往上一层是 hdfs/Jindou 层,之后一层是调度层,再上层是各种引擎,最上层是应用接入层,这些是数据湖的一个基本架构。各个模块是一个独立的组件,可以插拔,也可以替换。
(2)产品优势
a.基于开源生态的大数据平台
b.支持 hdfs 和oss 两种存储系统
c.JindouFS+OSS 架构具有更好的效率和更低的成本
d.易于启动和搭建
(3)数据湖的本质
a.统一的存储系统
b.统一的元数据
c.引擎丰富,各组件自由协作
(4)数据湖的架构演进
架构上,从自建的存储计算一体演变为托管的存储计算分离建构,拥有更好的拓展性和稳定性。
数据湖架构是从左到右演进的,最初的数据湖是在HDFS上加一个自建集群,但是在此数据湖中我们要监管机房、机位、采购、部署软件等;之后又出现了像EMR这样的产品,机房、机位这些就不用监管了,然后把自建集群改为EMR集群扩容一下,从全托管转化为了半托管;而现在的云上数据湖,把HDFS替换成了元数据中(DLF),用 OSS 或 S3 来替代存储层,背后的概念是计算存储分离,好处是带来了更好的弹性以及更好地稳定性。原始数据湖存在的问题是计算作业打满了 CPU,导致整个 HDFS 不稳定,其他作业受到影响,导致数据湖崩溃。
DLF 可以把元数据服务化,达到在不需要计算时,也能保存原始数据与存储,可以把整个计算层去掉,在需要时再拉回来,使整个架构更灵活。
现在一个标准数据湖是各种组件之间非常灵活的组合形式,数据湖中的每一层可以独立使用,数据可以从其他组件进入。
3.一个典型的数据仓库系统剖析
阿里云 MaxCompute—SaaS 模式企业级云数据仓库
(1)系统架构图
从图上来看,数据仓库的架构与数据湖的架构相似,有分布式的存储,有计算资源,,有调度,有各种引擎以及各种功能组件等,最大的不同之处是,一个数据仓库有一个统一的数据接入层,这个数据仓库的数据接入层通过内部的各种组件对用户屏蔽。
数据接入层的不同在数据湖和数据仓库的比较中起到了关键作用,第一,定义了整个系统的边界,进入数据仓库的数据是有要求的,而任何数据都可以直接进入数据湖,进入 MaxCompute 的数据一定是结构化的;第二,系统内部的各种版本的演进是对用户屏蔽的,比如在数据湖中存在的几个节点,存储的冷热分层,引擎与存储需一起提升。
(2)产品优势
a.云原生极致弹性,无服务器架构,开箱即用,支持砂级弹性伸缩
b.预置多种深度优化计算模型、存储和数据通道能力
c.完善的企业级平台能力,且支持开放生态
d.强大的细粒度的安全隔离机制
e.大规模集群性能强、全链路稳定性高(阿里巴巴双11场景验证)
(3)基于 MaxCompute 强数仓的优势,阿里巴巴构建大数据中台
(4)数据仓库的本质
a.内置存储系统提供数据抽象
b.数据需要清洗和转化
c.强调建模和数据管理
4.数据湖与数据仓库的区别
从技术角度是做了不同的倾斜,就是数据湖的系统是灵活的,强调组建组件之间的灵活的协作,数据入库是结构化半结构化,这种是来者不拒的,然后上面的引擎是非常丰富、开放的使用起来上手是很容易的,大家获得的学习信息十分充足。
而数据仓库是针对大的数据怎么有效管理的,数据进入这个系统,就要先建模,建模之后用最高效的格式存储他,上面的引擎没那么丰富,但是这些引擎效率会跟系统内的各种其他组组件一起优化。
这个系统是不开元的,使用需要经过一个学习过程,上手困难一点,但是上手之后就会很容易,后续的管理成本是较低的。
从场景来看,这两种系统分别适合做什么?
因为数据湖对进入数据的类型没有要求, 所以数据湖系统适合做一个从无到有的分系过程,而数据库适合做业务流程已经确定,接下来是一个成长期,数据量和用户量开始上升,剩下的问题都变成工程问题,数据量大了之后怎么保证稳定性的问题、保证效率的问题,怎么降低成本的问题。
从图中可以看出在特定规模之前数据湖灵活性占优势,之后数仓成长性占优势。
与此同时,就产生了一个问题,客户如何才能同时享受到数据湖的灵活性和数据仓库的成长性。
二、下一代大数据演进方向:湖仓一体
阿里云计算平台提出下一代大数据演进方向:湖仓一体,即打通数据湖和数据仓库两套系统,让数据和计算在湖仓之间自由流动,从而构建一个完整的有机的大数据技术生态体系。
1.整体架构
湖仓一体是在相当长的一段时间里将数据湖和数据库结合起来,数据资产应该是一致的,我们不希望它分裂,所以我们提出了湖仓一体这个概念,新的数据接入层能够能够认识各种各样数据组合或数据类型。
2.关键技术特性
湖仓一体的缺点:整体系统使用的复杂度上升。
湖仓一体的关键技术是为了降低系统使用的复杂度。
(1)快速接入
经过快速简单的开通步骤即可和 MaxCompute 数仓相连通。
(2)统一数据/元数据管理
既支持 hadoop 开源数据湖,也支持oss数据湖(兼容)。
数仓和数据湖的数据/元数据保持实时一致性(数据湖中的DB直接映射为MaxCompute Project ,享受数仓配套工具链)
(3)同意开发体验
基于 DataWorks 强大的数据开发/管理/治理能力,提供统一的湖仓开发体验,降低两套系统的管理成本。
MaxCompute 高度兼容 Hive/Spark ,支持一套任务可以在湖仓两套体系中灵活无缝的运行。
(4)自动数仓
湖仓系统间的高速网络通道。
智能的系统间近线 Cache。
中台统一管理框架下的合理数据分层,不仅享受数据湖带来的灵活性,也享受MaxCompute 带来的企业级数仓能力。
湖仓一体化的数据中台可能有几个数据湖和几个数仓系统构成。在数据层要做到数据的高速打通,到异构集群有高速带宽,在计算层做到元数据的实时打通,在中台层做统一的体验。
3.适用场景
a.支持超大规模的机器学习和深度学习
基于开源的数据湖依托湖仓一体混合云结构,可以实现超大数据集进行机器学习、深度学习训练,以及高性能的超大规模样本生成和特征处理的完整pipeline,极大提升AI类作业效率。
b.高效使用阿里数据中台提升企业大数据能力
企业依托开源建设了数据湖,再借助使用阿里数据中台能力过程中,湖仓一体方案解决了迁移带来的利旧、确保业务连续性、与已有的系统协同、提升迁移速度的问题。
c.敏捷运营、降本提效
强运营行业(视频、直播、游戏等),数据驱动运营决策频次高,对计算资源临时性需求强。湖仓一体方案以更低成本快速的满足业务高弹性需求。
三、湖仓一体演示
使用工具:MaxCompute/DataWorks/EMR/oss
1.快速打通
打开一个执行命令,进入命令行,我们会用到 MaxCompute 的基本文件1、2、3, 在 Hive 中构建一个新环境,新建一个 database ,命名为 Inhdp1 oss,在oss建一张表,命名为 loction(是一个ORC格式的表),这是一个 EMR 与 oss结合的数据湖,然后输入数据,最后 select。
在 MaxCompute 新建一个 Project,命名为desc Project,可以与Hive上的database 作展通,提供EMR上的一些基础信息,里面已经有一张表 foo,就可以知道输入数据的时间和最后一次更改数据的时间,映射的 desc Project 不能作业,不承在资源的属性,结果运行在 menage Project 中,desc Project 的创建、消除不会产生任何费用,运用到desc Project里面的元数据之后,作业才能运行。
之后再建一张表,把 foo 表里的数据换掉,然后再做一个 show table ,我们可以在 Hive 中见到新换的数据。
2.用户/权限管理
在原生 MaxCompute 中用户权限管理,add user lyman 的帐号,再授权做grand 权限,然后 show table Inhdp1 oss。
在湖仓一体中用户权限管理,add user lyman 的帐号,再授权做 grand List 权限,然后 show table Inhdp1 oss。
使用湖仓一体化的方法:
在阿里云搜索湖仓一体;点击 MaxCompute 官网首页湖仓一体按钮。