前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据开发治理平台Wedata之数仓建设实践

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

原创
作者头像
张志刚
修改2022-05-09 11:04:22
2.7K0
修改2022-05-09 11:04:22
举报
文章被收录于专栏:泛互云原生

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.myqcloud.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的数据湖任务开发架构,彻底摆脱以上运维压力,实现免运维的数据开发能力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景介绍
    • 1.1 概述
      • 1.2 数据仓库设计
      • 2 环境准备
        • 2.1 私有网络创建
          • 2.2 基础平台创建
            • 2.3 创建云数据库MySQL
              • 2.4 调度执行组配置
                • 2.5 开通Wedata服务
                  • 2.6 开通Wedata项目空间
                    • 2.6.1 创建项目
                    • 2.6.2 添加mysql数据源
                    • 2.6.3 添加执行资源组
                    • 2.6.4 存算引擎配置
                    • 2.6.5 成员管理
                • 3 数据开发
                  • 3.1 表结构创建
                    • 3.2 数仓分层任务编排
                      • 3.3 数据集成任务开发
                        • 3.4 数据计算任务开发
                        • 4 任务运维
                        • 5 总结
                        相关产品与服务
                        数据开发治理平台 WeData
                        数据开发治理平台 WeData(以下简称 WeData)是位于云端的一站式数据开发治理平台,融合了包含数据集成、数据开发、任务运维的全链路DataOps数据开发能力,以及数据地图、数据质量、数据安全等一系列数据治理和运营能力,帮助企业在数据构建和应用的过程中实现降本增效,数据价值最大化。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档