DataX和kettle初步认识

本文对比了DataX和Kettle两大数据同步工具的特点。DataX由阿里巴巴开发,专为异构数据源间的高效数据同步设计;Kettle是一款成熟的ETL工具,以其可视化界面和强大的数据管理能力著称。两者在架构、使用方式和支持的数据库类型上各有优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DataX和kettle初步了解

DataX

DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。(摘自百科)

DataX是淘宝开源的数据导入导出的工具,支持HDFS集群与各种关系型数据库之间的数据交换。

我们希望在一个很短的时间窗口内,将一份数据从一个数据库同时导出到多个不同类型的数据库。 DataX正是为了解决这些问题而生。

DataX特点

  1. 在异构的数据库/文件系统之间高速交换数据
  2. 采用Framework + plugin架构构建,Framework处理了缓冲,流控,并发,上下文加载等高速数据交换的大部分技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问
  3. 运行模式:stand-alone
  4. 数据传输过程在单进程内完成,全内存操作,不读写磁盘,也没有IPC
  5. 开放式的框架,开发者可以在极短的时间开发一个新插件以快速支持新的数据库/文件系统。(具体参见《DataX插件开发指南》)

DataX结构模式(框架+插件)

  1. Job: 一道数据同步作业
  2. Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务.
  3. Sub-job: 数据同步作业切分后的小任务
  4. Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX
  5. Storage: Reader和Writer通过Storage交换数据
  6. Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地

DataX框架内部通过双缓冲队列、线程池封装等技术,集中处理了高速数据交换遇到的问题,提供简单的接口与插件交互,插件分为Reader和Writer两类,基于框架提供的插件接口,可以十分便捷的开发出需要的插件。比如想要从oracle导出数据到mysql,那么需要做的就是开发出OracleReader和MysqlWriter插件,装配到框架上即可。并且这样的插件一般情况下在其他数据交换场合是可以通用的。

Kettle

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。(摘自百科)

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

kettle的优点:

1.可视化界面。一个可视化界面足以成为选择kettle的首要原因。毕竟,可视化意味着更方便人的使用。
2.元数据库。元 数据库 用来保存kettle任务的元信息,方便管理任务,通常叫做资源库( repository )。
3.自带工作流并且支持增量抽取。
4.可以配置成一套逻辑。例如:抽取数据时,目标表不存在则插入,存在则更新,而目标表中存在并且数据源中不存在的,可以删除

kettle的job中可以嵌套job,job中嵌套t ransformation, t ransformation中嵌套job等,可以满足非常复杂的任务场景。

DataX和kettle对比

1)Kettle拥有自己的管理控制台,可以直接在客户端进行etl任务制定,不过是CS架构,而不支持BS浏览器模式。DataX并没有界面,界面完全需要自己开发,增加了很大工作量。
2)Kettle可以与我们自己的工程进行集成,通过JAVA代码集成即可,可以在java中调用kettle的转换、执行、结束等动作,这个还是有意义的,而DataX是不支持的,DataX是以执行脚本的方式运行任务的,当然完全吃透源码的情况下,应该也是可以调用的。
3)支持的数据库,都支持的比较齐全,kettle支持的应该更多,DataX是阿里开发,可以更好地支持阿里自身的数据库系列,如ODPS、ADS等
4)Kettle已经加入BI组织Pentaho,加入后kettle的开发粒度和被关注度更进一步提升
5)DataX开源的支持粒度不高,关注度远没有kettle高,代码提交次数更是少的很。
6) 根据网上参考信息,网友测试 kettle全量抽取较大数据量时,抽取时间长,对比测试 datax比kettle快。
7) Datax的工作流需要依托于调度工具的流,本身并不具备工作流特性。

参考

阿里出品的ETL工具dataX初体验
参考URL: https://blog.youkuaiyun.com/shudaqi2010/article/details/79247468
淘宝DataX 数据交换机制学习总结
参考URL: https://blog.youkuaiyun.com/w83304911/article/details/50066641
离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute
https://yq.aliyun.com/articles/664118
datax源码分析(一)
参考URL: https://blog.youkuaiyun.com/chenqu108/article/details/79803718
Datax源码学习
参考URL: https://blog.youkuaiyun.com/shuitawuhen/article/details/41944289
[推荐]DataX二次开发小记
参考URL: https://cloud.tencent.com/developer/news/328376
ETL 之初识 Datax
参考URL: https://www.codercto.com/a/45069.html

一. DataX3.0 概览  DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。  设计理念  为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX,便能跟已有的数据源做到无缝数据同步。  当前使用现状  DataX 在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了 6 年之久。目前每天完成同步 8w 多道作业,每日传输数据量超过 300TB。  此前已经开源 DataX1.0 版本,此次介绍为阿里巴巴开源全新版本 DataX3.0,有了更多更强大的功能更好的使用体验。Github 主页地址:https://github.com/alibaba/DataX。  二、DataX3.0 框架设计  DataX 本身作为离线数据同步框架,采用 Framework plugin 架构构建。将数据源读取写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。  Reader:Reader 为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。  Writer: Writer 为数据写入模块,负责不断向 Framework 取数据,并将数据写入到目的端。  Framework:Framework 用于连接 reader writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。  三. DataX3.0 插件体系  经过几年积累,DataX 目前已经有了比较全面的插件体系,主流的 RDBMS 数据库、NOSQL、大数据计算系统都已经接入。DataX 目前支持数据如下:  DataX Framework 提供了简单的接口插件交互,提供简单的插件接入机制,只需要任意加上一种插件,就能无缝对接其他数据源。详情请看:DataX 数据源指南  四、DataX3.0 核心架构  DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个 DataX 作业生命周期的时序图,从整体架构设计非常简要说明 DataX 各个模块相互关系。  核心模块介绍:  DataX 完成单个数据同步的作业,我们称之为 Job,DataX 接受到一个 Job 之后,将启动一个进程来完成整个作业同步过程。DataX Job 模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子 Task)、TaskGroup 管理等功能。  DataXJob 启动后,会根据不同的源端切分策略,将 Job 切分成多个小的 Task (子任务),以便于并发执行。Task 便是 DataX 作业的最小单元,每一个 Task 都会负责一部分数据的同步工作。  切分多个 Task 之后,DataX Job 会调用 Scheduler 模块,根据配置的并发数据量,将拆分成的 Task 重新组合,组装成 TaskGroup (任务组)。每一个 TaskGroup 负责以一定的并发运行完毕分配好的所有 Task,默认单个任务组的并发数量为5。  每一个 Task 都由 TaskGroup 负责启动,Task 启动后,会固定启动 Reader>Channel>Writer 的线程来完成任务。 标签:数据同步
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值