异构数据源同步,DataX工具解决方案

DataX是一个开源的异构数据同步工具,支持多种数据源和数据格式,包括:

  • 数据库:MySQL、Oracle、SQL Server、PostgreSQL、HBase、MongoDB、Elasticsearch等
  • 文件系统:HDFS、S3、FTP、HTTP等
  • 消息队列:Kafka、RabbitMQ、ActiveMQ等

DataX使用配置文件来描述同步任务,配置文件采用JSON格式。

以下是一个简单的DataX配置文件示例,用于将MySQL数据同步到HDFS:

JSON

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "password",
            "column": [
              {
                "name": "id",
                "type": "int"
              },
              {
                "name": "name",
                "type": "string"
              }
            ],
            "splitPk": "id"
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "path": "/data/datax/output"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}

这个配置文件定义了一个读取器和一个写入器。读取器从MySQL数据库中读取数据,写入器将数据写入HDFS。

读取器

读取器负责从源数据源中读取数据。DataX支持多种读取器,包括:

  • mysqlreader:用于读取MySQL数据
  • oraclereader:用于读取Oracle数据
  • sqlserverreader:用于读取SQL Server数据
  • hbasereader:用于读取HBase数据
  • mongodbreader:用于读取MongoDB数据
  • elasticsearchreader:用于读取Elasticsearch数据

写入器

写入器负责将数据写入目标数据源。DataX支持多种写入器,包括:

  • hdfswriter:用于写入HDFS数据
  • hbasewriter:用于写入HBase数据
  • mongodbwriter:用于写入MongoDB数据
  • elasticsearchwriter:用于写入Elasticsearch数据
  • mysqlwriter:用于写入MySQL数据
  • oraclewriter:用于写入Oracle数据
  • sqlserverwriter:用于写入SQL Server数据

配置文件

配置文件用于描述同步任务。配置文件采用JSON格式,包含以下几个部分:

  • job:定义同步任务的总体配置
  • content:定义同步任务的详细配置
  • setting:定义同步任务的其他配置

job

job部分定义同步任务的总体配置,包括:

  • name:同步任务的名称
  • reader:定义读取器的配置
  • writer:定义写入器的配置
  • setting:定义其他配置

content

content部分定义同步任务的详细配置,包括:

  • reader:定义读取器的配置
  • writer:定义写入器的配置

setting

setting部分定义同步任务的其他配置,包括:

  • speed:定义同步任务的速度
  • preSql:定义同步任务执行之前的SQL语句
  • postSql:定义同步任务执行之后的SQL语句

执行DataX任务

DataX任务可以通过命令行或Web界面执行。

命令行

使用以下命令执行DataX任务:

datax.py <job.json>

例如,要执行上面的配置文件,可以使用以下命令:

datax.py job.json

Web界面

DataX提供了Web界面,可以使用Web界面来执行DataX任务。

要使用Web界面,需要将DataX启动为Web服务。启动DataX Web服务后,可以通过浏览器访问Web界面。

