2.4 作业调度
调度工具用来对作业进行调度,通过ETL工具创建的作业如果需要周期性运行,就需要使用调度工具来完成。调度工具是一个相对复杂的系统,尤其是在跨操作系统、跨应用平台的作业环境中更是如此。
在复杂的作业环境中,需要使用商用调度工具,目前国内使用较多的商用调度工具为Control-M。该工具是BMC Software提供的企业级集中作业调度管理解决方案,能够集中管理跨平台、跨应用的生产控制和调度过程,因此适用于大型复杂的ETL调度场景。
一些相对简单的调度场景可以不使用专门的调度工具实现。比如,如果公司的作业环境全部是Linux系统,则可以使用系统自带的crontab进行调度。
例如,图2-11中的作业配置为每日凌晨1点10分开始运行,那么可以将代码清单2-41的内容保存在文件run_trx_load_and_static.sh中。
代码清单 2-41
kitchen.sh -rep=kettle_rep_test -job="z06837. analysis.trx_load_and_static"
-dir=/ -user=admin -pass=admin -level=Basic
然后编辑Linux系统的crontab文件(通过crontab –e 命令),再在该文件中加入如代码清单2-42所示的内容。
代码清单 2-42
10 01 * * * /home/queziyang/shell/run_trx_load_and_static.sh
crontab会在每天凌晨1点10分运行指定的脚本run_trx_load_and_static.sh,这样便可以完成每日定时调度该ETL作业。显然,使用crontab调度作业,本身是没有作业日志记录的,这也是为什么需要遵循ETL作业日志规范的原因之一。