数仓项目——在线教育平台离线数据仓库效果展示

背景:基于阿里云的3台ECS云服务器搭建了在线教育平台的离线数据仓库,本文仅用于记录最终的效果,从0到1的实现过程后续进行补充,由于抢占式实例的云服务器按量进行每小时计费,为了避免持续的收费,所以我急于展示结果,也就有了此文(数仓已经搭建完成,我自然可以停止它)。

1 阿里云服务器的启动

进入控制台后,选择「启动」待启动的三台云服务器,启动时私有IP地址不会发生变化,而公有IP地址会发生变化,此外,我选用的服务器配置是3台2核8G、硬盘大小为40GB的服务器,如下(当然IP地址遮住了哈):
数仓项目——在线教育平台离线数据仓库效果展示_第1张图片
随后,需要在终端(Mac OS)用命令去本地环境下修改三台服务器的公有IP地址,命令为sudo vim /etc/hosts

2 集群的启动

利用SecureCRT远程连接3台云服务器,依次启动zookeeper、Hadoop、metastore、hiveserver2,随后利用Hue进行可视化展示:

  • zookeeper的启动,用于高可用环境下NameNode的故障处理,三台云服务器都需要启动,如下:
    数仓项目——在线教育平台离线数据仓库效果展示_第2张图片
  • Hadoop集群的启动,由于我搭建的是Hadoop3.1.3版本的高可用集群,所以可以配置3个NameNode,这个和Hadoop2.x版本有区别,如下:
    数仓项目——在线教育平台离线数据仓库效果展示_第3张图片
  • metastore、hiveserver2的启动,为了使界面可以继续使用,采用后台启动的方式,如下:
    数仓项目——在线教育平台离线数据仓库效果展示_第4张图片
  • 最后,启动Hue,用于更清晰地展示数据仓库,如下:

3 Web UI的展示

3.1 Browsing HDFS

首先从HDFS的可视化界面开始看,Hadoop3.1.3版本中的查看HDFS文件系统的端口号为9870。education101、education102、education103三台机器中有一台处于是active状态、两台处于standby状态,要想看到文件系统保存的数据形式,需要进入active状态的服务器中查看,如下:

从上图可以看出,我构建了4层数据仓库,分别为ods、dwd、dws、ads层,为了方便起见,此处我省略了依靠Flume定时采集数据的过程,改用hdfs dfs -put的方式直接上传,由于路径配置的不同,所以才出现了ods与其他三层处于不同的路径下。

3.2 Hue

在「2 集群的启动」中的eudcation102上已经成功启动了Hue的相关进程,随后打开education102:8000页面,利用用户名admin和密码admin登录进Hue可视化系统的界面如下:
数仓项目——在线教育平台离线数据仓库效果展示_第5张图片
接下来分别在dwd、dws、ads层随机选取几张表,进行数据的展示,需要注意的是,整个数据仓库存储了三大模块,分别为「用户注册模块」、「用户做题模块」、「售课模块」,后续补充详情,如下:



dwd选取的是一张经过ETL后的表、dws层选取的经过维度退化后的一张轻度聚合表,ads层随机选的那张表的计算逻辑为“统计每份试卷不同分数段的用户id,分数段的切分规则为0-20、20-40、40-60、60-80、80-100”,从上图能够看出,每一层的表数量很多,但是总体思路很容易理解,如下:

  • ods层数据的采集(用直接上传的方式模拟Flume+Kafka)
  • ods层数据导入dwd层(JSON数据转为对应的Hive逻辑表中的数据,这里的数据经历了ETL清洗)
  • dwd层数据转为dws层(拉链表的实现、表维度退化和宽表的生成)
  • dws层数据计算至ads层(根据不同的业务规则,实现指标的计算)

3.3 数据导入MySQL中

为了方便可视化系统的搭建,需要将ads层的数据导入支持OLAP的关系型数据库中进行存储和管理,本部分选用阿里的DataX做数据的导出,关系型数据库选用MySQL,这个过程主要是要理解一张表对应一个JSON配置文件,不细说,结果如下:

写在最后:整个数据仓库支持定时更新,采用AirFlow或Azkaban调度即可,整体过程还缺最后一个可视化系统,可视化系统采用的是ads层导出到MySQL中的数据,后续直接补充实现逻辑即可。

你可能感兴趣的:(项目,数据仓库,hadoop,hue集群,mysql,zookeeper)