Kettle调度和监控的理论知识介绍,具体内容如下:
1 调度
在这个指导文档中,主介绍两种类型Kettle任务和转换的调度方式。
Ø 操作系统级别的调度器:对于ETL来说,调度不是独一无二的。这是操作系统能够提供标准调度的一般性需要,如UNIX衍生系统上的Cron以及Windows系统上的任务调度器。这些调度器能够拥戴调度Kettle命令行程序来运行任务和转换。
Ø Quartz调度器构建成Pentalo BI服务器:Kettle作为Pentalo BI栈的一部分,许多Kettle 用户可能也使用或者熟悉Pentalo BI服务器。调度器构建成Pentalo BI服务器能够被用来运行一系列执行Kettle任务和转换工作。
所有主要操作系统提供了构建调度任务的特性,这些被任务能够被作为系统级别的调度器来调度。下面,主要来介绍如何使用命令行来运行Kettle 任务和转换。
1.1 命令行执行Kettle任务和转换
使用Kitchen和Pan命令行工具能够启动Kettle任务和转换。Pan和Kettle是环绕数据集成引擎的轻量级封装器(lightweight wrappers)。Kitchen 和 Pan是使用shell scripts运行任务和转换的,比如在Windows环境中Kitchen.bat 和Pan.bat。在Linux环境下,对应的运行脚本是Kitchen.sh 和Pan.sh。
一般命令行参数能够按如下分类:
- 指定job 和transform
- 控制日志
- 指定仓库(repository)
- 列出有效的仓库和它们的内容。
Kettle 和Pan一般命令行参数列表
名称 |
值 |
介绍 |
norep |
|
不连接到任何一个repository,避免自动登录很有用。 |
rep |
仓库名称 |
连接到指定名称的仓库 |
user |
仓库的用户名 |
指定用户名来连接到指定的仓库 |
pass |
仓库的密码 |
使用指定的密码来连接到指定的仓库 |
listrep |
|
显示有效的仓库 |
dir |
路径 |
指定仓库的路径 |
listdir |
|
列出有效的仓库job/transform路径 |
file |
文件名 |
指定存储了job或者transform的文件 |
level |
日志级别 |
Error | Nothing |Basic | Detailed |Debug | Rowlevel |
logfile |
日志的文件名 |
指定日志的文件名称 |
version |
|
显示版本,校订号和工具的构建日期 |
注意:dir and listdir parameters are dependent upon the tool. For Kitchen,theseparameters refer to the repositories’ job directories, or totransformation directories in the case of Pan.
Kettle命令行参数指定
名称 |
值 |
介绍 |
job |
Job名称 |
指定存储在仓库中job的名称 |
listjobs |
|
通过dir参数列出存在于仓库中有效jobs
|
Kettle命令行参数的代码实例。
#
# list all available parameters
#
kettle-home> ./kitchen.sh
#
# run the job stored in
# /home/foo/daily_load.kjb
#
kettle-home> ./kitchen.sh \
> /file:/home/foo/daily_load.kjb
#
# run the daily_load job from the
# repository named pdirepo
#
kettle-home> ./kitchen.sh/rep:pdirepo \
> /user:admin \
> /pass:admin \
> /dir://job:daily_load.kjb
1.2 基于UNIX系统:cron
对于UNIX派生的系统中,cron功能是很好的job调度器。你没有必要安装其它任何工具使其有效运行。
Cron字符串定义有5个日期/时间域值,以空白空间分割,从左到右,日期时间域如下:
l minutes: 0–59
l hours: 0–23
l day of month: 1–31
l month: 1–12
l day of week: 0–6, where 0 denotesSunday, 1 Monday, and so on
举例说明:
0 1 ? * 5run_kettle_weekly_invoices.sh
上面的例子,表示“每天的星期五的一点”运行这个kettle脚本。
1.3 使用Pentaho 构建Scheduler
需要使用Pentaho BI Server, 更多的信息,参考web资源
2 监控
2.1 邮件通知
Kettle中有两种方式监控job或者transform的运行情况。每个job中的transform都可以配置对应的日志(如下图)。
具体的配置请参考说明文档。邮件组件相对而言,更简单,这里就不详细
2.2 日志表
大部分Kettle组件能够输出以文本行的形式的日子信息.例如,当一个步骤完成, 一行信息显示了这个事件。
2010/06/1810:36:29 - Step name.0 -Finished processing (I=0, O=0, R=0, W=25, U=0, E=0)
你会发现日志是由以下几部分组成:
Ø 日期和时间
Ø 步骤名称,显示在日期和时间之后
Ø 日志文本
Ø 这些部分已空白、破折号和横线分割
下面列举Kettle的日子级别:
Rowlevel: 答应所有在Kettle中的有效日志,包括在大量复杂步骤的信息;
Debugging: 产生大量的日志信息,主要用于调试,但是不是在行级别(row level);
Detailed:允许用户看到比基本日志级别更富比较性的信息,额外的信息实例包括SQL查询语句和一般的DDL都会产生。
Basic:默认的日子级别;仅仅打印这些能够反映在步骤或者任务条目上的信息。
Minimal:通知你仅仅关于一个任务或者转化的信息。
Errorlogging only: 如果那儿有一个错误,显示错误消息;否则,什么都不显示。
Nothingat all: 即使当有错误存在的时候,不要产生任何日志。
转换日志表
在转换日志表级别,有四个日志表能够被更新。
l 转换日志表
l 步骤日志表
l 性能日志表
l 日志管道表
在转换的结尾,一个转换过程的默认行为就是写日志到日志表里。
转换日志表
点击右键,在弹出框中选择。弹出转换过程的属性设置。
设置内容如下图所示:
Transformation 日志表属性设置
在左边的面板,你看到不同的你能够定义的日子表。下面有具体参数描述:
- Log Connection: 存储目标日志表的数据库名称,从选择下滑键中,你可以选择存在的数据库定义的名称。
- Log table schema: 包含日志表的数据库体系结构。
- Log table name: 日志表的名称
- Logging interval (seconds): 在转换运行过程中,根据这个选择参数值间歇地写信息到日志表中。如果你没有指定这个参数值,日志表将仅仅只能在转换开始和完成时被更新。
- Log record timeout (in days):在它插入一个新值之前,根据这个参数值来来删除日志表中老的记录。
- Log size limit in lines: 对于不支持大字符字段的数据库,日志限定了这个文本的大小。
依次类推,设置步骤日志表、性能日志表、日志管道表。另外,同转换日志表相似,你也可以设置任务日志表,设置方式基本一致。