9、DataX部署

第1章 DataX简介

1.1 DataX概述

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

源码地址:https://github.com/alibaba/DataX

1.2 DataX支持的数据源

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图。

类型

数据源

Reader(读)

Writer(写)

RDBMS 关系型数据库

MySQL

Oracle

OceanBase

SQLServer

PostgreSQL

DRDS

通用RDBMS

阿里云数仓数据存储

ODPS

ADS

OSS

OCS

NoSQL数据存储

OTS

Hbase0.94

Hbase1.1

Phoenix4.x

Phoenix5.x

MongoDB

Hive

Cassandra

无结构化数据存储

TxtFile

FTP

HDFS

Elasticsearch

时间序列数据库

OpenTSDB

TSDB

第2章 DataX架构原理

2.1 DataX设计理念

为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

2.2 DataX框架设计

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

2.3 DataX运行流程

下面用一个DataX作业生命周期的时序图说明DataX的运行流程、核心概念以及每个概念之间的关系。

2.4 DataX调度决策思路

举例来说,用户提交了一个DataX作业,并且配置了总的并发度为20,目的是对一个有100张分表的mysql数据源进行同步。DataX的调度决策思路是:

(1)DataX Job根据分库分表切分策略,将同步工作分成100个Task。

(2)根据配置的总的并发度20,以及每个Task Group的并发度5,DataX计算共需要分配4个TaskGroup。

(3)4个TaskGroup平分100个Task,每一个TaskGroup负责运行25个Task。

2.5 DataX与Sqoop对比

功能

DataX

Sqoop

运行模式

单进程多线程

MR

分布式

不支持,可以通过调度系统规避

支持

流控

有流控功能

需要定制

统计信息

已有一些统计,上报需定制

没有,分布式的数据收集不方便

数据校验

在core部分有校验功能

没有,分布式的数据收集不方便

监控

需要定制

需要定制

第3章 DataX部署

1)下载DataX安装包并上传到hadoop102的/opt/software

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

2)解压datax.tar.gz到/opt/module

[shuidi@hadoop102 software]$ tar -zxvf datax.tar.gz -C /opt/module/

3)自检,执行如下命令

[shuidi@hadoop102 ~]$ python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json

出现如下内容,则表明安装成功

2024-06-27 19:42:53.328 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2024-06-27 19:42:43
任务结束时刻                    : 2024-06-27 19:42:53
任务总计耗时                    :                 10s
任务平均流量                    :          253.91KB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0

第4章 DataX使用

4.1 DataX使用概述

4.1.1 DataX任务提交命令

DataX的使用十分简单,用户只需根据自己同步数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行如下命令提交数据同步任务即可。

[shuidi@hadoop102 datax]$ python bin/datax.py path/to/your/job.json

4.2.2 DataX配置文件格式

可以使用如下命名查看DataX配置文件模板。

[shuidi@hadoop102 software]$ cd /opt/module/datax/
[shuidi@hadoop102 datax]$ python bin/datax.py -r mysqlreader -w hdfswriter

配置文件模板如下,json最外层是一个job,job包含setting和content两部分,其中setting用于对整个job进行配置,content用户配置数据源和目的地。

Reader和Writer的具体参数可参考官方文档,地址如下:

https://github.com/alibaba/DataX/blob/master/README.md

4.2 同步MySQL数据到HDFS案例

案例要求:同步gmall数据库中base_province表数据到HDFS的/base_province目录

需求分析:要实现该功能,需选用MySQLReader和HDFSWriter,MySQLReader具有两种模式分别是TableMode和QuerySQLMode,前者使用table,column,where等属性声明需要同步的数据;后者使用一条SQL查询语句声明需要同步的数据。

下面分别使用两种模式进行演示。

4.2.1 MySQLReader之TableMode

1)编写配置文件

(1)创建配置文件base_provin

<think>好的,用户想了解如何部署和测试DataX数据传输工具。首先,我需要根据提供的引用内容整理出部署步骤。引用3提到DataX是阿里云的开源工具,用于离线数据同步,支持多种数据源。部署的话,可能需要先下载安装包,然后配置环境。引用1里提到DataX的安装成功验证方法,使用自带的测试作业,是一个json文件。所以部署步骤可能包括安装Java环境、下载DataX、解压并测试。 接下来,测试方法部分。用户需要知道如何运行一个测试作业,确保DataX正常工作。根据引用1,提交任务用的是命令行,比如python datax.py job.json。这里需要说明如何执行自带测试案例,以及如何查看结果。可能还需要提到日志文件的位置和如何分析输出结果,确认同步是否成功。 然后,用户可能需要实际应用的例子。比如同步MySQL到HDFS,这时候需要编写对应的json配置文件。引用4提到了Hive的动态分区设置,不过DataX可能直接处理不同数据源,这里可能需要指导用户如何配置reader和writer部分。同时,注意引用2比较了DataX的性能,可以建议用户参考性能测试的方法,比如调整通道数或批量大小来优化传输速度。 还要注意用户可能遇到的问题,比如环境依赖、权限问题或者json配置错误。需要提醒用户检查Java版本,确保路径正确,以及json格式的正确性。此外,引用1和引用3都提到json文件的使用,所以强调正确编写json配置文件的重要性。 最后,生成相关问题时要围绕部署、测试、优化和应用场景,结合已有的引用内容,比如性能分析、优化方法、不同数据源的同步案例等。确保问题能够引导用户进一步探索DataX的功能和使用技巧。</think>### DataX部署与测试方法详解 DataX是阿里巴巴开源的离线数据同步工具,支持MySQL、Oracle、HDFS等异构数据源互通[^3]。以下是部署与测试的核心步骤: --- #### 一、部署流程 1. **环境准备** - 操作系统:支持Linux/Unix/MacOS - Java环境:需安装JDK 1.8+,配置`JAVA_HOME`环境变量 ```bash java -version # 验证Java版本 ``` 2. **安装DataX** - 下载地址:https://github.com/alibaba/DataX - 解压安装包并验证: ```bash unzip datax.zip cd datax/bin python datax.py ../job/job.json # 执行测试作业[^1] ``` 3. **验证安装** - 成功提示示例: ``` 任务执行完毕,总耗时:3s 读出记录总数:5 | 写入记录总数:5 ``` --- #### 二、测试方法 1. **基础测试案例** ```bash # 运行内置的stream2stream测试 python datax.py ../job/job.json ``` - 日志文件路径:`datax/log/xxxx-xx-xx.log` 2. **自定义测试(以MySQL到HDFS为例)** - 编写作业配置文件`mysql2hdfs.json`: ```json { "job": { "content": [{ "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "123456", "column": ["id","name"], "connection": [{ "table": ["test_table"], "jdbcUrl": ["jdbc:mysql://localhost:3306/test_db"] }] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://localhost:9000", "fileType": "text", "path": "/output" } } }] } } ``` 3. **性能验证** - 通过调整`channel`数量提升传输速度[^2]: ```json "setting": { "speed": { "channel": 4 // 通道数优化 } } ``` --- #### 三、常见问题处理 1. **环境依赖问题** - 错误现象:`No such file or directory: &#39;javac&#39;` - 解决方法:检查JDK安装与`JAVA_HOME`配置 2. **数据源连接失败** - 错误现象:`Connection refused` - 解决方法:检查数据库白名单、防火墙设置 3. **HDFS权限问题** - 错误现象:`Permission denied` - 解决方法:添加Kerberos认证或设置`hadoop.http.staticuser.user=root` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值