当前位置: 首页 > news >正文

分布式kettle调度管理平台简介

介绍

Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能,用于从各种数据源提取数据、进行数据转换和清洗,并将数据加载到目标系统中。

  1. ETL功能:Kettle专注于提供ETL功能,即从不同的数据源(如数据库、文件、Web服务等)中提取数据,并对数据进行转换和整理,最后将数据加载到目标系统中。它支持各种数据处理操作,如过滤、排序、聚合、连接、转换等,以满足不同的数据集成需求。

  2. 可视化设计:Kettle提供了一个可视化的设计界面,称为Spoon。通过Spoon,用户可以通过拖拽和连接各种组件来创建数据转换和工作流程。这种可视化的设计方式使得ETL过程更加直观和易于理解。

  3. 多种数据源支持:Kettle支持多种数据源的连接和操作,包括关系型数据库(如MySQL、Oracle、SQL Server等)、非关系型数据库(如MongoDB、Hadoop等)、文件(如CSV、Excel等)、Web服务(如REST API、SOAP等)等。这使得Kettle可以处理各种不同类型和格式的数据。

  4. 强大的转换和清洗功能:Kettle提供了丰富的转换和清洗功能,可以对数据进行各种操作,如字段映射、数据类型转换、数据清洗、数据合并、数据拆分等。这些功能使得数据在整个ETL过程中能够得到有效的处理和准备。

  5. 可扩展性:Kettle提供了一套插件机制,允许用户根据自己的需求进行功能扩展和定制。用户可以编写自定义的插件,以满足特定的数据集成和处理需求。

Kettle是一款功能强大、灵活可扩展的ETL工具,适用于各种数据集成和转换任务。在开源系统中,它的可视化设计界面和丰富的功能使得数据处理变得更加简单和高效。

尽管目前市面上开源ETL老牌工具有Sqoop,datax,Canal、StreamSets等,新晋ELT工具有airbyte, seaTunnel等。但kettle作为传统老牌ETL工具,在易用性,资料丰富性等方面仍然有一席之地,对于千万级内的数据量级处理,仍是不可替代的优秀ETl工具之一。

本人是KETTLE使用爱好者以及二次开发者,拥有8年的丰富使用经验。在使用过程中针对kettle的弱项,以及对市面上一些kettle二开工具的对比发现,目前尚未有一款好用的调度管理工具。经此,于是准备开发一款简单易用,灵活部署,可以水平扩展的分布式调度管理平台。

功能介绍和对比

废话不多说,上才艺:

比较维度功能本产品第三方产品
设计及架构框架springcloud微服务springboot或springmvc单体
设计前后端分离ui层管理,调度,执行耦合在一个服务中
调度层
agent层
执行层
调度层基于xxl-job封装和优化,支持集群和动态分片,集群模式下支持数十万至百万级任务调度基于quartz或者spring schedule组件
agent层springcloud微服务模式,用来管理kettle的carte服务,支持水平扩展,接受调度层的指令,来向执行层发送转换做作业的任务。
1、支持carte服务的管理和探活,自动剔除异常节点,和故障转移
2、支持8种负载均衡策略
3、基于分片模式的任务执行状态定时检测,不存在单点压力和故障。
4、任务异常告警,carte服务监控告警可视化配置
执行层基于kettle的carte模式采用插件策略二次开发,无代码入侵,不集成任何kettle源码,兼容kettle5.x, kettle6.x, kettle7.x, kettle8.x,kettle9.xkettle源码嵌入单体服务中,不利于版本升级和管理
前端UI框架vue2.XeasyUI, jquery, bootstrap
权限设计基于RBAC模式设计部门,岗位,角色
菜单,按钮,资源层精细化控制
数据权限
业务模块设计数据集成任务报表概览任务管理
项目管理
任务管理
集群管理
节点管理
元数据管理血缘分析
数据源管理
数仓管理ODS原始数据层
DWD数据明细层
DWS服务数据层
ADS数据应用层
数据服务数据发布
授权管理
api管理
监控模块服务器监控Prometheus,hertzbeat
服务级监控grafana
jvm监控
日志观测;链路追踪模块loki日志可视化loki日志可视化
oss日志存储oss日志存储
jaeger链路追踪jaeger链路追踪

架构设计

 

详细功能介绍

1、ETL概览

首先是ETL概览,最上面是统计当前管理的任务数,以及任务执行情况。下面的折线图是展示每日执行的转换和作业的成功失败数。

2、项目管理

2.1 项目管理

对ETL任务进行项目维度的包装,将ETL任务和业务进行绑定,使之具备生命周期属性,更易于理解和管理。

2.2 项目新增

3、任务管理

