DataX

DataX

阿里开源的一个异构数据源离线同步工具,实现各种异构数据源之间稳定高效的数据同步功能。
在这里插入图片描述

官方文档

  • git
    https://github.com/alibaba/DataX

    • 快速使用
      https://github.com/alibaba/DataX/blob/master/userGuid.md
  • gitee
    https://gitee.com/mirrors/DataX/tree/master

  • 原理介绍
    https://github.com/alibaba/DataX/blob/master/introduction.md
    https://developer.aliyun.com/article/59373

  • 使用案例
    https://developer.aliyun.com/article/696839?spm=a2c6h.14164896.0.0.1df954a7TtovqZ

DataX3.0框架设计

将数据源读取和写入抽象成为Reader/Writer插件
在这里插入图片描述

Reader

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

Framework

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

Transformer

https://github.com/alibaba/DataX/blob/master/transformer/doc/transformer.md

Writer

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

调度

在这里插入图片描述
Job:DataX完成单个数据同步的作业
Job启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行
每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。

使用

1. 创建作业的配置文件(json格式)

{
	//一个dx作业
    "job": {
    	//数据的源和目的
        "content": [
            {
            	//读数据 配置
                "reader": {
                	//reader插件名称
                    "name": "reader插件", 
                    //插件入参
                    "parameter": {
                    }
                }, 
                //写数据 配置
                "writer": {
                    "name": "writer插件", 
                    "parameter": {
                        "encoding": "", 
                        "print": true
                    }
                }
            }
        ], 
        //全局channel配置,脏数据配置,限速配置等
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}
插件配置详解

在github可以看到,支持的插件都在根目录下,命名规则是: 数据源 + reader/writer
在插件目录下有 doc/xxx.md 文件,详细介绍了该插件的使用入参
在这里插入图片描述

  • myslq 读写插件
    https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md
    https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md
  • odps 读写插件
    https://github.com/alibaba/DataX/blob/master/odpsreader/doc/odpsreader.md
    https://github.com/alibaba/DataX/blob/master/odpswriter/doc/odpswriter.md
  • es 写插件
    https://github.com/alibaba/DataX/blob/master/elasticsearchwriter/doc/elasticsearchwriter.md

2. java启动datax任务

# 官方提供的python启动范式, 启动的时候会加载两个配置文件  datax.py 和job.json

$ python datax.py ./job.json 

DataX 3.0执行 入口类:com.alibaba.datax.core.Engine

datax.py 转换为java脚本 :

 java
 #JVM启动参数
 -server
 -Xms1g
 -Xmx1g
 -XX:+HeapDumpOnOutOfMemoryError
 -XX:HeapDumpPath=/dataXPath/log
 #环境变量
 -Dloglevel=info
 -Dfile.encoding=UTF-8
 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener
 -Djava.security.egd=file:///dev/urandom
 -Ddatax.home=/dataXPath
 -Dlogback.configurationFile=/dataXPath/conf/logback.xml
 -classpath /dataXPath/lib/*
 -Dlog.file.name=jobName 
 
 com.alibaba.datax.core.Engine
 -mode standalone
 -jobid -1
 -job /dataXPath/bin/jobName.json
  • com.alibaba.datax.core.Engine的三个参数,分别是job、jobid和mode,
    1. 其中job是用户配置的json文件路径,
    2. jobid和mode 是python文件带进来的,单机模式下可以忽略
//在Java项目中可以 自己拼接出启动参数,然后runtime.exec执行

Process process = runtime.exec("");

3. 同步结果分析

同步进程执行完后,获取执行日志。根据日志分析同步结果

...
2015-12-17 11:20:25.263 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2015-12-17 11:20:15
任务结束时刻                    : 2015-12-17 11:20:25
任务总计耗时                    :                 10s
任务平均流量                    :              205B/s
记录写入速度                    :              5rec/s
读出记录总数                    :                  50
读写失败总数                    :                   0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值