文章目录

  • 1. DataX简介
  • 1.1 DataX概述
  • 1.2 DataX支持的数据源
  • 2. DataX架构原理
  • 2.1 DataX设计理念
  • 2.2 DataX框架设计
  • 2.3 DataX运行流程
  • 2.4 DataX调度决策思路
  • 2.5 DataX与Sqoop对比
  • 3. DataX部署
  • 3.1 下载DataX安装包并上传到hadoop102的/opt/software
  • 3.2 解压datax.tar.gz到/opt/module
  • 3.3 自检,执行如下命令


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插件,纳入到整个同步框架中。

阿里数据架构图 阿里 大数据架构_架构_02

Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。

Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。

Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

2.3 DataX运行流程

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

阿里数据架构图 阿里 大数据架构_数据仓库_03

Job:单个数据同步的作业,称为一个Job,一个Job启动一个进程。

Task:根据不同数据源的切分策略,一个Job会切分为多个Task,Task是DataX作业的最小单元,每个Task负责一部分数据的同步工作。

TaskGroup: Scheduler调度模块会对Task进行分组,每个Task组称为一个Task Group。每个TaskGroup负责以一定的并发度运行其所分得的Task,单个Task Group的并发度为5。

Reader→Channel→Writer:每个Task启动后,都会固定启动Reader→Channel→Writer的线程来完成同步工作。

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部署

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

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

阿里数据架构图 阿里 大数据架构_数据仓库_04

3.2 解压datax.tar.gz到/opt/module

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

阿里数据架构图 阿里 大数据架构_数据仓库_05

3.3 自检,执行如下命令

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

阿里数据架构图 阿里 大数据架构_数据仓库_06