https://blog.csdn.net/lingeio/article/details/95169900 感谢作者心有余力
使用任务调度框架Oozie调度业务数仓全流程。

准备工作

  1. 数仓流程说明
    业务数仓整个流程大致分为六个阶段,每个阶段都依赖于上阶段的计算结果,所以必须要上阶段执行完成再执行下一阶段: ``` 大致流程: MySQL -> HDFS -> ODS -> DWD -> DWS -> ADS -> MySQL

具体流程:

  1. MySQL业务通过Sqoop数据导入HDFS
  2. 将HDFS数据导入Hive数仓ODS层
  3. 将ODS数据简单清洗写入DWD层
  4. 将DWD数据轻度汇总写入DWS层宽表
  5. 将DWS层数据统计结果写入ADS层
  6. 将ADS层数据通过Sqoop导出到MySQL汇总表 ```
  7. 脚本提前已经把各部分任务写成shell脚本。
    image.png
    对应流程:sqoop_import -> ods_db -> dwd_db -> dws_db -> ads_db -> sqoop_export
    上传shell脚本到HDFS,自己指定位置即可
    hdfs dfs -copyFromLocal /bin/oozie/* /user/bin/oozie/

  8. JDBC ``` 因为调度中需要使用sqoop导入导出MySQL,所以先将MySQL驱动mysql-connector-java-5.1.47.jar复制到hadoop、sqoop、 以及Oozie的HDFS目录下sqoop中,lib_20181213173721,这个是Oozie搭建时生成,各不相同

cp jdbc.jar /opt/cloudera/parcels/CDH/lib/hadoop/lib cp jdbc.jar /opt/cloudera/parcels/CDH/lib/sqoop/lib sudo -uhdfs hadoop fs -put jdbc.jar /user/oozie/share/lib/lib_20181213173721/sqoop ```

创建工作流

1. 创建工作流

image.png

2. 编辑工作流

选择Action操作,修改好调度任务名和描述。大多数情况下,我们会把要执行的任务写成脚本执行。这里就选择shell,直接把要执行的任务类型拖拽到下面指定的区域。
image.png

3. 上传脚本

从第一步开始,sqoop_import.sh
image.png
image.png
image.png

4. 添加文件

就是刚才选择的脚本
image.png

5. 填写参数

脚本里需要的参数,尽量设置为动态自动获取,如 ${date}
第一步的参数是所有文件和当天日期,后面的只需要日期,最后一步是导出所有结果,相应填入
image.png

6. 依次添加后续任务

添加文件和设置相应参数
image.png

7. 保存,或者运行

image.png

8. 状态提示

运行后会有状态提示页面,可以看到任务进度
image.png

9. 其他

查看已经存在的调度任务
image.png
image.png
image.png
点击调度任务的页面情况
image.png

定时调度

1. 创建定时计划(schedule)

image.png

2. 修改属性

修改定时任务名和描述
image.png

3. 添加任务

添加需要定时调度的任务
image.png

4. 设置调度时间

image.png
image.png

5. Crontab高级语法模式

image.png

6. 参数设置

image.png
sm-workflow的参数都是写死的,没有设置动态,这里的下拉列表就不会有可选项。
image.png
设置参数
将sm-workflow的日期修改为 ${do_date},保存
image.png
进入定时计划sm-dw中,会看到有参数 do_date
image.png
image.png
填入相应参数,前一天日期
${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, ‘DAY’), ‘yyyyMMdd’)}
image.png
Oozie常用系统常量https://blog.csdn.net/lingeio/article/details/95323579

当然,也可以通过这样将参数传入workflow任务中,代码或者shell中需要的参数。
如,修改sm-workflow 中的 sqoop_import.sh,添加一个参数 ${num}。
编辑文件(需要登陆Hue的用户有对HDFS操作的权限),修改shell中的一个值为参数,保存。

image.png
image.png
image.png
在workflow中,编辑添加参数 ${num} ,或者num=${num} 保存。
image.png
进入schedule中,可以看到添加的参数,编辑输入相应参数即可。
image.png

Bundle

Bundle统一管理所有定时调度,阶段划分:Bundle > Schedule > workflow
image.png
image.png
image.png