写点什么

TASKCTL ETL 作业类型的插件与维护管理

作者:TASKCTL
  • 2022 年 4 月 15 日
  • 本文字数:1654 字

    阅读完需:约 5 分钟

TASKCTL ETL作业类型的插件与维护管理

什么是作业驱动插件

首先,我们通过一个示意图来了解 TASKCTL 对各种作业类型的调用过程,并理解什么是插件,以及插件的作用。

整个过程的解释如下:

  1. 调度核心发起一个作业的调度请求,并将 A 类型作业 A_JOB1 的完成描述信息传递出去。

  2. 在具体的执行节点代理端(哪个执行代理,由 A_JOB1 的 agentid 属性决定),一个叫 ctlcpg 的组件会接收第一步 ctlfdc 发出执行指令信息,并立即调用相应的插件程序(一般情况下,插件程序就是一个 shell 脚本),同时,将完整的 A_JOB1 描述信息传递到该插件。

  3. A 插件程序通过统一入口参数接收完整的作业信息,解析该信息,并执行具体作业程序 A_JOB1。

  4. A_JOB1 作业程序根据插件传入的参数,做具体的业务处理。

由上可知,插件本质就是一个脚本程序(TASKCTL 的插件不仅限于 shell 脚本,也可以是 C 程序),它根据统一参数接口获取信息,并解析出具体的作业程序名称、作业参数以及相应的环境信息等,同时,根据这些信息运行相应的作业。

为什么说 TASKCTL 插件很简单

试想一下,如果给足够的信息,我们一定可以快速通过一个 shell 脚本运行一个具体的作业。而有了驱动插件程序,只需简单的配置,我们就可以使用指定的作业类型。

插件的核心——统一的接口,它是怎么描述各种作业的完整信息

插件程序的 6 个统一入口参数,以及与作业定义属性的一一对应关系

  1. ​每一种作业类型的插件都会通过插件脚本传入 6 个参数。

  2. 通过对应关系,系统自动将作业定义的 progname、para、exppara、hostuser 四个属性,完整地传入相应的插件程序。

  3. progname、para、exppara、hostuser 具体表达什么,具体格式规则是什么,这就是插件与 Designer 应用之间的约定。总之,插件按具体约定规则,通过这四个属性,可以解析出描述一个作业的完整信息,并且,插件可以根据这些完整的信息,运行具体的作业程序即可。

  4. hostuser,是用于无代理执行的属性。如果该作业类型不提供无代理执行机制,该接口就不用;同时,在作业定义时,也不用定义 hostuser 属性。


作业日志统一获取接口

作业日志查看,是调度的重要的功能之一。

如果自己开发驱动插件,并自己定义一种相应的作业类型,要怎样处理,才可以在 taskctl 中查看作业的具体运行日志?

  1. 凡是通过插件运行的程序,只要是标屏显示的日志,TASKCTL 即可自动捕获。

  2. 如果你的具体作业程序未将日志标屏输出,那么,在插件中,就需尽最大的可能,获取日志,并将该信息输出到屏幕。否则,在 TASKCTL 中,就无法查看相关作业类型的作业运行日志。


插件脚本举例

在 TASKCTL 产品服务端,自身带了很多作业类型以及相应的插件驱动程序,我们只要简单分析一下这些驱动程序,即可理解。


在此,给大家推荐一下几个具有代表性作业驱动程序。

1 python 【python 作业类型】

插件路径:

$TASKCTLDIR/src/plugin/python/shell/cprunpython.sh
复制代码


2 ktrjob 【kettle 转换类型】

插件路径:

$TASKCTLDIR/src/plugin/ktrjob/shell/cprun ktrjob.sh
复制代码


3 oraproc 【oracle 存储过程】

插件路径:

$TASKCTLDIR/src/plugin/oraproc/shell/cprun oraproc.sh
复制代码


插件配置-定义作业类型

插件开发完后,需要部署插件、定义作业类型等操作

部署驱动插件

一般情况下,插件就是一个 shell 程序。编写完后,我们需要将插件程序部署到TASKCTL服务节点以及相应代理节点。


理论上,我们可以将插件部署到 TASKCTL 安装用户的任意目录。但为了管理方便,我们还是遵循 TASKCTL 的一些管理规范。TASKCTL 自身带了很多作业类型及其驱动插件,统一存放到 $TASKCTLDIR/src/plugin 下,并按每一种作业类型建立子目录存放。

​配置作业类型

用 admin 用户登录桌面客户端 admin 组件, 进入以下界面即可配置。

关键定义项说明:

  1. 类型名程,为自己的作业类型改一个名称,比如:mysql 等。

  2. 驱动定义,执行方式选择 shell, 执行程序填写您插件程序部署的全路径。停止方式选 command(如果您自定义一个停止插件也可以)

  3. 高级定义,一般采用缺省即可。

保存完毕后,您重新打开 Designer,就可以看到您所添加的作业类型。


Designer 中使用新建作业类型 mysql

1 工具箱中出现新的作业类型 mysql

2 代码中可以输入 mysql 作业类型

3 流程图中出现 mysql 作业节点

产品地址:www.taskctl.com

用户头像

TASKCTL

关注

公众号:【TASKCTL】官方免费直接授权使用 2020.12.23 加入

一款B/S架构的轻量级ETL调度处理工具;支持各类脚本任务程序和扩展;具备可视化图形拖拽设计界面以及可视化任务管理、计划调度、实时监控、消息预警和日志分析;有效弥补了传统ETL工具在调度管理和监控分析方面不足

评论

发布
暂无评论
TASKCTL ETL作业类型的插件与维护管理_kettle_TASKCTL_InfoQ写作平台