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

本文详细介绍了DataX,阿里巴巴开源的异构数据源离线同步工具,用于实现MySQL到HDFS的数据全量同步。DataX采用Framework+plugin架构,支持多种数据源,包括RDBMS、NoSQL、大数据计算系统等。文章阐述了DataX的运行流程、调度策略和与Sqoop的对比,并提供了MySQL到HDFS同步的实例,包括TableMode和QuerySQLMode两种模式,以及参数配置和传参功能的使用。此外,还讨论了DataX的优化和全量表数据同步的自动化脚本生成方法。
摘要由CSDN通过智能技术生成

 在这里插入图片描述

在这里插入图片描述

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,便能跟已有的数据源做到无缝数据同步。

3. 当前使用现状:

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

2.2 DataX框架设计

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

其中:

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

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

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

2.3 DataX运行流程

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

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. 案例需求:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值