大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】

 大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】_第1张图片

大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】_第2张图片

DataX源码地址:GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。

一、第1章 DataX介绍

1.1 DataX概述

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

2. 特点:

① DataX侧重于同步数据库中的数据

② DataX没有所谓版本号,这有这一个开源的版本

③ 开源的,有些功能受限,商业版名为DataWorks

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的设计理念

1.异构数据源同步问题,就是不同框架之间同步数据时,相同的数据在不同框架中具有不同的数据结构。

2. DataX的设计理念:

DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接数据各种数据源

当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】_第3张图片

3. 当前使用现状:

DataX在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了6年之久。目前每天完成同步8W多道作业,每日传输数据量超过300TB。

2.2 DataX框架设计

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

大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】_第4张图片

其中:

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

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

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

2.3 DataX运行流程

DataX支持单机多线程模式完成同步作业,下面用一个DataX作业生命周期的时序图,用以说明DataX的运行流程、核心概念以及每个概念的关系。

大数据-数仓-数据采集-业务数据(二):全量同步采集【MySQL<-->DataX(全量)<-->HDFS】【每日全量:每天都将业务数据库中全部数据同步到数据仓库,是保证两侧数据同步的最简单方式】_第5张图片

1.核心模块介绍:

JobDataX完成单个数据同步的作业称之为Job,Job模块是单个作业的中枢管理节点,承担着数据清理、子任务切分、TaskGroup管理等功能。

Task由Job切分出来的子任务。Task是DataX作业中的最小单元,每个一个Task都会负责一部分的同步工作

Scheduler:Scheduler模块根据并发量重组Task

TaskGroup:重组后的多个Task的集合,即任务组。负责以一定的并发量运行分配好的所有Task,默认并发量5

2.流程介绍:

1)DataX接受到一个Job作业后,将启动一个进程来完成整个作业同步过程。

2)Job启动后,会根据不同数据源端的切分策略,将Job切分成多个小的Task(子任务),以便并发执行。

3)切分多个Task之后,Job会调用Scheduler模块根据配置的并发数量,将Task重新组合,成为TaskGroup(任务组)。

4)每个Task都是由TaskGroup负责启动,Task启动后,会固定启动Reder->Channel->Writer的线程来完成任务的同步工作。

5)DataX作业运行起来之后,Job监控并等待多个TaskGroup模块任务完成,等待所有的TaskGroup任务完成Job成功退出。否则,异常退出。

2.4 DataX调度策略思路

1. 案例需求:

如果用户提交了一个DataX作业&

你可能感兴趣的:(#,数据库,大数据,数据仓库)