Kettle-ManagerKettle 的 Web 端管理工具
平台简介
基于kettle的数据流转平台,依托kettle的灵活性及丰富的组件生态,能灵活的实现各类复杂需求,本平台可以单纯作为一个kettle的调度平台,也可以作为一个灵活的数据流转平台,二者将是最完美的组合。
平台创建的作业最终都是生成kettle作业,有特殊需求可以在kettle中直接进行修改以满足特殊需求,灵活才是长期存活的基础。
其他非常规作业可以直接在kettle中设计后在本平台内进行统一调度管理。
本平台足够灵活,所谓有容乃大如是也,自身虽然已经足够强大,但仍具备不可比拟的包容性,任何外部优秀的东西都可以集成进来,因此本平台也是很完美的所有后台任务的统一管理平台。
kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用都是使用客户端操作管理,但问题是当投入生产环境使用时,动辄几百上千个job需要管理,这时在使用客户端管理已经很难完成了。我所知道的解决方案有用命令行的调用的,操作极其麻烦,难以维护,总之还是很难用啦,还有就是开发web端管理工具,kettle自带了一个web端管理工具,界面极其简陋不说,还很难用,基本无法投入生产环境使用,其他没留意到还有没有较好对众多job进行管理的工具。
基于以上情况和我多年的kettle定制开发与使用经验。我设计并开发了数据大师,在kettle的基础上,将常用的场景迁移到web端,使运维人员甚至普通客户都能实现常见需求,我的目标是web端能实现70%的需求,剩余一些特殊少见的需求则由数据人员在kettle中直接实现,然后统一在本平台调度管理。
本平台的具体优势请参考“平台特性”章节。
平台界面
平台特性
- 【新】支持在一个调度中同时调度多个资源库的任务,也支持一个资源库的任务在多个调度节点上执行,同时支持在一个管理系统中同时管理多个调度节点。
- 新增支持设置作业启动时执行,支持 cron 定时,使定时设置更加灵活。
- 平台内支持创建:数据流转作业(暂时取消,设计有点复杂不太实用,目前有数据同步任务)、KM 作业、javascript 作业、shell 作业、sql 作业。
- 本平台能自动检测作业运行异常信息,便于平台运行状况跟踪,当作业量很大时,很难逐个作业查看运行情况。
- 本平台提供基础的运行日志,作为作业运行情况的回溯依据,便于事后问题排查。
- 平台提供设计好的数据流转日志功能,更接近业务层,用户可以根据需要使用。
- 平台提供转换管理,当前转换管理只提供查看、删除、查看转换图功能,将来根据需要提供导入功能。
- 数据库管理是管理 kettle 中配置的数据库信息,若是完全深入采用数据世界平台,那么这里的数据库都将采用 jndi 的形式关联使用数据世界中的数据载体管理,一处配置全平台通用,若是直接在 kettle 中配置的数据库,此处可以进行密码解密。
一些说明
1. 本平台2015年投入使用,我们公司已经在多地部署使用,开源以来,外部也有大量用户,所有基础的作业调度功能已经稳定,新添加的功能基本属于锦上添花,有些小bug也难免,欢迎反馈,让我们一起让他变得更好。
2. 本系统是基于数据库资源库设计的,暂时不考虑支持文件资源库,当前支持oracle和mysql。
3. 关于kettle版本的问题,当前版本开发使用的是8.3版,之前版本采用5.4开发,目前建议使用8.3版
关键信息
- 项目文档地址
- 部署文档
- 项目源码
- https://gitee.com/majinju/kettle-manager.git 之前的 kettle-manager 仓库,针对数据大师项目的 web 项目。
- https://gitee.com/majinju/myutils-kettle.git 我的工具集 kettle 相关子项目
- 有些依赖没有上传到 maven 仓库,建议直接采用项目中 doc/lib 中的依赖包。
- 数据库脚本请从部署包中获取。
- 问题反馈邮箱:jinjuma@yeah.net。
- 项目交流 qq 群:320302530 (已满勿加),交流 2 群:142104962 (已满勿加),交流 3 群:142105082。
常见问题
作业添加
1. 本平台是直接读取你数据库资源的v_job视图,这个视图包装了一下r_job表,你可以通过修改视图达到隐藏一些作业的目的。
2. R_job是kettle资源库的系统表,只要你连接这个资源库设计的作业,都会记录在这个表中,所以你只需按照平常的习惯,连接与本平台配置的相同的资源库设计作业即可,因为读取的是同一张表,所以不需要额外的操作,直接就可以在本平台中看到你的作业并进行调度。
3. 有外部作业需要添加到本平台,你只需直接使用kettle的Spoon工具,连接同一个资源库进行导入操作,这个数据人员都很熟悉。
4. 我觉得没必要在页面支持作业导入功能,不知是否有这样的需求,这个暂时不开发。
查看转换
1. 关于这个问题,我一直很困惑,为毛要直接查询运行转换,作业和转换可谓各司其职,我认为要运行转换就需要在其上包装一个作业,不管是否有其他流程依赖的需求。
2. 当前新版本已经提供转换查看功能,支持直接在调度中将转换包装为作业进行运行。
注意事项
1. 不要使用系统自带的记事本编辑配置文件,否则会导致系统无法正常读取你修改的配置文件,可以使用editpuls或notepad++。当出现奇葩问题时要想起这个提示。
2. 相关文件最好不要存放在有空格或中文的目录下,避免不必要的麻烦。
后续计划
- 任务管理在设置定时时可能需要人为分散定时,考虑生成时间 - 运行任务数的分析图辅助进行分散定时。
- 权限管理,不同用户看到自己的作业,管理员看所有作业。
- 分布式、集群支持,考虑增加容灾机制。
- 根据日志加入一些统计功能