离线数仓—全流程调度实现
前言
前面学习了工作流调度工具DolphinScheduler,下面对数仓项目进行应用。
一、数据准备
1.用户行为日志
1)启动日志采集通道,包括:Flume、Kafka等
2)修改日志模拟器配置文件,修改生成的日志时间:mock.date: "2020-06-15"
2.业务数据
1)修改Maxwell配置文件config.properties,保证Maxwell的binlog时间和业务数据库的数据时间一致:mock_date=2020-06-15
2)启动增量表采集通道,包括:Maxwell、Flume、Kafka等
3)修改生成业务数据的jar包对应的配置文件,保证生成的数据的时间:mock.date=2020-06-15
4)执行业务数据生成的jar包:java -jar gmall2020-mock-db-2021-10-10.jar
二、工作流调度实操
由于DolphinScheduler集群模式启动进程较多,对虚拟机内存要求较高。故下面提供两种方式,可根据虚拟机内存情况进行选择。
1.DolphinScheduler集群模式
使用集群模式,最好把一些用不到的进程全部关闭,防止内存不够用而导致运行失败。
1.1启动和登录DolphinScheduler
1)启动DolphinScheduler:bin/start-all.sh
2)使用普通用户登录:

1.2上传脚本
向DolphinScheduler资源中心上传工作流所需脚本
如果先创建工作流,那么在定义工作单元的时候没办法选择要执行的外部的脚本,所以先把要用到的脚本上传上去。
1)创建文件夹

2)上传工作流所需脚本
将工作流所需脚本上传到资源中心scripts路径下,结果如下:

1.3组件分发
向DolphinScheduler的WorkerServer节点分发脚本依赖的组件。
因为之前没有定义WorkerServer的工作组,所以默认都在default组,但是执行脚本所需要的组件Hive、Spark和DataX只在Hadoop102上面有,如果将任务分发到了Hadoop103和Hadoop104上,那么会找不到相关组件而报错,所以要进行分发,确保每个WorkerServer节点都有脚本所依赖的组件。
[atguigu@hadoop102 ~]$ xsync /opt/module/hive/
[atguigu@hadoop102 ~]$ xsync /opt/module/spark/
[atguigu@hadoop102 ~]$ xsync /opt/module/datax/
1.4配置环境变量并分发
修改DolphinScheduler环境变量配置文件并分发。
实际上,WorkerServer在执行相关脚本时要使用Hive、Spark和DataX,但它使用的这些组件的环境变量并不是服务器里面配的环境变量,而是DolphinScheduler里面的环境变量,所以我们要先在DolphinScheduler中配置这些组件的环境变量。
1)修改文件:vim /opt/module/dolphinscheduler/conf/env/dolphinscheduler_env.sh
2)修改内容如下:
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export HADOOP_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
export SPARK_HOME=/opt/module/spark
export SPARK_HOME2=/opt/soft/spark2
export PYTHON_HOME=/opt/soft/python
export JAVA_HOME=/opt/module/jdk1.8.0_212
export HIVE_HOME=/opt/module/hive
export FLINK_HOME=/opt/soft/flink
export DATAX_HOME=/opt/module/datax
export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH
上面export PATH中不需要修改SPARK_HOME1/bin这些,这些是为了可以直接在命令行调用这些目录下的命令。而上面部分的SPARK_HOME、HADOOP_HOME、DATAX_HOME等这些名字必须这样写。
在Hadoop102上修改完毕之后,将修改后的配置文件进行分发。
1.5 创建工作流
1)在一个项目中创建工作流

2)创建工作单元并配置
mysql_to_hdfs_full:

hdfs_to_ods_db:

hdfs_to_ods_log:

ods_to_dwd:

ods_to_dim:

dwd_to_dws_1d:

dws_1d_to_dws_nd:

dws_1d_to_dws_td:

dws_to_ads:

hdfs_to_mysql:

3)设置依赖关系
根据上篇文章中画出的节点间依赖关系,进行相关的设置。

4)保存工作流

在这里可以设置传参数的值,这里设置为了固定值。在定时调度时,全局参数值应该设置为$[yyyy-MM-dd-1]或者空值。
7)上线工作流

8)执行工作流

2.DolphinScheduler单机模式
2.1 启动DolphinScheduler
单机模式启动方式:bin/dolphinscheduler-daemon.sh start standalone-server
所有的服务都位于一个进程当中。
2.2 安全中心配置
由于DolphinScheduler的单机模式使用的是内置的ZK和数据库,故在集群模式下所做的相关配置在单机模式下并不可见,所以需要重新配置,必要的配置为创建租户和创建用户。
1)先用管理员账号登录,创建租户

2)创建用户

3)切换普通用户登录

4)创建项目

5)其余操作
其余操作和集群模式基本一致,不过不需要分发Hive、Spark和DataX,因为单机模式下都在Hadoop102下执行。
本文介绍了如何在离线数据仓库项目中使用DolphinScheduler进行工作流调度。内容包括数据准备,如用户行为日志和业务数据的采集;详细讲解了DolphinScheduler的集群和单机模式的启动、登录、脚本上传、组件分发、环境变量配置以及工作流创建和执行的步骤。
2202

被折叠的 条评论
为什么被折叠?



