majinju / kettle-manager

专门为kettle这款优秀的ETL工具开发的web端管理工具。
GNU General Public License v2.0
603 stars 367 forks source link

平台简介

基于kettle的数据流转平台,依托kettle的灵活性及丰富的组件生态,能灵活的实现各类复杂需求,本平台可以单纯作为一个kettle的调度平台,也可以作为一个灵活的数据流转平台,二者将是最完美的组合。

平台创建的作业最终都是生成kettle作业,有特殊需求可以在kettle中直接进行修改以满足特殊需求,灵活才是长期存活的基础。

其他非常规作业可以直接在kettle中设计后在本平台内进行统一调度管理。

本平台足够灵活,所谓有容乃大如是也,自身虽然已经足够强大,但仍具备不可比拟的包容性,任何外部优秀的东西都可以集成进来,因此本平台也是很完美的所有后台任务的统一管理平台。

kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用都是使用客户端操作管理,但问题是当投入生产环境使用时,动辄几百上千个job需要管理,这时在使用客户端管理已经很难完成了。我所知道的解决方案有用命令行的调用的,操作极其麻烦,难以维护,总之还是很难用啦,还有就是开发web端管理工具,kettle自带了一个web端管理工具,界面极其简陋不说,还很难用,基本无法投入生产环境使用,其他没留意到还有没有较好对众多job进行管理的工具。

基于以上情况和我多年的kettle定制开发与使用经验。我设计并开发了数据大师,在kettle的基础上,将常用的场景迁移到web端,使运维人员甚至普通客户都能实现常见需求,我的目标是web端能实现70%的需求,剩余一些特殊少见的需求则由数据人员在kettle中直接实现,然后统一在本平台调度管理。

本平台的具体优势请参考“平台特性”章节。

平台界面

作业管理

演示环境

https://trimdata.cn:2001/sjds/#/login sys/sys_123

平台特性

  1. 支持在一个调度中同时调度多个资源库的任务,也支持一个资源库的任务在多个调度节点上执行,同时支持在一个管理系统中同时管理多个调度节点。
  2. 新增支持设置作业启动时执行,支持cron定时,使定时设置更加灵活。
  3. 平台内支持创建:数据流转作业(暂时取消,设计有点复杂不太实用,目前有数据同步任务)、KM作业、javascript作业、shell作业、sql作业。
  4. 本平台能自动检测作业运行异常信息,便于平台运行状况跟踪,当作业量很大时,很难逐个作业查看运行情况。
  5. 本平台提供基础的运行日志,作为作业运行情况的回溯依据,便于事后问题排查。
  6. 平台提供设计好的数据流转日志功能,更接近业务层,用户可以根据需要使用。
  7. 平台提供转换管理,当前转换管理只提供查看、删除、查看转换图功能,将来根据需要提供导入功能。
  8. 数据库管理是管理kettle中配置的数据库信息,若是完全深入采用数据世界平台,那么这里的数据库都将采用jndi的形式关联使用数据世界中的数据载体管理,一处配置全平台通用,若是直接在kettle中配置的数据库,此处可以进行密码解密。

一些说明

  1. 本平台2015年投入使用,我们公司已经在多地部署使用,开源以来,外部也有大量用户,所有基础的作业调度功能已经稳定,新添加的功能基本属于锦上添花,有些小bug也难免,欢迎反馈,让我们一起让他变得更好。
  2. 本系统是基于数据库资源库设计的,暂时不考虑支持文件资源库,当前支持oracle和mysql。
  3. 关于kettle版本的问题,当前版本开发使用的是8.3版,之前版本采用5.4开发,目前建议使用8.3版

关键信息

  1. 项目文档地址
  2. 项目源码
    1. https://gitee.com/majinju/kettle-manager.git 之前的kettle-manager仓库,针对数据大师项目的web项目。
    2. https://gitee.com/majinju/myutils-kettle.git 我的工具集kettle相关子项目
    3. 数据库目前主要支持mysql,代码层面是支持各种数据库的,但基础脚本目前主要维护mysql,其他库强烈需求时再生成脚本。
    4. kettle相关依赖要使用kettle的maven仓库下载:https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/
    5. 我开发的或定制的依赖要从maven中央仓库下载:https://oss.sonatype.org/content/groups/public
  3. 问题反馈邮箱:jinjuma@yeah.net。
  4. 项目交流qq群,交流1群:320302530,交流2群:142104962,交流3群:142105082(已满勿加)。

常见问题

作业添加

  1. 本平台是直接读取你数据库资源的v_job视图,这个视图包装了一下r_job表,你可以通过修改视图达到隐藏一些作业的目的。
  2. R_job是kettle资源库的系统表,只要你连接这个资源库设计的作业,都会记录在这个表中,所以你只需按照平常的习惯,连接与本平台配置的相同的资源库设计作业即可,因为读取的是同一张表,所以不需要额外的操作,直接就可以在本平台中看到你的作业并进行调度。
  3. 有外部作业需要添加到本平台,你只需直接使用kettle的Spoon工具,连接同一个资源库进行导入操作,这个数据人员都很熟悉。

查看转换

  1. 关于这个问题,我一直很困惑,为毛要直接查询运行转换,作业和转换可谓各司其职,我认为要运行转换就需要在其上包装一个作业,不管是否有其他流程依赖的需求。
  2. 当前新版本已经提供转换查看功能,支持直接在调度中将转换包装为作业进行运行。

注意事项

  1. 不要使用系统自带的记事本编辑配置文件,否则会导致系统无法正常读取你修改的配置文件,可以使用editpuls或notepad++。当出现奇葩问题时要想起这个提示。
  2. 相关文件最好不要存放在有空格或中文的目录下,避免不必要的麻烦。

