分享人:毕役 解决方案架构师;
孟硕 MaxCompute产品经理
正文:
本篇内容将从3个部分为读者介绍MaxCompute湖仓一体方案最佳实践,自建数据湖与云数仓的融合解决方案,将MaxCompute与自建的Hive集群做数据打通,通过存储共享,元数据镜像等方式,解决传统模式下的存储冗余,计算资源弹性能力弱的痛点。
Ÿ 最佳实践架构讲解
Ÿ 阿里云湖仓一体架构设计
Ÿ 最佳实践系统搭建
一、最佳实践架构讲解
最佳实践架构由阿里云智能业务支撑平台团队的解决方案架构师毕役负责讲解。
(1) 系统架构
数据湖是开源Hadoop集群+ HDFS 存储。存储结构化、半结构化和非结构化数据。客户自建集群或者使用云厂商提供的托管服务,如阿里云EMR。
数据仓库是大数据时代的集成系统,数据需要清洗和转化,并强调建模和数据管理。如阿里云MaxCompute。
湖仓一体是打通数据湖和数据仓库两套体系,让数据和计算在湖和仓之间自由流动。基于DataWorks强大的数据开发治理能力,提供统一的开发体验,降低两套系统的管理成本。
(2) 业务部署
假定数据湖 Hadoop 集群和云数仓 MaxCompute 部署在不同地域,通过云企业网CEN 打通;MaxCompute 端创建外部项目,镜像 Hive 元数据,通过 IPC 端口与 namenode 和datanode 通信。
(3) 方案优势
1.业务无侵入性,用户自持的计算资源可充分利用,助力平滑上云。
2.依托MaxCompute作为弹性资源池,极大地增强了系统的资源弹性,解决业务高峰计算资源不足问题
3.相比开源计算引擎,MaxCompute在SQL上做了大量优化,可帮助用户提高SQL运行性能,降低计算成本。
4.与传统的数据同步方案相比,通过共享存储,镜像元数据的方式解决了数据实时性和存储冗余的问题。
5.数据处理能力延伸,借助MaxCompute无缝集成阿里云PAI机器学习平台,拓展离线数据集群的机器学习能力。
二、阿里云湖仓一体架构设计
阿里云湖仓一体架构设计由MaxCompute产品经理孟硕负责讲解。
(1) 湖仓一体的架构
湖仓一体是由两种湖组成的。Hadoop生态的湖也就是HIve数据仓库的数据,Hive是一种数仓,是一种schema on read 模式的数仓,数据在插入Hive数据。通过DLF做元数据管理,数据放在OSS上。通过云上MaxCompute数仓对两种湖的数据做统一的管理,通过DataWorks实现统一的数据开发平台、统一的元数据管理以及数据治理。最后不同角色对湖或者仓的数据进行统一管理和分析。
Hadoop湖里主要连接的是Hive,元数据是读取Hive Meta Store,数据是存储在HDFS上。通过专线打通两边的VPC,达到元数据和数据的连接通过专线读取数据,对于频繁访问的数据通过算法自动缓存到MaxCompute的Cache文件系统上。
关系型数据库以及NoSQL数据库的元数据通过DLF做统一管理,数据放在OSS上再和MaxCompute文件系统打通。上层可以利用MaxCompute的SQL/Spark、Python/Mars、PAI以及第三方引擎,有Cupid组件提供支持第三方引擎对数据做处理,提供统一的访问入口。客户通过MaxCompute就能达到对两种湖的统一管理。
由DataWorks提供的统一开发管理平台,有统一的IDE、任务调度、数据安全、数据资产管理、数据服务、开放以及定制等等。客户可以按照不同的角色不同的分析场景使用这些数据和工具。
(2) 案例价值
新浪微博通过湖仓一体的架构融合了数据湖和数据仓库的优势:
不仅融合了数据湖和数据仓库的优势,在灵活性和效率上找到最佳平衡,还快速构建了一套统一的Al计算中台,极大提升该机器学习平台团队的业务支撑能力。无须进行数据搬迁和作业迁移,即可将一套作业无缝灵活调度在MaxCompute集群和EMR集群中。
SQL数据处理任务被广泛运行到MaxCompute集群,性能有明显提升。基于PAI丰富且强大的算法能力,封装出很多贴近业务场景的算法服务 ,满足增量业务需求。如PAI GNN。
MaxCompute云原生的弹性资源和EMR集群资源形成互补,两套体系之间进行资源的削峰填谷,不仅减少作业排队,且降低整体成本
三、 最佳实践系统搭建
最佳实践系统搭建由阿里云智能业务支撑平台团队的解决方案架构师毕役负责讲解。
(1) 权限管理
l 创建RAM用户
步骤1 使用云账号登录阿里云 RAM 访问控制控制台。
步骤2 在左侧导航栏选择人员管理 > 用户,并单击创建用户。
步骤3 在创建用户页面,完成以下配置,并单击确定。
步骤4 完成二次验证,并单击确定,成功创建 RAM 用户(demo)。
步骤5 点击下载 CSV 文件,将 AccessKey ID 和 AccessKey Secret 信息下载保存后妥善保管。
步骤6 在用户信息列表,勾选 RAM 用户,单击添加权限。
步骤7 在添加权限侧边页,搜索并选择 AliyunDataWorksFullAccess 系统权限策略,然后单击确定。授权成功,点击完成。
步骤8 确认授权结果,单击完成。
l 授权MaxCompute访问ENI
MaxCompute 服务需要在用户的 VPC 内创建 ENI 网卡,以实现 MaxCompute 到用户 VPC 的连通。所以需要授权 MaxCompute 服务访问 ENI 资源的权限。
使用主账号在阿里云登录态点击连接,并点击同意授权。
(2) 资源创建
l CADT构建
步骤1 访问官方模板 ,输入“湖仓一体”关键字模糊搜索,找到《湖仓一体》模板,点击 基于方案新建。
步骤2 双击图标元素,确认参数配置符合预期。
步骤3 需要设置 ECS 的登录密码,可以保持默认值,也可以自定义。
步骤4 点击保存
步骤5 点击 部署应用
步骤6 资源验证成功之后,点击下一步“价格清单”
步骤7 点击下一步“部署清单”
步骤8 勾选 云架构设计工具服务条款,点击下一步“创建资源”
步骤9 等待资源创建成功,大概需要 15 分钟。主要时间花费在创建 EMR 集群。
l 资源配置
1.给 master 节点绑定 EIP
任意选择一 master 节点,绑定 EIP,方便远程 ssh 登录访问。
2.购买 CEN 流量包
默认 CEN 内的网络有 1K 的网络带宽用于验证连通性。若想正常的跨域访问业务,则需要购买对应的带宽包。
步骤1 登录云企业网实例控制台。(cen.console.aliyun.com),点击带宽包管理,点击购买预付费带宽。
步骤2 本次实践购买使用 10Mbps 的带宽进行方案演示。
步骤3 设置跨地域互通带宽。
(3) 云数仓MaxCompute
l 创建工作空间
步骤1 使用创建的 RAM 用 户 登 录 DataWorks 控制台。
步骤2 点击做的工作空间列表,选择上海区域,然后右侧单击创建工作空间。
步骤3 在基本配置页面,填写项目名称,并单击下一步。
步骤4 在引擎虚选择页面,勾选 MaxCompute 并选择按量付费。
步骤5 在引擎详情页,填写实例显示名称和 MaxCompute 项目名称,然后点击创建工作空间。
l 配置MaxCompute客户端
步骤1 切换到上海 region,ssh远程登录已创建的 ECS,安装 odpscmd 客户端。
步骤2 配置 MaxCompute 客户端。配置文件位于 /usr/local/share/odpscmd/conf/odps_config.ini,请参考如下配置项,并将【项目名称】替换为新建的 MaxCompute 项目名称。
步骤3 配置完成后,执行命令 odpscmd,验证是否可以正常进入项目空间。
(4) 湖仓连通
l 申请 MaxCompute 与 VPC 的网络连通
MaxCompute 需要通过 VPC 来跨区域访问 Hadoop 集群,所以要打通 MaxCompute和 VPC 之间的网络通路。这个步骤目前需要阿里云产品团队协助处理,可将以下信息通过工单提供给 MaxCompute 团队并等待产品团队评估开通网络通路:可用区 ID;专有网络 ID;虚拟交换机 ID;ENI 安全组 ID;主账号 UID。
l 配置 Hadoop 集群的网络安全规则
MaxCompute 通过 ENI 访问 Hadoop 集群,因此也需要 Hadoop 集群的安全组或防火墙对 ENI 开放必要的端口(注意:端口号和 Hadoop 版本有关,本实践使用的 EMR的 Hadoop 版本是 3.x)
允许 HiveMetaStore 端口(通常是 9083,本实践中是 9083);允许 HDFS NameNode IPC 端口(通常是 8020 或 9000,本实践中是8020);允许 HDFS DataNode 数据传输端口(通常是 50010 或9866,本实践中是 9866)。
步骤1 登录 VPC 控制台,选择杭州区域,找到 VPC 实例,点击右侧的管理连接。
步骤2 点击安全组模块(默认安全组),然后点击配置规则。
步骤3 在安全组规则管理页面,点击手动添加。
步骤4 添加入方向 TCP 端口 8020,授权对象是 MaxCompute 使用的 ENI 所在的 VPC 地址段(本示例是 192.168.0.0/16),然后点击右侧的保存。
步骤5 然后依次添加端口 9083 和 9866。
l 创建 Hive 数据库和表
需要在 EMR 集群通过 hive 命令创建测试用的数据库和表,并插入测试数据。
步骤1 登录 EMR 的 master 节点,输入 hive 命令。若无法远程 ssh,请检查对应的安全组是否开放 22 端口。
步骤2 创建数据库
create database aliyun_bp;
步骤3 创建表
use aliyun_bp;
create table bp_articles(id string,content string);
步骤4 插入测试数据记录
insert into table bp_articles values("169","data lake");
l 创建 External Project
步骤1 打开 odpscmd,执行如下命令创建外部项目(请结合参数说明替换掉花括号中的信息):
(5) 命令行校验
l 查看数据库表
步骤1 进入 odpscmd,选择使用刚刚创建的数据库。
步骤2 键入命令 show tables,查看所有表。发现可以通过 odpscmd 客户端查看到在 Hive 中创建的表信息。
l 执行 SQL 任务
步骤1 在 MaxCompute 端切回到主项目。
步骤2 在 MaxCompute 客户端运行如下命令,设置成 hive 混合模式。
步骤3 运行简单的 SQL 语句:
(6) DataWorks执行
步骤1 选择创建的工作空间,点击 进入数据开发。
步骤2 选择 数据开发,右击 业务流程,点击 新建业务流程。
步骤3 输入业务名称,点击新建。
步骤4 双击 OPDS SQL。
步骤5 输入节点名称,选择目标文件夹,创建节点。
步骤6 输入查询语句,点击执行