Kettle之Carte最佳实践

前言

kettle支持Carte服务级部署模式,即服务器后台会跑一个常驻Carte程序,job/trans都运行在这个服务里。这篇文章主要讲述carte从配置、任务提交到监控的实践。

0x01 介绍

Kettle有多种运行模式,最简单易用的是直接运行Kitchen/Pan应用程序来执行job/transformations,但每次运行任务时,kitchen/pan都要启动一次。而应用的启动是有代价的,并且如果服务器上同时跑了很多Kitchen/Pan程序,也不利于资源分配和监控。

Carte是一个轻量级的web服务,允许远程请求HTTP进行监控、启动、停止在Carte服务上运行的job和trans。运行Carte的服务器在kettle术语里称为slave server。

0x02 配置&启动

Kettle的下载安装就不再赘述,carte的配置文件主要用来配置端口、安全认证等。比如配置文件pwd/carte-config-master.xml,配置项:

port:绑定的端口号

hostname: 绑定的IP

username/password:认证用户

启动命令:nohup ./carte.sh pwd/carte-config-master.xml2>&1 &

web地址:http://ip:9080,会提示输入用户名密码,可能Chrome不会有弹出框,多换个浏览器试试。

在carte上跑的任务的日志统一输出到了carte日志里,不能为每个任务设置日志。

0x03 调用

远程提交job/trans时,同样支持资料库提交任务,carte服务器上需要提前配置好资料库。执行job的api是kettle/executeJob,通过curl提交命令:

curl -u "cluster:cluster" "http://dev-bi-cdh05:9080/kettle/executeJob/?rep=rep-test01&job=/test01_job&P1=test"

-u :指定用户名和密码

rep参数:指定配置的资料库

job参数:执行的job

P1参数:kettle的参数变量P1的值

访问web url可以看每个任务的运行状态、查看任务的运行日志:

0x04 监控

上述配置jmx绑定9180端口,为了调试方便,禁用安全认证。开启JMX后,通过第三方服务就能很便捷的对carte应用和服务器各个指标进行监控,如carte内存使用情况、cpu占用率、GC、服务器物理内存等。

0x05 分布式

独立部署的多台slave server,可以组成一个类似分布式的架构,各个slave进行抢占式执行任务。实现逻辑:同一时刻多个slave同时提交同一个任务,在任务内加唯一排他锁校验。举个例子,slave1和slave2同时提交任务A,在A中先判断有没有实际开始执行(比如查表中记录),如果没有执行就往数据库写一条记录,任务继续执行;如果判断A任务已经开始执行(比如从表中查到相关记录),任务就直接结束,不再处理后续业务。

这个框架设计重点在唯一排他锁校验,借助数据库表的主键特性也能实现这个功能: 假如任务id是表的主键,任务开始执行时往表里插入id,后来的slave再插入这个任务id时就会异常,就不用再处理后面业务。

缺点:从任务角度看,本质上一个任务还是在一个服务上跑,这样在执行期间就存在单点问题,如果执行任务的slave宕掉,之上的任务不能进行故障转移

优点:slave之间彼此独立,互不影响,如果单台slave宕机,不影响后续任务调度,从整个集群来看是高可用的。而且多个任务平均分布到多台slave上,也能达到负载均衡的效果

0x06 集群

多台slave server可以组成一个集群,集群内指定一个节点充当master角色,其他节点是slave角色,kettle集群采用主从结构,由master统一提交任务。后续再写文章细聊集群。

本文为原创,欢迎分享到朋友圈。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G0864G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券