整个系统的最核心地方,对ETL任务进行封装,与项目映射为多对一的关系。一个项目任务绑定一个carte集群,和一个调度任务,并拥有任务状态属性。可以实时查看当前任务执行状态,以及执行日志。

  1. 任务新增

新增任务,需要绑定项目,和ETL资源库的转换或作业信息,然后再指定要执行的carte集群。

支持运行中的任务实时修改转换或作业信息。改动下次执行生效。

  1. 任务执行

任务创建完成之后,可以点击右侧按钮执行执行一次,此时agent层会从集群中根据负载均衡策略,选取一个可用的slave节点,将转换做作业信息发送到该节点上执行,并将改任务添加到状态监控队列,对任务的执行状态进行更新和日志监控

当任务启动后,状态栏会切换为动态转换的蓝色小齿轮,同时可以实时查看进行中的日志

  1. 任务定时执行

对于ETL任务,90%的都要定时重复执行,这里可以设置定时执行:

这里可以对定时方式进行配置,指定agent作为执行器,以及agent的路由策略,cron表达式,以及失败策略等。

  1. 启动定时任务

点击定时管理按钮,可以对定时任务进行执行,停止,以及删除操作。

  1. 任务修改

支持实时的任务修改,和集群修改,下次执行时会自动生效。

任务DAG查看

4、集群管理

这里重新设计了carte的集群配置,carte本身的集群只是简单的主从模式,这里设计了master动态选举集群模式,

master节点挂掉之后,会自动选择其他slave节点作为master节点。

  1. 新建集群

每个slave可以加入到多个集群中,互不冲突。集群策略支持8种负载均衡模式,如果对任务执行成功率有严格要求,可以设置为故障转移模式,但这种情况可能会存在任务倾斜的情况,导致某个carte节点任务数很多,而有的carte又很闲。后面会考虑增加一个组合模式的负载均衡策略,将故障转移和轮询或者一致性hash结合在一起。正常情况建议选择一致性hash或者轮询策略。

5、节点管理

节点是集群的组成核心之一,所有集群都是从节点池中选择一批进行组合。

管理列表这里优先展示节点身上的任务数,以及cpu和内存使用情况。

  1. 节点操作

可以对节点进行刷新,编辑,停止等操作。

6、日志观测平台

日志观测平台基于分布式轻量级日志存储系统loki, 和采集器vector, 以及grafana可视化展示平台组成,方便开发实时排查系统日志和快速定位问题。 

7、监控告警平台 

基于jmx和prometheus非入侵方式对carte服务进行jvm维度的监控,一旦服务状态异常,秒级响应告警,方便运维实时处理问题,保证ETL任务的稳定性和可靠性。

系统体验

生活不易,系统目前在持续升级,迭代中,暂时未计划开源。核心功能ETL部分已在自有阿里云服务器稳定运行3个月之久,2C2G的单机carte配置,可稳定运行10-100个任务(视具体任务的数据体量而定)。

相关文章:

分布式kettle调度管理平台简介

介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…...

002-基于Sklearn的机器学习入门:基本概念

本节将继续介绍与机器学习有关的一些基本概念,包括机器学习的分类,性能指标等。同样,如果你对本节内容很熟悉,可直接跳过。 2.1 机器学习概述 2.1.1 什么是机器学习 常见的监督学习方法 2.1.2 机器学习的分类 机器学习一般包括监…...

ubuntu 默认的PATH配置

ubuntu 默认的PATH配置 在Ubuntu系统中,PATH环境变量是非常关键的,因为它定义了操作系统在接收到用户输入命令时,搜索可执行文件的目录顺序。这个变量的配置决定了哪些命令可以被系统全局识别和执行。 默认的PATH配置 Ubuntu的默认PATH环境…...

JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI

JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI孕产妇健康管理信息管理系统是一种将孕产妇健康管理信息进行集中管理和存储的系统。通过建立该系统,有助于提高孕产妇健康管理的效率和质量,减少医疗事故发生的…...

代码随想录算法训练营Day56|所有可达路径、797.所有可能的路径

所有可达路径 98. 所有可达路径 (kamacoder.com) 深度优先搜索&#xff0c;和之前的回溯题类似。 #include <iostream> #include <vector> using namespace std;// 定义一个二维向量来存储所有可能的路径 vector<vector<int>> paths; // 定义一个向…...

DNF手游鬼剑士攻略:全面解析流光星陨刀的获取与升级!云手机强力辅助!

《地下城与勇士》&#xff08;DNF&#xff09;手游是一款广受欢迎的多人在线角色扮演游戏&#xff0c;其中鬼剑士作为一个经典职业&#xff0c;因其强大的输出能力和炫酷的技能特效&#xff0c;吸引了众多玩家的青睐。在这篇攻略中&#xff0c;我们将详细介绍鬼剑士的一把重要武…...

