DataX介绍
DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换。
目前成熟的数据导入导出工具比较多,但是一般都只能用于数据导入或者导出,并且只能支持一个或者几个特定类型的数据库。
这样带来的一个问题是,如果我们拥有很多不同类型的数据库/文件系统(Mysql/Oracle/Rac/Hive/Other…),
并且经常需要在它们之间导入导出数据,那么我们可能需要开发/维护/学习使用一批这样的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader/mysqldumper…)。而且以后每增加一种库类型,我们需要的工具数目将线性增长。(当我们需要将mysql的数据导入oracle的时候,有没有过想从jdbcdump和dbloader上各掰下来一半拼在一起到冲动?)这些工具有些使用文件中转数据,有些使用管道,不同程度的为数据中转带来额外开销,效率差别很非常大。
很多工具也无法满足ETL任务中常见的需求,比如日期格式转化,特性字符的转化,编码转换。
另外,有些时候,我们希望在一个很短的时间窗口内,将一份数据从一个数据库同时导出到多个不同类型的数据库。
DataX正是为了解决这些问题而生。
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工具,我们能够做到更好应对mysql切库、数据同步监控等以前零散工具下很难完成的运维任务。
下面是部分工具替换后的比对情况:
下面是我将DataX源码编译后的配置和使用示例(下载地址在文章最后面):
环境需求:
1. java >= 1.6 python >= 2.6
2. 如果使用Oracle,需要安装Oracle客户端;
3. 如果使用HDFS,需要确保hadoop命令行可用;同时请确保在执行DataX的用户/home目录下,链接Hadoop config目录文件,在用户目录下执行: ln -s /home/$user/config hadoop-configure-目录
4. 默认安装到/home/taobao/datax 目录, 最好使用root用户安装,因为还有其他权限问题;
安装:
1. 先安装Datax engine
rpm -ivh t_dp_datax_engine-1.0.0-1.noarch.rpm
安装之后,/home/taobao/datax目录结构如下:
2. 安装需要的读写插件,比如,我需要在HDFS和Mysql之间的数据传输,则需要装HDFS的读写插件和Mysql的读写插件:
rpm -ivh t_dp_datax_hdfsreader-1.0.0-1.noarch.rpm
rpm -ivh t_dp_datax_hdfswriter-1.0.0-1.noarch.rpm
rpm -ivh t_dp_datax_mysqlreader-1.0.0-1.noarch.rpm
rpm -ivh t_dp_datax_mysqlwriter-1.0.0-1.noarch.rpm
成功安装之后,/home/taobao/datax下多了plugins/目录,再往下,是reader和writer目录,分别用来存放读插件和写插件,如图:
配置(以mysql数据导入hdfs为例)
1.建立Hadoop配置文件目录的链接(执行任务的用户为lxw1234 ),切换到lxw1234用户,执行:
ln -s /usr/local/hadoop-0.20.2/conf /home/lxw1234/config
如图:
2. 生成job配置文件
进入:/home/taobao/datax/bin/,
执行:./datax.py –e
屏幕显示如下图:
列出了可用的数据源类型(之前安装了hdfs和mysql的reader插件,因此这里显示这两种数据源),选择1(mysql),如图:
列出了可用的数据目标类型(同理,显示hdfs和mysql),选择0(hdfs),如图:
生成了job的配置文件/home/taobao/datax/jobs/mysqlreader_to_hdfswriter_1432867511409.xml
3. 编辑job配置文件
vi /home/taobao/datax/jobs/mysqlreader_to_hdfswriter_1432867511409.xml
<reader></reader>标签里面配置数据源,这里需要修改从mysql中读取数据的配置信息:
<param key=”ip” value=”127.0.0.1″/>
<param key=”port” value=”3306″/>
<param key=”dbname” value=”lxw1234″/>
<param key=”username” value=”lxw1234″/>
<param key=”password” value=”lxw1234.com”/>
<param key=”sql” value=”select job_id,job_create_time,job_last_update_time,job_type from dmp_job_log limit 500″/>
其他reader参数可参考使用手册中的说明。
<writer></writer>标签里面配置数据目标,这里需要修改往HDFS中写入数据的配置信息:
<param key=”hadoop.job.ugi” value=”?”/> //Hadoop的认证配置,如果没有,就不需要配置;
<param key=”hadoop_conf” value=”/home/lxw1234/config/core-site.xml”/> //Hadoop的配置文件目录
<param key=”dir” value=”hdfs://namenode:8020/tmp/lxw1234/datax/”/> //往hdfs的哪个目录下写数据
<param key=”field_split” value=”\001″/> //写入文件的列分隔符
<param key=”file_type” value=”TXT”/> //写入hdfs的文件类型
<param key=”concurrency” value=”1″/> //写并发,每个并发生成一个文件
其他writer参数可参考使用手册中的说明。
执行:
1. 进入:/home/taobao/datax/bin/,
执行:./datax.py /home/taobao/datax/jobs/mysqlreader_to_hdfswriter_1432867511409.xml
运行结果如图:
执行完后,查看hdfs上生成的文件:
说明:
1. datax中还有很多扩展属性,如:动态参数、动态序列、读写并发等,详见文档说明;
2. 后续其他job,可直接复制修改之前的job配置文件,然后执行即可;
3. hdfs reader和writer插件使用的hadoop jar包版本较低hadoop-0.19.2-core.jar(见/home/taobao/datax/plugins/writer/hdfswriter和/home/taobao/datax/plugins/reader/hdfsreader),使用hdfs插件时候,需要将你的hadoop jar包拷贝至插件目录,比如,我使用的hadoop版本为hadoop-core-0.20.2-cdh3u2.jar,将该jar包拷贝至hdfs插件目录,并删除原来的hadoop-0.19.2-core.jar;
相关推荐
DataX3.0 概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。 设计理念 为了解决异构数据...
数据同步工具DataX-Web是一款基于DataX的可视化数据迁移工具,它提供了用户友好的界面,使得数据库之间的数据同步变得更加简单和直观。DataX是阿里巴巴开源的一款强大的数据同步框架,支持多种数据库之间的数据迁移...
首先,DataX 是阿里巴巴开源的离线数据同步工具,支持多种数据源之间的数据迁移,包括但不限于 MySQL、Oracle、HDFS、HBase、ADS 等。DataX Web 是 DataX 的Web版本,它将原本需要编写配置文件的任务转换为直观的...
"datax-integration-master"可能代表该项目的源代码仓库,其中包含Cloudin-DataX的核心组件和DataX的集成代码。开发者可以通过源代码了解其内部实现机制,进行二次开发或定制化需求。 **5. 应用场景** Cloudin-...
该项目是一款基于Java语言开发的DataX异构数据源离线同步工具源码,包含1332个文件,涵盖804个Java源文件、182个JSON配置文件、165个XML配置文件、75个Markdown文件、56个属性文件、12个JAR包文件、10个PNG文件、8个...
在数据迁移过程中,DataX会根据用户配置的任务参数,调用相应的读插件和写插件,将数据源中的数据高效地迁移到目标数据源。 1. **数据源支持**:DataX目前支持包括关系型数据库(如MySQL、Oracle、SQLServer等)、...
DataX是阿里巴巴开源的一款强大的数据同步工具,它能够高效、稳定地进行大数据迁移工作,支持多种数据源之间的数据同步。这个压缩包中的内容是关于DataX的JSON范例和一个相关的图片,对于初学者来说是很好的学习资源...
在DATAX-master压缩包中,包含了项目的源代码、文档、示例等资源。通过阅读源码,开发者可以深入理解其内部工作原理,甚至定制自己的数据源插件。文档部分提供了详细的使用指南和API参考,帮助用户快速上手。示例...
阿里开源的DataX正是这样一款强大的工具,它专注于解决异构数据源之间的数据同步问题,支持包括Oracle、PostgreSQL和MySQL在内的多种主流数据库。本文将详细介绍DataX的核心功能、工作原理以及如何配置和使用。 一...
总结来说,DataX是一款强大的数据迁移工具,其安装和使用主要包括下载安装包、配置环境变量、编写任务配置文件和执行命令。理解DataX的工作原理和配置语法,能帮助你更有效地进行大规模数据同步任务。在使用过程中,...
DataX是阿里巴巴开源的一款强大的大数据同步工具,它能够支持多种数据源之间的数据迁移,满足大数据生态中不同系统间的数据交换需求。 首先,我们要理解什么是DataX。DataX作为一个全量数据迁移工具,它提供了一个...
《DataX:高效ETL工具详解》 DataX是一款由阿里巴巴开源的...通过DataX-web的图形化界面和DataX引擎的插件化设计,我们可以轻松地管理和执行数据迁移任务,实现数据的高效流动,为数据分析和业务决策提供坚实的基础。
DataX 是阿里云开发的一款高效、稳定、强大的数据同步工具,它能够实现不同数据源之间的数据迁移和同步。DataX 支持多种数据源,包括关系型数据库如 Oracle、MySQL、SQL Server,以及大数据平台如 Hadoop 和 ...
总结,DB2Reader是DataX在处理DB2数据迁移任务时的重要工具,其强大的功能和灵活的配置选项使得数据迁移工作变得简单高效。了解并熟练掌握DB2Reader的使用,能有效提升大数据环境下的数据管理效率,为企业的数据流动...
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之上开发的...
DataX作为一款跨平台的数据同步工具,支持多种数据源之间的数据迁移,包括关系型数据库、非关系型数据库、文件系统等。其设计理念是“一切皆为数据源”,因此能够灵活适应各种复杂的数据环境。DataX采用插件化架构,...
大数据采集技术是现代数据分析领域的重要组成部分,而DataX作为一个高效的数据同步工具,为解决异构数据源之间的数据流动提供了强大的支持。本篇文章将深入探讨DataX的技术概览、工作流程以及其主要特点。 首先,...
基于Flink的异构海量数据源传输系统是一个专门用于处理大规模异构数据的传输系统,该系统采用了 Apache Flink 作为核心引擎,旨在解决海量数据传输和处理的挑战。下面是该系统的关键技术点和架构组件: 1. 数据传输...
linux datax 同步工具离线数据同步工具,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。Github地址:...