开发者学堂课程【SaaS 模式云数据仓库系列课程 —— 2021数仓必修课:MaxCompute 湖仓一体方案最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/55/detail/1061
MaxCompute 湖仓一体方案最佳实践
内容简介:
一、最佳实践架构讲解
二、阿里云湖仓一体架构设计
三、最佳实践系统搭建
一、最佳实践架构讲解
1.系统架构
数据湖:开源 Hadoop 集群+ HDFS 存储。存储结构化、半结构化和非结构化数据。客户自建集群或者使用云厂商提供的托管服务,如阿里云EMR
数据仓库:大数据时代的集成系统,数据需要清洗和转化,并强调建模和数据管理。如阿里云 MaxCompute
湖仓一体:打通数据湖和数据仓库两套体系,让数据和计算在湖和仓之间自由流动。基于 DataWorks 强大的数据开发治理能力,提供统一的开发体验,降低两套系统的管理成本
业务部署
为了简化 Hadoop 集群部署,本篇最佳实践会在华东1杭州地域部署EMR集群。为了模拟跨地域通信,MaxCompute 项目启动在华东2上海地域。
两个地域的 VPC 通过云企业网 CEN 打通。在 MaxCompute 端 创建外部项目,也就是 external project 与 Hive DB 做映射。
其他的注意事项还有 MaxCompute 通过 ENI 网卡与 EMR 集群通信,也需要EMR 集群放开对应的访问端口,实现元数据同步和数据查询。
·EMR 集群:托管版服务模拟自建 Hadoop 集群,存储是 HDFS
·云企业网 CEN:打通跨地域的 EMR 集群和 MaxCompute 数仓
·MaxCompute :创建外部项目,实现 Hive DB 级映射
产品名称 |
作用 |
EMR |
Hadoop集群 |
MaxCompute |
云数据仓库 |
DataWorks |
数据开发/管理/治理 |
云企业网CEN |
打通VPC网络 |
ENI弹性网卡 |
MaxCompute与EMR通信接口 |
弹性公网EIP |
方便公网访问管理 |
安全组 |
管控EMR端口访问 |
3.方案优势
(1)业务无侵入性,用户自持的计算资源可充分利用,助力平滑上云。
(2)依托 MaxCompute 作为弹性资源池,极大地增强了系统的资源弹性,解决业务高峰计算资源不足问题。
(3)相比开源计算引擎,MaxCompute 在 SQL 上做了大量优化,可帮助用户提高 SQL 运行性能,降低计算成本。
(4)与传统的数据同步方案相比,通过共享存储,镜像元数据的方式解决了数据实时性和存储冗余的问题。
(5)数据处理能力延伸,借助 MaxCompute 无缝集成阿里云 PAI 机器学习平台,拓展离线数据集群的机器学习能力。
二、阿里云湖仓一体架构设计
1.湖仓一体的架构
湖仓一体是由两种湖组成的。
左下角是 Hadoop 生态的湖,也就是Hive数据仓库的数据,Hive 是一种数仓,是一种 schema on read 模式的数仓,也就是说数据在插入 Hive 数据库的时候是不做 schema 校验的,只有在读取的时候才会做 schema 校验。
右下角是 OSS 的湖,很多非结构化数据,包括图像,音频,视频都放在对象存储上,所以有另外一套支持对象存储的湖。
通过 DLF 做元数据管理,数据放在 OSS 上,通过云上 MaxCompute 数仓对两种湖的数据做统一的管理。
通过 DataWorks 实现统一的数据开发平台,统一的元数据管理和数据治理。
最后通过不同的角色对湖或者苍的数据进行统一管理和分析。
湖仓一体应用客户:新浪微博-——案例价值
不仅融合了数据湖和数据仓库的优势,在灵活性和效率上找到最佳平衡,还快速构建了一套统一的 AI 计算中台,极大提升该机器学习平台团队的业务支撑能力。
无须进行数据搬迁和作业迁移,即可将一套作业无缝灵活调度在 MaxCompute 集群和 EMR 集群中。
SQL 数据处理任务被广泛运行到 MaxCompute 集群,性能有明显提升。基于 PAI丰富且强大的算法能力,封装出很多贴近业务场量的算法服务。满足增量业务需求,如 PAI GNN
(3)MaxCompute 云原生的弹性资源和EMR集群资源形成互补,两营体系之间进行资源的形峰填谷,不仅减少作业排队,且降低整体成本。
三、最佳实践系统搭建
1.权限管理
1. 1.创建 RAM 用户
登录阿里云控制台,输入访问控制,跳转到 RAM 控制台,选择用户|创建用户,按如图所示进行设置,点击确定。
·AccessKey 和 AccessKey Secret 的信息,可以复制也可以下载 CSV 文件。给客户添加权限:dataworks ,根据实际情况进行精细化配置。完成后该账户则拥有了读写 MaxCompute 的权限。
1. 2.授权 MaxCompute 访问 ENI
MaxCompute 服务需要在用户的 VPC 内创建ENI网卡,以实现 MaxCompute 到用户 VPC 的连通。所以需要授权 MaxCompute 服务访问 ENI 资源的权限。点击链接,同意授权即可,云资源访问授权成功。
2.资源创建
2. 1.CADT 构建
通过云架构设计工具,创建湖仓一体所需要的云资源,进入 CADT 控制台,选择官方模板库,输入湖仓一体,点击基于方案新建。
emr 创建的 ECS 和 ECS 本身都是有登录密码的,实现官方模板到本地应用的保存
2. 2.资源配置
下一步 应用|部署应用。进行资源的验证,如果全部验证通过,则点击下一步,如果验证失败,则有失败的原因,根据其原因进行相应的解决。
点击下一步:价格清单,会根据价格列表,支付方式列出相应的价格清单。
点击下一步:部署清单,勾选《云架构设计工具服务条款》,点击下一步创建资源,则整个应用处于部署中的状态,需15分钟左右。
3.云数仓 MaxCompute
1.创建工作空间
首先退出主账号,切换到 RAM 用户登录窗口,输入之前创建的 RAM 用户 ID,登录成功切换到 DataWorks 工作台。选择工作空间列表,开始创建工作空间,选择简单模式。
选择 MaxCompute 作为计算引擎,点击下一步。
实例显示名称为 didw.demo ,其它选项默认。
切回到主账号,通过 CADT 的资源部署情况可以查询到对应的要安装客户端的 IP地址。
3. 2.配置 MaxCompute 客户端
安装 java 运行时下载 odpscmd客户端解压,避免特殊字符的影响,先将命令复制到文本,进行编辑和对齐,复制命令,执行。
运行结果如下:配置odps文件,复制到文本。
将 AccessKey ID 和 AccessKey Secret 在 RAM 用户处拷贝。保存,运行odpscmd 客户端是否可以正常进入项目,结果如下。
4.湖仓连通
4. 1.申请 MaxCompute 与 Hadoop 通信使用的 ENI 弹性网卡
需要通过VPC来跨区域访问 Hadoop 集群,所以要打通 MaxCompute 和 VPC之间的网络通路。
这个步骤目前需要阿里云产品团队协助处理,可将以下信息通过工单提供给 MaxCompute 团队并等待产品团队评估开通网络通路:
1.可用区 ID
2.专有网络 ID
3.虚拟交换机 ID
4.ENI安全组 ID
5.主账号 UID
注意:此处的 VPC 不是 Hadoop 集群所在的 VPC,而是要与 Hadoop 集群通信的 VPC. 本示例中使用的是与 MaxCompute 项目同在上海地域的相关VPC信息。申请通过后,可在弹性网卡中看到由 MaxCompute 新建的 ENI。
4. 2.配置 Hadoop 集群安全组
MaxCompute 通过 ENI 访问 Hadoop 集群,因此也需要 Hadoop 集群的安全组或防火墙对ENI开放必要的端口(注意:端口号和 Hadoop 版本有关,本实践使用的 EMR 的 Hadoop 版本是 3.x)。
允许 HiveMetaStore 端口(通常是9083,本实践中是9083)2.允许 HDFS NameNode IPC 端口(通常是8020或9000,本实践中是8020)3.允许 HDFS DataNode 数据传输端口(通常是50010或9866,本实践中是9866)
登录VPC控制台(http://vpc.console.allyun.com),选择杭州区域,找到VPC实例,点击右侧的管理连接。
点击安全组模块,点击配置规则。
在安全组规则管理页面点击手动添加三个端口。
添加入方向TCP端口8020,授权对象是MaxCompute 使用的ENI所在的VPC地址段(本示例是192. 168. 0. 0/16),然后点击右侧的保存。4. 3.创建Hive数据库和表
需要在 EMR 集群通过 hive 命令创建测试用的数据库和表,并插入测试数据。登录EMR 的 master 节点,输入 hive 命令:
创建数据库:
create database aliyun_bp;
创建表:
use aliyun_bp;
create table bp_articles (id string,content string) ;
插入测试数据记录:
insert into table bp_articles values ("169", "data lake”) ;
4.4创建 Extemal Project External project 是一种特殊的 MaxCompute 项目,无法脱离主 Project 被创建和使用。
在湖仓一体的场景下,主项目承载计算资源提供者和计费主体,用于执行作业:External project 则是 Hive Database 在 MaxCompute 中的映射,用于提仅作业和授权的所需的引用对象。在 External project 中不能执行作业,也不会产生费用。
打开 odpscmd ,执行如下命令创建外部项目:
5.命令行校验
5.1查看数据库表
元数据和数据库信息映射完成后,我们可以直接在MaxCompute 中查看到hive 数据库的表信息。
进入 odpscmd ,选择使用刚刚创建的数据库。
键入命令 show tables ,查看所有表。发现可以通过 odpscmd 客户端查看到在Hive 中创建的表信息。
5.2.执行 SQL 任务
在 MaxCompute 中,我们可以通过 Hive 混合模式来运行兼容 Hive 的 SQL.
在MaxCompute 端切回到主项目。在 MaxCompute 客户端运行如下命令,设置成hive 混合模式。
运行简单的 SQL 语句:
select*from biyi_008.bp_articles limit 10;
执行过程如下:
6.DataWorks执行
文件夹创建:
用 dataworks 控制台一样可以查询到存储在 hadoop 集群里的信息:
至此完成整个湖仓一体环境的搭建以及校验查询。