DataX 是一款支持任意异构数据系统离线数据交换的工具、框架、平台,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换。目前DataX支持数十种各类数据存储、计算系统,每天为阿里集团传输数据高达数十T。DataX服务的客户不仅仅局限于三淘、支付宝、阿里巴巴B2B,阿里集团外部客户有大众点评、蘑菇街等也在采用DataX建设海量数据同步中心。未来DataX将实现阿里集团数据同步总线,实现阿里集团数据无阻碍的流动。 新版DataX 2.0 (分布式版本) 内部已经上线,预计今年正式提交开源社区。
DataX解决的问题
实现跨平台的、跨数据库、不同系统之间的数据同步及交互。
如果我们拥有很多不同类型的数据库/文件系统(Mysql/Oracle/Rac/Hive/Other…),并且经常需要在它们之间导入导出数据,那么我们可能需要开发/维护/学习使用一批这样的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader/mysqldumper…)。而且以后每增加一种库类型,我们需要的工具数目将线性增长。(当我们需要将mysql的数据导入oracle的时候,有没有过想从jdbcdump和dbloader上各掰下来一半拼在一起到冲动?) 这些工具有些使用文件中转数据,有些使用管道,不同程度的为数据中转带来额外开销,效率差别很非常大。很多工具也无法满足ETL任务中常见的需求,比如日期格式转化,特性字符的转化,编码转换。另外,有些时候,我们希望在一个很短的时间窗口内,将一份数据从一个数据库同时导出到多个不同类型的数据库。 DataX正是为了解决这些问题而生。
以往,增加一类型的数据对接,我们可能为此增加一个接口或者是特意开发兼容数据的系统,如下图:
倘若我们需要增加一个数据源和目标源,那我们不得不重新开发一套新的同步工具
阿里的DataX统一了这规范并提供简单的数据源接口方便用户自定义需要的同步工具,如下图
DataX结构模式(框架+插件)
Job: 一道数据同步作业 Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务. Sub-job: 数据同步作业切分后的小任务 Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX Storage: Reader和Writer通过Storage交换数据 Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地 DataX框架内部通过双缓冲队列、线程池封装等技术,集中处理了高速数据交换遇到的问题,提供简单的接口与插件交互,插件分为Reader和Writer两类,基于框架提供的插件接口,可以十分便捷的开发出需要的插件。比如想要从oracle导出数据到mysql,那么需要做的就是开发出OracleReader和MysqlWriter插件,装配到框架上即可。并且这样的插件一般情况下在其他数据交换场合是可以通用的。更大的惊喜是我们已经开发了如下插件: Reader插件 hdfsreader : 支持从hdfs文件系统获取数据。 mysqlreader: 支持从mysql数据库获取数据。 sqlserverreader: 支持从sqlserver数据库获取数据。 oraclereader : 支持从oracle数据库获取数据。 streamreader: 支持从stream流获取数据(常用于测试) httpreader : 支持从http URL获取数据。 Writer插件 hdfswriter:支持向hdbf写入数据。 mysqlwriter:支持向mysql写入数据。 oraclewriter:支持向oracle写入数据。 streamwriter:支持向stream流写入数据。(常用于测试)
DataX在阿里应用
原工具 | 新工具 | 速度提升 | 内存利用提升 | |
mysql-hdfs | Jdbcdump | Datax | 116% | 114% |
oracle-hdfs | Jdbcdump | Datax | 87% | 67% |
hdfs-oracle | Getmerge+sqlloader | Datax | 103% | 42% |
这是阿里11年的值
阿里数据同步平台
参考:
相关推荐
阿里云 DATAX mongo数据导入 增强版 追加非空列 默认设置为0的 完善代码
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 ... 【项目质量】: 所有源码都经过严格测试,...
大数据采集技术与应用
阿里开源ETL工具DATAX
3-1.阿里云DataWorks数据集成(DataX)架构&实践分享.pdf
DataX doriswriter 插件,用于通过 DataX 同步其他数据源的数据到 Doris 中。(https://doris.apache.org/zh-CN/docs/ecosystem/datax?_highlight=datax#%E5%85%B3%E4%BA%8E-datax) DataX Web是在DataX之上开发的...
阿里开源ETL工具DataX
基于DataX的数据同步任务调度工具,支持自定义定时任务,支持crontab表达式,支持自定义添加DataX数据同步任务。 附上项目github地址,以便安装使用:https://github.com/luoce/bt-ware-datasync-datax
1、说明:datax支持presto读取,datax规范开发插件,读取presto中数据,可以在presto中配置mysql、postgresql、es、hive等数据库的连接,通过datax执行关联查询,数据存入新的库 2、插件更新:解压文件 prestoreader...
springboot集成datax的demo,下载及能运行
是基于阿里巴巴DataX 3.0的数据库迁移工具。支持对Mysql,Oracle,SqlServer, PostgreSql之间的相互迁移, 支持迁移时带where查询条件,并生成迁移数据报表。 DataX是什么? DataX 是阿里巴巴集团内被广泛使用的离线...
datax的json范例--datax的简单范例. 有一些解释,适用于初学者
DataX_python3 由于python为3.7.0,所以把datax/bin目录下的三个py文件需要符合python3语法要求的文件,执行也才能不报错。 如需要,下载这三个文件替换即可。
datax抽取mysql表到pgsql表的json配置
datax读写MySQL8的插件,修改源码重新编译而来
ETL对比datax-nifi
datax源码在线下载datax源码在线下载datax源码在线下载
datax的简单范例. 有一些解释,适用于初学者
在服务器端 通过.sh shell脚本启动datax工具 启动脚本放置在datax的bin目录下,进入bin目录通过./start.sh /job/json文件名称 启动datax 工具
Datax 插件开发 Kafka writer.pdf