kettle web化
背景
在工作中,通过kettle这款ETL产品进行数据处理时,是通过kitchen命令调用kettle,会启动一个jvm程序处理。在运行时,如果几个任务同时跑,那么会占用比较高的内存。而且每次启动kettle时,会先初始化运行环境。
因此,通过Java API调用kettle核心代码,在程序启动时只初始化一次运行环境,后续任务都提交到任务线程池处理,不需要每个任务都启动jvm实例,能单机的提高并发。
项目地址
特点
- Java API调用Kettle核心代码
- 任务并行执行
- Web管理任务
展示
界面用Bootstrap3和jQuery简单撸了下。
dashboard
查看任务执行情况
任务
定义任务(目前需要指定kjb的路径),执行任务
任务历史
查看历史任务,看日志
计划任务
通过定义cron表达式,计划执行任务
已实现
- Java API调用Kettle核心代码(基于Kettle 7.1)
- kjb调用ktr
- Shell
- MySQL
- Oracle
- Hive
- JS代码
- Java代码
- Kettle其他功能暂未测试,目前测试覆盖的功能如下
- 任务并行执行
- Web管理任务
- 任务监控dashboard
- 任务组(分组管理)
- 任务(任务定义,比如kjb路径)
- 任务变量(将任务变量传入kjb,可在kjb中、或者ktr中获取到)
- 任务历史(历史任务,任务执行日志)
- 计划任务(定时调度)
暂未实现
- Web管理任务
- 任务失败预警
- 任务失败重试
- 更美观、友好的界面
- 分布式任务执行、节点服务发现
说明
该系统暂未投入生产使用,想尝试的道友不妨在测试环境试试水,或者等发布稳定版。
快速开始
本项目为Spring Boot标准项目,clone到本地修改application.yml中的数据源配置即可。
项目结构
Spring Boot标准结构,利于二次开发。
运行
- 导入IDE,运行main方法
- 执行
mvn clean spring-boot:run
- 打包
mvn package
,通过java -jar target/kettle-web-{version}.jar
运行
关于开源
不足之处,请轻喷。欢迎志同道合的道友一起完善,谢谢~