Kettle Carte 组件使用示例:将作业分发倒多台服务器并行执行
Kettle Carte 使用示例
Kettle Carte 是 Pentaho Data Integration(Kettle)的核心组件之一,主要作为轻量级 HTTP 服务器,用于远程执行、监控和管理 Kettle 作业(Job)与转换(Trans)。以下是其核心功能、使用场景及具体示例:
一、Carte 的核心作用
-
分布式任务执行
支持将作业/转换分发到多台服务器(Slave Server)并行执行,适用于大数据量场景下的负载均衡,通过集群模式提升处理效率。 -
远程任务调度
提供 HTTP API 触发任务执行,无需本地运行 Kettle 客户端,支持参数化调用,适合集成到自动化流程或第三方系统。 -
资源隔离与权限管理
可配置独立资源库(文件或数据库资源库),通过 XML 文件定义端口、IP 绑定及用户认证(默认用户cluster/cluster
)。 -
状态监控与日志管理
提供 Web 界面实时查看任务状态、执行日志及资源占用情况,支持 JMX 监控 JVM 性能指标。
二、Carte 使用示例
1. 启动 Carte 服务
-
单节点启动
指定 IP 和端口启动服务:# Linux ./carte.sh 192.168.1.100 8080 # Windows Carte.bat 192.168.1.100 8080
-
配置文件启动
使用 XML 配置文件定义高级参数(如集群配置、资源库路径):<slave_config> <hostname>192.168.1.100hostname> <port>8080port> <username>clusterusername> <password>clusterpassword> <repository> <name>prod-reponame> <username>adminusername> <password>admin123password> repository> slave_config>
启动命令:
./carte.sh pwd/carte-config-master.xml
2. 远程调用任务 API
-
执行作业(Job)
通过executeJob
接口触发任务并传递参数:curl -u "cluster:cluster" "http://192.168.1.100:8080/kettle/executeJob/?rep=prod-repo&job=/etl/daily_sales&P1=20231001"
-
执行转换(Trans)
通过executeTrans
接口调用转换文件:curl -u "cluster:cluster" "http://192.168.1.100:8080/kettle/executeTrans/?trans=/data/transformations/data_clean.ktr&user=admin"
3. 集群配置示例
- 静态集群配置
在 XML 中定义主节点和从节点:
任务启动后会自动分发到从节点执行。<slave_config> <masters> <slaveserver> <name>master-nodename> <hostname>192.168.1.100hostname> <port>8080port> <master>Ymaster> slaveserver> masters> <slaveserver> <name>slave-node1name> <hostname>192.168.1.101hostname> <port>8081port> <get_properties_from_master>master-nodeget_properties_from_master> slaveserver> slave_config>
4. 日志与监控
-
查看任务状态
访问 Web 界面http://192.168.1.100:8080/kettle/status/
,输入认证信息后可查看运行中的任务及日志。 -
JMX 监控
修改启动脚本启用 JMX:# 在 carte.sh 中添加 JVM 参数 OPT="$OPT -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9180 -Dcom.sun.management.jmxremote.authenticate=false"
使用 JConsole 或 Prometheus 监控 JVM 指标。