npm创建一个空的vue3项目的方法或者pnpm创建vue3项目

1、前提我们已经安装了npm&#xff0c;或者pnpm 2、我们用npm来创建vue3项目 快速上手 | Vue.js 官网地址 这里我安装是的 node v18.20.3 以下是安装过程 &#xff1a; npm create vuelatest 根据自己的需要进行创建即可。 3、我们用pnpm来创建vite vue3项目 pnpm create …...

LSH算法:高效相似性搜索的原理与Python实现I

局部敏感哈希&#xff08;LSH&#xff09;技术是快速近似最近邻&#xff08;ANN&#xff09;搜索中的一个关键方法&#xff0c;广泛应用于实现高效且准确的相似性搜索。这项技术对于许多全球知名的大型科技公司来说是不可或缺的&#xff0c;包括谷歌、Netflix、亚马逊、Spotify…...

cesium 添加 Echarts图层(人口迁徒图)

cesium 添加 Echarts 人口迁徒图(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <ht…...

Windows下快速安装Open3D-0.18.0(python版本)详细教程

目录 一、Open3D简介 1.1主要用途 1.2应用领域 二、安装Open3D 2.1 激活环境 2.2 安装open3d 2.3测试安装是否成功 三、测试代码 3.1 代码 3.2 显示效果 一、Open3D简介 Open3D 是一个强大的开源库&#xff0c;专门用于处理和可视化3D数据&#xff0c;如点云、网格和…...

无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages

ubuntu系统执行sudo apt update命令的时候&#xff0c;遇到如下问题&#xff1a; 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…...

最新CRMEB商城多商户java版源码v1.6版本+前端uniapp

CRMEB 开源商城系统Java版&#xff0c;基于JavaVueUni-app开发&#xff0c;在微信公众号、小程序、H5移动端都能使用&#xff0c;代码全开源无加密&#xff0c;独立部署&#xff0c;二开很方便&#xff0c;还支持免费商用&#xff0c;能满足企业新零售、分销推广、拼团、砍价、…...

【开发环境】MacBook M2安装git并拉取gitlab项目,解决gitlab出现Access Token使用无效的方法

文章目录 安装Homebrew安装git打开IDEA配置git打开IDEA拉取项目 安装Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"在iTerm等命令行工具打开后&#xff0c;输入上面的命令 之后根据中文提示完成Homebrew的下载…...

Flask-Session使用Redis

Flask-Session使用Redis 一、介绍 在Flask中&#xff0c;session数据默认是以加密的cookie形式存储在用户的浏览器中的。但是&#xff0c;真正的session数据应该存储在服务器端。Django框架会将session数据存储在数据库的djangosession表中&#xff0c;而Flask则可以通过第三…...

Redis缓存管理机制

在当今快节奏的数字世界中&#xff0c;性能优化对于提供无缝的用户体验至关重要。缓存在提高应用程序性能方面发挥着至关重要的作用&#xff0c;它通过将经常使用或处理的数据存储在临时高速存储中来减少数据库负载并缩短响应时间&#xff0c;从而减少系统的延迟。Redis 是一种…...

初学嵌入式是弄linux还是单片机?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;1、先入门了51先学了89c52…...

【基础算法总结】分治—快排

分治—快排 1.分治2.颜色分类3.排序数组4.数组中的第K个最大元素5.库存管理 III 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.分治 分治…...

[C++]——同步异步日志系统(1)

同步异步日志系统 一、项⽬介绍二、开发环境三、核心技术四、环境搭建五、日志系统介绍5.1 为什么需要日志系统5.2 日志系统技术实现5.2.1 同步写日志5.2.2 异步写日志 日志系统&#xff1a; 日志&#xff1a;程序在运行过程中&#xff0c;用来记录程序运行状态信息。 作用&…...

python 第6册 辅助excel 002 批量创建非空白的 Excel 文件

---用教授的方式学习 此案例主要通过使用 while 循环以及 openpyxl. load_workbook()方法和 Workbook 的 save()方法&#xff0c;从而实现在当前目录中根据已经存在的Excel 文件批量创建多个非空白的Excel 文件。当运行此案例的Python 代码&#xff08;A002.py 文件&#xff0…...

力扣61. 旋转链表(java)

思路&#xff1a;用快慢指针找到最后链表k个需要移动的节点&#xff0c;然后中间断开节点&#xff0c;原尾节点连接原头节点&#xff0c;返回新的节点即可&#xff1b; 但因为k可能比节点数大&#xff0c;所以需要先统计节点个数&#xff0c;再取模&#xff0c;看看k到底需要移…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...