后续计划

  1. 支持页面作业导入
  2. 支持页面转换导入
  3. 支持在转换管理中一键批量生成对应转换包装的作业,然后就可以使用作业的全部功能了。
  4. 将之前开发的XXL数据同步功能集成到本平台,可以方便的在本平台中完成常见的增量和全量数据同步。
  5. 任务管理在设置定时时可能需要人为分散定时,考虑生成时间-运行任务数的分析图辅助进行分散定时。
  6. 权限管理,不同用户看到自己的作业,管理员看所有作业。
  7. 分布式、集群支持,考虑增加容灾机制。
  8. 根据日志加入一些统计功能

框架简介

本系统全面参数化,采用类似前端框架的参数组织形式,使系统足够灵活,可配置性极强。

技术架构

本项目采用的技术选型如下:

  1. 数据库:暂时oralce、mysql,可以很快实现支持各类数据库。
  2. 后端:springboot2+beetlsql+redis
  3. 前端:vue3+vxe-table+element

框架特点

  1. 技术选型:前后端采用当前最流行且较新版本的技术方案:springboot2、beetlsql、fastjson、druid、vue3、vxe-table、element-plus、各种数据库
  2. DAO工具:数据库层采用了beetlSql,国产优秀DAO层工具,我认为比hibernate和mybatis更好,hibernate封装过深,大部分人使用多年仍然只会皮毛,mybatis的xml配置sql也是很不友好的,而beetlSql同时兼具此二者优点,代码量不大,代码可读性强,模板语法类似javascript,采用markdown形式组织SQL,简单易学,遇到问题也可以直接下载源码进行内部细节了解及改造,我也向官方推送过代码,这是真正掌握在自己手上的优秀DAO层工具。
  3. 多数据源支持:灵活动态的配置数据源,一处配置多处使用,代码中可以非常方便的切换数据源,kettle中也可以直接使用该数据源配置,本系统封装Db工具,实现常用数据库操作的简化,方便的切换数据库方式,开发体验飞起来。
  4. 运行简单:项目依赖服务极少,经过反复思考,目前项目主要依赖redis(可选择)和数据库(目前已经适配mysql和oracle),使项目更简单,可以快速简单运行部署。
  5. 全面参数化:本系统全面参数化,采用类似前端框架的参数组织形式,使系统足够灵活,可配置性极强,并且提供完整的参数文档。
  6. 接口统一:平台所有接口支持pc端、app端、第三方方便调用,对外接入及共享数据无需开发代码,通过简单的配置即可实现。
  7. 日志封装:采用logback日志框架,并集成转换框架可以兼容log4j和common-longging等日志框架,从而实现了日志的统一,同时自己实现日志记录器,支持将系统所有异常日志记录到数据库中,便于后续系统维护预警,同时我进行了简单的logbak日志封装,开发中可以方便的使用日志记录,且不会影响日志中的类命名及堆栈信息。
  8. 面向对象:面向对象的系统架构思路,万物皆对象,计划支持各类支持jdbc的数据库、文件、ftp等数据形式。
  9. 统一字典:统一的字典服务,汇集全平台所有字典并提供统一服务,可以非常灵活的集成各处数据进行字典服务,具体请参考开发规范中字典管理章节。
  10. 文件服务:统一的文件服务,全平台统一文件服务,支持文件上传到本地文件系统、ftp、hdfs、数据库等数据载体中,可以清晰的查询下载到平台所有上传的文件。
  11. 统一配置:极简的实现配置分布式管理,支持配置继承,没有任何依赖。
  12. 统一验证转换:本系统实现统一的验证、转换机制,可以对每个请求的参数进行校验、转换配置。
  13. 精细系统日志:系统操作日志记录精准,除了常规的请求路径、ip、操作人等信息外,本系统日志参数代码自动翻译为中文,记录日志入参、返回结果、耗时记录等,便于排查系统性能点进行精准优化。
  14. 不一样的权限体系:简洁强大的权限控制系统,本框架角色可以有子角色,父角色默认包含子角色权限,可以对未登陆的用户授权,可以对所有登陆的用户授权,支持按钮操作级授权等。
  15. 低代码:本系统已经实现通用的增删改查,并提供通用的数据模板下载、数据批量上传、数据导出、列表编辑、记录复制等特色功能,后续还可根据需要自行定义各系统通用方法,大部分需求不需要开发代码即可通过配置实现,本系统也不生成代码,配置会缓存在内存中,性能不受影响,配置修改实时生效,同时还能非常灵活的满足任何特殊需求,这是与目前市面上绝大部分低代码框架的最大区别。
  16. 插入更新:本系统支持按业务字段进行去重,在新增和批量上传时可以按业务字段进行查重后自动选择插入和更新。
  17. 国际化支持:集成国际化支持,可以便捷的开发国际化系统。
  18. 定时任务:本系统集成xxl-job作为定时任务管理机制,可以方便的进行定时任务的开发及管理。
  19. 智能交换:本系统提供一个智能交换系统,能方便的配置实现本地文件、ftp、kafka等数据载体间的数据近实时同步,从而简单快捷实现高效的跨网数据交换等复杂需求。
  20. bean生成工具:系统内置基于beetl模板开发pojo生成工具,可以在idea中导入doc/idea-run/pojo.run.xml,然后根据需要修改doc/pojo.json配置文件生成实体类。

关联项目

  1. 前端项目
  2. 通用工具
  3. sb工具集
  4. uniapp移动端
  5. java项目根项目

相关文档

  1. 开发规范
  2. 系统参数
  3. 开发手册