Kettle之Carte最佳实践
Kettle之Carte最佳实践
dataTECH
发布时间: 18-03-0911:48
前言
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 监控
在web上可以看到所提交的job/trans运行状态、查看日志,但获得的信息还是太有限,既然carte运行在JVM上,就可以用JMX的方式监控服务。开启JMX,只需在carte.sh文件的OPT这一行末尾新增: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9180 -Dcom.sun.management.jmxremote.ssl=false
上述配置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统一提交任务。后续再写文章细聊集群。
Kettle之Carte最佳实践相关推荐
- Baymard Institute:基于UX的最佳实践的光荣的,循证的工具
重点 (Top highlight) I realized I wanted to write this piece when I mentioned the Baymard Institute to ...
- Kettle构建Hadoop ETL实践(六):数据转换与装载
目录 一.数据清洗 1. 处理"脏数据" 2. 数据清洗原则 3. 数据清洗实例 (1)身份证号码格式检查 (2)去除重复数据 (3)建立标准数据对照表 二.Hive简介 1 ...
- 编写高性能Java代码的最佳实践
编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...
- 提示和技巧:光线跟踪最佳实践
提示和技巧:光线跟踪最佳实践 Tips and Tricks: Ray Tracing Best Practices 本文介绍了在游戏和其他实时图形应用程序中实现光线跟踪的最佳实践.我们尽可能简短地介 ...
- SQL Server 最佳实践分析器使用小结
Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你 ...
- 使用ADO.NET 的最佳实践(zz)
数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004 | 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践, ...
- 何崚谈阿里巴巴前端性能优化最佳实践
转载:http://www.infoq.com/cn/interviews/hl-alibaba-front-end-performance-optimization 大家好,我现在在阿里巴巴园区采访 ...
- 卡片式设计的最佳实践分享
2017-02-17 三达不留点gpj CocoaChina 卡片本质上是一个简单的信息容器,信息量有限,但设计干净整洁.现如今,在保证界面具有优秀可用性的同时,卡片式的设计甚至成为了平衡界面美学的默 ...
- GMTC 大前端时代前端监控的最佳实践
摘要: 今天我分享的内容分成三个部分: 第一部分是"大前端时代前端监控新的变化", 讲述这些年来,前端监控一些新的视角以及最前沿的一些思考. 第二部分"前端监控的最佳实践 ...
最新文章
- AWS — AWS EKS
- spring的事务有几种方式
- copyMakeBorder函数
- Python的序列切片
- App Store审核被拒的23个理由
- .NET(c#) 移动APP开发平台 - Smobiler(1)
- 计算机考试上机安排,全国计算机等级考试模拟上机安排(最终版).doc
- 工科学生考研能选择计算机专业么,考研应该如何选择学校和专业
- html text align属性,CSS中的text-align属性怎么用
- windows远程桌面无法粘贴复制的问题解决方法
- Win32汇编——文件操作
- debug安装包安装在别人手机上闪退?
- ASP.net发布项目引用了C++DLL后页面提示找不到指定模块的异常
- Python | MD5爆破及Base64/Base32爆破解密脚本
- 十六进制颜色与RGB颜色对照表
- JavaScript 更新Dom节点
- SCI收录的IEEE期刊
- ubuntu14.10搭建dhcp服务器
- CANOpen协议详解(一):CANfestival源码分析
- 轻轻问一下,现在买笔记本电脑,送外接键盘是什么心态