在Web界面中,可以创建新的同步任务,并执行同步任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一. DataX3.0 概览  DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。  设计理念  为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX,便能跟已有的数据源做到无缝数据同步。  当前使用现状  DataX 在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了 6 年之久。目前每天完成同步 8w 多道作业,每日传输数据量超过 300TB。  此前已经开源 DataX1.0 版本,此次介绍为阿里巴巴开源全新版本 DataX3.0,有了更多更强大的功能和更好的使用体验。Github 主页地址:https://github.com/alibaba/DataX。  二、DataX3.0 框架设计  DataX 本身作为离线数据同步框架,采用 Framework plugin 架构构建。将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。  Reader:Reader 为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。  Writer: Writer 为数据写入模块,负责不断向 Framework 取数据,并将数据写入到目的端。  Framework:Framework 用于连接 reader 和 writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。  三. DataX3.0 插件体系  经过几年积累,DataX 目前已经有了比较全面的插件体系,主流的 RDBMS 数据库、NOSQL、大数据计算系统都已经接入。DataX 目前支持数据如下:  DataX Framework 提供了简单的接口与插件交互,提供简单的插件接入机制,只需要任意加上一种插件,就能无缝对接其他数据源。详情请看:DataX 数据源指南  四、DataX3.0 核心架构  DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个 DataX 作业生命周期的时序图,从整体架构设计非常简要说明 DataX 各个模块相互关系。  核心模块介绍:  DataX 完成单个数据同步的作业,我们称之为 Job,DataX 接受到一个 Job 之后,将启动一个进程来完成整个作业同步过程。DataX Job 模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子 Task)、TaskGroup 管理等功能。  DataXJob 启动后,会根据不同的源端切分策略,将 Job 切分成多个小的 Task (子任务),以便于并发执行。Task 便是 DataX 作业的最小单元,每一个 Task 都会负责一部分数据的同步工作。  切分多个 Task 之后,DataX Job 会调用 Scheduler 模块,根据配置的并发数据量,将拆分成的 Task 重新组合,组装成 TaskGroup (任务组)。每一个 TaskGroup 负责以一定的并发运行完毕分配好的所有 Task,默认单个任务组的并发数量为5。  每一个 Task 都由 TaskGroup 负责启动,Task 启动后,会固定启动 Reader>Channel>Writer 的线程来完成任务。 标签:数据同步
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。 任务"执行器"支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败告警、任务依赖,执行器CPU.内存.负载的监控等等。后续还将提供更多的数据源支持、数据转换UDF、表结构同步、数据同步血缘等更为复杂的业务场景。 DataX Web安装环境: Language: Java 8(jdk版本建议1.8.201以上) Python2.7(支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) Environment: MacOS, Windows,Linux Database: Mysql5.7 DataX Web功能特点: 1、通过Web构建DataX Json; 2、DataX Json保存在数据库中,方便任务的迁移,管理; 3、Web实时查看抽取日志,类似Jenkins的日志控制台输出功能; 4、DataX运行记录展示,可页面操作停止DataX作业; 5、支持DataX定时任务,支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效; 6、调度采用中心式设计,支持集群部署; 7、任务分布式执行,任务"执行器"支持集群部署; 8、执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行; 9、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等; 10、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度; 11、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务; 12、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试; 13、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式; 14、用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色; 15、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; 16、运行报表:支持实时查看运行数据,以及调度报表,如调度日期分布图,调度成功分布图等; 17、指定增量字段,配置定时任务自动获取每次的数据区间,任务失败重试,保证数据安全; 18、页面可配置DataX启动JVM参数; 19、数据源配置成功后添加手动测试功能; 20、可以对常用任务进行配置模板,在构建完JSON之后可选择关联模板创建任务; 21、jdbc添加hive数据源支持,可在构建JSON页面选择数据源生成column信息并简化配置; 22、优先通过环境变量获取DataX文件目录,集群部署时不用指定JSON及日志目录; 23、通过动态参数配置指定hive分区,也可以配合增量实现增量数据动态插入分区; 24、任务类型由原来DataX任务扩展到Shell任务、Python任务、PowerShell任务; 25、添加HBase数据源支持,JSON构建可通过HBase数据源获取hbaseConfig,column; 26、添加MongoDB数据源支持,用户仅需要选择collectionName即可完成json构建; 27、添加执行器CPU、内存、负载的监控页面; 28、添加24类插件DataX JSON配置样例 29、公共字段(创建时间,创建人,修改时间,修改者)插入或更新时自动填充 30、对swagger接口进行token验证 31、任务增加超时时间,对超时任务kill datax进程,可配合重试策略避免网络问题导致的datax卡死。 32、添加项目管理模块,可对任务分类管理; 33、对RDBMS数据源增加批量任务创建功能,选择数据源,表即可根据模板批量生成DataX同步任务; 34、JSON构建增加ClickHouse数据源支持; 35、执行器CPU.内存.负载的监控页面图形化; 36、RDBMS数据源增量抽取增加主键自增方式并优化页面参数配置; 37、更换MongoDB数据源连接方式,重构HBase数据源JSON构建模块; 38、脚本类型任务增加停止功能; 39、rdbms json构建增加postSql,并支持构建多个preSq

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值