DataX是什么?
DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换,由淘宝数据平台部门完成。
DataX用来解决什么?
目前成熟的数据导入导出工具比较多,但是一般都只能用于数据导入或者导出,并且只能支持一个或者几个特定类型的数据库。这样带来的一个问题是,如果我们拥有很多不同类型的数据库/文件系统(Mysql/Oracle/Rac/Hive/Other…),并且经常需要在它们之间导入导出数据,那么我们可能需要开发/维护/学习使用一批这样的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader/mysqldumper…)。而且以后每增加一种库类型,我们需要的工具数目将线性增长。(当我们需要将mysql的数据导入oracle的时候,有没有过想从jdbcdump和dbloader上各掰下来一半拼在一起到冲动?) 这些工具有些使用文件中转数据,有些使用管道,不同程度的为数据中转带来额外开销,效率差别很非常大。很多工具也无法满足ETL任务中常见的需求,比如日期格式转化,特性字符的转化,编码转换。另外,有些时候,我们希望在一个很短的时间窗口内,将一份数据从一个数据库同时导出到多个不同类型的数据库。 DataX正是为了解决这些问题而生。
(问题: 新增第n+1个数据源,是不是要新开发n个数据同步工具 ?)
我们只需要针对新增的数据源开发的一套Reader/Writer插件,即可实现任意数据的互导
DataX特点?
- 在异构的数据库/文件系统之间高速交换数据
- 采用Framework + plugin架构构建,Framework处理了缓冲,流控,并发,上下文加载等高速数据交换的大部分技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问
- 运行模式:stand-alone
- 数据传输过程在单进程内完成,全内存操作,不读写磁盘,也没有IPC
- 开放式的框架,开发者可以在极短的时间开发一个新插件以快速支持新的数据库/文件系统。(具体参见《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插件开发指南》)
DataX在淘宝的运用
DataX上线后,我们对淘宝数据平台原有作业进行了逐步批量迭代替换。数据同步工具归一化为DataX后,大大提高了用户拖表数据速度和内存利用率, 同时针对归一化后的DataX工具,我们能够做到更好应对mysql切库、数据同步监控等以前零散工具下很难完成的运维任务。
下面是部分工具替换后的比对情况:
目前DataX在淘宝数据平台数据已经广泛地被用于数据同步作业,每天共计有4000+道DataX数据同步作业分布在全天各个时段运行。
DataX/DbSync/TT已经构成了淘宝数据平台数据提供的三大支柱:
其中DataX每天为淘宝贡献2.5T数据量,占淘宝数据平台总体数据同步的23%,占数据库数据同步的96%。
相关推荐
### DATAX说明书最新-20180825 #### 概述 DataX是一款由阿里巴巴集团自主研发的离线数据同步工具/平台,能够高效地实现多种异构数据源之间的数据同步工作。该工具支持的数据源包括但不限于MySQL、Oracle、Sql...
在本文中,我们将详细介绍DataX的工作原理、特点以及如何使用它来执行数据迁移。 DataX的工作原理主要基于插件化的设计思想。每个数据源(如MySQL、Oracle、HDFS等)都对应一个插件,这些插件实现了读取和写入数据...
9. **datax产品管理手册模板.docx**:可能是DataX产品的管理模板,用于指导团队如何管理和维护DataX项目,包括版本控制、文档更新、问题追踪等。 10. **Storm安装与测试手册.docx**:Apache Storm是一个实时处理...
- **丰富的数据处理组件**:提供包括Datax、Sqoop、Flink、Spark等在内的多种数据处理工具。 - **高可用性和稳定性**:采用多重容灾机制和高可用架构设计,保障系统的稳定运行。 ### 四、云上数据集成的实践 #### ...
本项目主要介绍了在线教育数仓(用户行为采集平台)的大数据项目,旨在为教育行业提供数据支持,帮助企业改进业务流程、提高产品质量等。 数据仓库概念 数据仓库(Data Warehouse)是一种用于企业决策的数据支持...
本说明书将详细介绍其使用方法及与原版的主要差异。 **差异描述:** 1. **消息处理方式的变化**:对于ISMG(ISP Message Gateway)主动下发的消息,SMProxy30使用`CMPP30DeliverMessage`类进行处理。相较于`...
1. 数据采集传输:使用Flume、Kafka、Sqoop、Logstash或DataX等工具将数据从源系统抽取到目标存储。 2. 数据存储:数据可存储在MySql、HDFS、HBase、Redis或MongoDB等不同数据库中,根据数据类型和需求选择合适的...
本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。 适宜读者人群 MongoDB开发者 基础需求 产品: “我们要为现有的表单增加一个伟大的功能, ...
#### 架构分层介绍 淘宝数据产品的技术架构被划分为五个层次:**数据源层**、**计算层**、**存储层**、**查询层**以及**产品层**。每个层次都承担着特定的功能角色,共同构建了一个稳定可靠的大数据处理系统。 1. ...
本文将详细介绍淘宝数据魔方的技术架构,特别是其如何处理海量数据。 #### 技术架构概述 淘宝的数据魔方技术架构主要由五个层次组成:数据源层、计算层、存储层、查询层和产品层。 1. **数据源层**:此层包含淘宝...
#### 四、关键技术组件介绍 1. **Flume**:主要用于收集、聚合和移动大量日志数据。它具有高可靠性和高可用性,能够轻松集成到现有系统中。 2. **DataX**:一款由阿里巴巴开源的数据同步工具,支持多种数据源之间的...
例如,结构化数据导入过程中,利用DataX系统进行数据抽取、转换和加载(ETL),支持MySQL、Oracle等多种关系型数据库的数据整合。 阿里大数据应用平台的数据同步中心通过工作流调度系统,能够处理实时流式同步和...
- DATAx:数据输入/输出引脚 - CMD/DSI:命令/数据选择信号 - CLK:时钟信号 - RST:复位信号 - CS:片选信号 #### 4.2 电源架构 该控制器采用了多路电源供电的设计,以满足不同模块的需求。主要包括: - 核心电源...
本文档主要介绍了基于 Flink CDC 的高效实现海量数据实时入湖入仓的技术架构和实践经验。Flink CDC 是一种开源的 Change Data Capture(CDC)技术,它可以实时捕捉数据库中的变化,然后将其同步到下游系统中。 ...
- **产品ID寄存器(FMC_PID)**:包含了产品的型号和其他信息。 #### 电源管理单元(PMU) - **简介**:PMU用于管理微控制器的电源供应和功耗。 - **主要特征**: - 支持多种电源域管理。 - 提供低功耗模式以延长...
- **DATAx (D4~D2, C1~C3, B1~A2, B3~A4, D5~B5, C5~A5, D6~B6, F7~A7, B7~C7, E7~D7, A8~B8, D1~E3, E1~E4)**:数据总线信号,用于在处理器和外部存储器或其他设备之间传输数据。 - **nWE (E13)**:写使能信号,...