数据开发治理平台Wedata之数仓建设实践

2022-05-09 11:04:22 浏览数 (2)

1 背景介绍

1.1 概述

本案例基于腾讯云一站式开发治理平台Wedata、私有网络VPC、云数据库Mysql和弹性Mapreduce构建了全流程的离线数仓建设流程。通过模拟业务数据的导入,分层ETL和数据应用全过程,演示了如何在Wedata上进行高效的数据开发与治理。

1.2 数据仓库设计

基于业务数据存储mysql,周期性采集到EMR Hive存储,通过Spark和Hive进行数据清洗,分层规划如下:

  • ODS:原始数据层,数据采集,同步,统一结构化;
  • DWD:数据明细层,数据预处理,格式化;
  • DWB:数据中间层,指标汇总,公共指标加工;
  • ADS:数据服务层,主要存储个性化指标;
数仓分层架构设计数仓分层架构设计

2 环境准备

2.1 私有网络创建

私有网络是在腾讯云上自定义的逻辑隔离网络空间,在构建MySQL、EMR,Wedata等服务时选择的网络必须保持一致,网络才能互通。否则需要使用对等连接、VPN等方式打通网络。页面地址:https://console.cloud.tencent.com/vpc/vpc?rid=8

2.2 基础平台创建

使用EMR作为基础平台,提供算力和存储。Wedata也同时支持CDW-PG、DLC作为基础平台。选择弹性Mapreduce服务,参考如下规格,进行EMR集群的创建。

基础平台配置清单基础平台配置清单

2.3 创建云数据库MySQL

云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和扩展关系数据库。MySQL实例配置大小自定义,需要关注VPC与其他服务保持一致即可。页面地址:https://console.cloud.tencent.com/cdb

MySQL配置MySQL配置
  • 开通EMR服务,基于EMR创建流程搭建一套最小规格的EMR集群
  • 开通一个mysql实例,由于当前的demo仅作为演示使用,可以选择最小实例规格即可
  • 开通一至多台CVM作为资源提交机器(系统选择centos 7.9),建议规格8c-16g,磁盘100G即可

2.4 调度执行组配置

Wedata任务提交需要使用专门的提交机资源,此处开通相同VPC下的CVM一台作为调度执行组资源,该执行组资源可变配,可分组。调度执行组使用的机器配置可自行决定,当前Wedata使用CVM配置4C8G可支持64并发。

调度执行组资源配置调度执行组资源配置

2.5 开通Wedata服务

开通Wedata服务,主账号可以直接创建空间。子账号和协作者账号需要通过主账号授权。通过CAM 给子账号/协作者账号授予创建工作空间、定义数据资产分类目录的权限,需要给其授权 WeDataFullAccess 策略 。

在“用户列表”页面下,选择子账号/协作者账号,在操作列中点击【授权】,搜索选择QcloudWeDataFullAccess策略。

子账号授权策略子账号授权策略

2.6 开通Wedata项目空间

2.6.1 创建项目

进入Wedata服务,选择项目列表,点击创建项目开通新wedata项目空间。标识为识别符号,项目名称需保持唯一,参考如下

开通项目空间开通项目空间

选择引擎类型,目前支持EMR,DLC和CDW-PostGreSQL,当前demo选择EMR为底层基础平台,提供存储和算力支持。

配置基础平台配置基础平台

补充EMR地域和资源队列信息,资源队列对应提交任务的队列,原始情况下只有default队列,可自行创建新的队列。

Ranger信息补充,主要是用于用户权限和hdfs、yarn、hive等组件的用户权限管理控制使用。配置成功后,可基于wedata实现用户的访问权限管理。

开启引擎元数据采集能力,用于后续数据运营能力相关的模块,如数据血缘,数据地图等。

配置EMR服务信息配置EMR服务信息

点击下一步,完成项目创建。

2.6.2 添加mysql数据源

点击项目管理,进入数据源管理,添加相关数据源,本方案需要配置mysql数据源作为数据输入和输出的目标。

新增数据源新增数据源

选择新建数据源,选择关系型数据库mysql。

添加MySQL源添加MySQL源

选择数据源管理,添加mysql数据源,填入对应信息,注意vpc需要与基础平台EMR为同一个,配置完成后点击数据连通性测试,通过后保存数据源。

mysql链接测试mysql链接测试

2.6.3 添加执行资源组

点击项目管理模块下的执行资源组管理,创建调度资源组。

调度资源组配置调度资源组配置

执行资源组用于提交离线数据集成和数据开发任务,本方案使用唯一机器作为提交机。线上环境支持划分多个资源组,分别为不同开发环境提供服务,相互隔离。

执行资源组使用CVM资源,需要购买相同地域,同一VPC下的云服务器资源。点击保存,完成执行资源组添加,进入初始化流程。

执行资源组初始化,按弹窗提示,登入机器,使用root用户,执行一下命令(该命令在界面有提示):

wget https://wedata-agent-1257305158.cos.ap-beijing.myzijiebao.com/vpc_package/install.sh && sh install.sh --tenant_id=1305426035 --user_id=100014552811 --owner_user_id=100018381202 --executor_group_id=20220411142450680160 --gatewayaddr=wedata-api-fusion.cloud.tencent.com --executor_id=ins-fp30myob --secret_id=xOzvVDE8jLaouRhdzmBwT4uti64dX22zaDxY --secret_key=ebqmbOBUK5qwSOWlEJIzP96wYvrxllIu

