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-integration-master"可能代表该项目的源代码仓库,其中包含Cloudin-DataX的核心组件和DataX的集成代码。开发者可以通过源代码了解其内部实现机制,进行二次开发或定制化需求。 **5. 应用场景** Cloudin-...
数据同步工具DataX-Web是一款基于DataX的可视化数据迁移工具,它提供了用户友好的界面,使得数据库之间的数据同步变得更加简单和直观。DataX是阿里巴巴开源的一款强大的数据同步框架,支持多种数据库之间的数据迁移...
首先,DataX 是阿里巴巴开源的离线数据同步工具,支持多种数据源之间的数据迁移,包括但不限于 MySQL、Oracle、HDFS、HBase、ADS 等。DataX Web 是 DataX 的Web版本,它将原本需要编写配置文件的任务转换为直观的...
该项目是一款基于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-web"目录则包含了整个项目的源代码,包括服务端和前端部分,用户可以深入研究其架构设计、业务逻辑以及如何扩展新的数据源支持。 对于学习和研究大数据处理、数据同步或者系统开发的人员来说,DataX Web v...
在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的技术概览、工作流程以及其主要特点。 首先,...
总结,DataX Web作为一个强大的数据同步工具,通过图形化界面大大简化了数据同步任务的创建和管理,尤其适合对技术有一定门槛的企业和个人使用。其丰富的数据源支持、灵活的任务调度以及详尽的监控功能,使其在数据...