大概2分钟左右完成资源包的下载和安装,刷新资源组服务器列表,显示以下状态则添加成功。

调度资源组展示调度资源组展示

离线集成资源组当前默认wedata内置,不需要购买资源,直接创建即可。实时集成资源组使用腾讯云Oceanus服务支持,本案例暂不涉及。

2.6.4 存算引擎配置

进入项目管理,存算引擎配置,完成账号配置。目前仅支持lunux账号认证,通过责任人、主账号和子账号3种方式完成任务提交。

责任人:任务的创建人;

主账号:统一为hadoop账号;

子账号:统一为某一个子账号提交

账号映射功能,提供控制台账号与集群/linux账号的映射关系。如下图中,张XX用户映射zaki之后,控制台使用张XX用户登入wedata,任务提交在hadoop集群使用zaki用户。

注意:zaki为linux用户,需要在ranger配置对应的权限,开放建表、查询、写入等能力。

2.6.5 成员管理

Wedata提供多种成员角色管理项目,支持项目创建者为同一个主账号下的成员添加各位成员角色。当前demo演示暂未添加其他成员,可以不用操作。示例如下:

至此,Wedata平台的环境准备工作完成。

3 数据开发

3.1 表结构创建

进入数据开发模块,选择对应的项目,点击右边的新建库和新建表,通过ddl的方式创建下图左边对应的库表。

先分别创建ods、dwd、dwb和ads库,如下:

点击创建表,选择对应的emr引擎和所属的库,使用DDL模式创建。依次完成ods、dwd、dwb和ads层hive表的创建。

3.2 数仓分层任务编排

本demo采用先编排后开发的敏捷开发模式,实际使用中,也可以使用先开发后编排的模式。

进入数据开发模块,选择编排空间,创建业务文件夹-warehouse_demo,新建工作流。

进入如上图右边的画布页面,完成各层的数据开发,使用Hive SQL和Spark SQL可根据需要自行选择。

1-新建数据同步任务完成ods层和ads层的开发,如:ods_user、ods_item

2-新建Hive SQL和Spark SQL完成dwd层和dwb层开发,包括任务节点有:dwd_user、dwd_item、dwb_user、dwb_item

3-新建Shell脚本,用于标记每一个逻辑的完成,并触发下一层数仓任务的运行,如:end_of_ods_flow、end_of_dwd_flow、end_of_dwb_flow、ready_to_serve

根据各层任务的逻辑关系,通过拖拽的方式,将各个任务节点的依赖关系关联起来。

3.3 数据集成任务开发

ODS层主要模拟mysql数据离线导入到hive的场景,使用默认集成资源组,右键画布的ods_user节点,编辑,分别选择任务读取节点-mysql和任务写入节点-hive。同理,数据应用场景,对hive结果数据输出到mysql表,在本案例中,针对ads层的结果表,通过数据集成任务发送到mysql,模拟BI分析、可视化等业务场景。以下以用户表ods_user集成到hive为例进行说明:

右键任务读取节点,选择需要导入的mysql表,完成mysql ods_user表到hive ods_user表的抽取任务,配置如下

本方案中,mysql的表,按天维度导入hive分区表,因此新增一个时间字段,用来按时间每天倒入数据到hive表。保存退出。

右键任务写入节点,选择需要写入的hive表,如下

配置映射关系,选择同名映射,确定mysql字段到hive字段的关联关系,保存退出。

配置该数据抽取节点的任务属性,如脏数据比例、并发数据、任务级别的参数等,按需配置。保存任务设置,调试运行,查看任务运行日志。

同理,按mysql ods_item映射hive ods_item表的关系,配置对应的映射关系,保存退出。

回到画布开发界面,选择数据计算-Shell任务节点,输入shell任务脚本,标记ods层任务完成进展。

配置任务流调度周期,提交发布。

3.4 数据计算任务开发

数据工作流下的数据计算节点,新建数据开发任务,选择hive任务,进入sql编辑,完成任务开发。本案例磨人数据默认数据源选择EMR平台的hive,执行资源组选择创建的调度资源组,资源队列默认使用default。任务开发使用集群yarn进行资源调度,如需修改其他队列,根据实际情况进行修改即可。本案例数仓分层逻辑计算均采用数据计算节点中hive/spark任务类型开发。

数据计算开发展示数据计算开发展示

点击任务属性,进行参数配置,如上图。点击调试,测试任务运行,日志查看。

根据业务逻辑,依次完成任务流中各个任务节点的逻辑清洗后,保存整个流,发布提交即可。

4 任务运维

任务发布之后,可通过画布上方运维按钮跳转到当前任务流的运维界面,也可以通过左侧任务栏跳转。

运维大屏针对任务、实例相关指标统计,支持当前状态和历史回溯。

点击任务运维,可以跳转到任务流和具体任务的运维界面,进行任务的预警、周期补数和基本信息查看等操作

任务流运维管理任务流运维管理

5 总结

以上流程的展现了从mysql抽取业务数据,对数据进行分层建设,完成数据清洗后分发到BI报表、可视化分析等业务应用场景的全流程。基于Wedata数据开发治理平台的开发,让数据工程师、运维、数据架构师和业务人员,能够在一个平台上闭环,独立完成各种的工作,极大的提高了数据开发和任务运维的效率。

当然对于基础资源的管理、服务的监控仍然需要基于EMR控制台进行管理,下一期,介绍基于DLC Wedata的数据湖任务开发架构,彻底摆脱以上运维压力,实现免运维的数据开发能力。

0 人点赞