异构数据源离线同步工具之DataX的安装部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 异构数据源离线同步工具之DataX的安装部署🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线🍅该博客参考文献:阿里云DataX,DataX官网,尚硅谷大数据研究院————————————————版权声明:本文为CSDN博主「程序员小王java」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_44385486/a

一、DataX概述

1、什么是DataX

DataX是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle,DB2 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。在阿里巴巴集团内被广泛使用的离线数据同步工具


DataX开源地址:https://github.com/alibaba/DataX

0.png


2、DataX的设计

  为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源,当需要接入一个新的数据源的时候,只需要将数据源对接到DataX,便能跟已有的数据源做到无缝数据同步了!


1.png


3、支持的数据源

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图,详情请点击:DataX数据源参考指南

image.png


4、DataX框架设计

2.png


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


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


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


5、运行原理

(1)运行原理


3.png


Job:单个作业的管理节点,负责数据清洗,子任务划分,TaskGroup监控管理


**Task:**由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作


Schedule(计划表):将Task组成TaskGroup,单个TaskGroup的并发量为5


**TaskGroup:**负责启动Task


(2)举例:


用户提交了一个DataX作业,并且配置20个并发,目的是将一个100张分表的mysql数据同步到ods里面。


DataX的调度决策思路是:


DataX的Job根据分库分表切分成100个Task。


根据20个并发,DataX计算共需要分配4个TaskGroup


4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task.


6、当前现状

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


7、DataX与Sqoop的对比

 Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个[关系型数据库](https://baike.baidu.com/item/关系型数据库/8999831)(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

4.png


二、DataX

1、官方地址

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


源码地址:https://github.com/alibaba/DataX


2、前置条件

Linux(我使用的是阿里云)


阿里云参考我的另外一篇博客:阿里云部署javaWeb项目依赖软件(jdk、tomcat、Mariadb数据库)的安装_程序员小王的博客-CSDN博客


JDK(1.8 以上,推荐 1.8)


5.png


Python(使用的是 Python2.7.5X)


6.png


4、datax-web(项目地址:https://github.com/WeiYe-Jing/datax-web


3、安装部署DataX

(1)访问官网下载安装包


http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz


(2)使用filezilla上传安装包到服务器(阿里云)datax节点

7.png

8.png



(3)解压安装包


  • 将安装到/root/datax/路径下
tar -zxvf datax.tar.gz

安装成功后

9.png


(4)运行自检脚本测试(需要在bin下启动)

python datax.py /root/datax/datax/job/job.json


10.png

11.png


三、DataX实战案例之从 stream 流读取数据并打印到控制台

(1)查看配置模板

python datax.py -r streamreader -w streamwriter
[root@iZbp1bq6vb70qo4o5mrxdzZ bin]# python datax.py -r streamreader -w streamwriter
DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
Please refer to the streamreader document:
     https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md 
Please refer to the streamwriter document:
     https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md 
Please save the following configuration as a json file and  use
     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
to run the job.
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "streamreader", 
                    "parameter": {
                        "column": [], 
                        "sliceRecordCount": ""
                    }
                }, 
                "writer": {
                    "name": "streamwriter", 
                    "parameter": {
                        "encoding": "", 
                        "print": true
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}


(2)根据模板编写配置文件


record:  出错记录数超过record设置的条数时,任务标记为失败.


percentage: 当出错记录数超过percentage百分数时,任务标记为失败.


channel表示任务并发数。


bytes表示每秒字节数,默认为0(不限速)。


-在job目录下创建文件:
vim stream2stream.json

12.png


运行


-在datax执行命令:
[root@iZbp1bq6vb70qo4o5mrxdzZ datax]# python bin/datax.py job/stream2stream.json

13.png


(3)观察控制台输出结果

14.png

10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!
10      hello,你好,世界-DataX,我是王恒杰!


四、最后的话

 因为DataX内容较多,预计将分五部份完成DataX博客的专栏,分别是

【1】异构数据源离线同步工具之DataX的安装部署


【2】异构数据源离线同步工具之DataX的可视化工具DataX-Web


【3】读取 MySQL 中的数据Oracle 数据库


【4】读取 Oracle中的数据Mysql数据库


【5】读取 Oracle中的数据DB2数据库


【6】读取DB2中的数据Mysql数据库


相关文章
|
20天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute 生态系统中的数据集成工具
【8月更文第31天】在大数据时代,数据集成对于构建高效的数据处理流水线至关重要。阿里云的 MaxCompute 是一个用于处理大规模数据集的服务平台,它提供了强大的计算能力和丰富的生态系统工具来帮助用户管理和处理数据。本文将详细介绍如何使用 DataWorks 这样的工具将 MaxCompute 整合到整个数据处理流程中,以便更有效地管理数据生命周期。
39 0
|
2月前
|
DataWorks API 数据库
DataWorks操作报错合集之在使用 OceanBase (OB) 作为数据源进行数据集成时遇到报错,该如何排查
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
关系型数据库 MySQL 大数据
DataX:数据同步的超音速英雄!阿里开源工具带你飞越数据传输的银河系,告别等待和故障的恐惧!快来见证这一数据工程的奇迹!
【8月更文挑战第13天】DataX是由阿里巴巴开源的一款专为大规模数据同步设计的工具,在数据工程领域展现强大竞争力。它采用插件化架构,支持多种数据源间的高效迁移。相较于Apache Sqoop和Flume,DataX通过并发写入和流处理实现了高性能同步,并简化了配置流程。DataX还支持故障恢复,能够在同步中断后继续执行,节省时间和资源。这些特性使其成为构建高效可靠数据同步方案的理想选择。
78 2
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之如何解决datax同步任务时报错ODPS-0410042:Invalid signature value
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在使用MaxCompute进行数据集成同步到OSS时,出现表名和OSS文件名不一致且多了后缀,该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
DataWorks Java 调度
DataWorks产品使用合集之进行离线同步时,如何使用DataX的Reader插件来实现源端过滤
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
56 0
DataWorks产品使用合集之进行离线同步时,如何使用DataX的Reader插件来实现源端过滤
|
2月前
|
Java DataX 开发工具
datax-elasticsearch 同步踩坑记录
为了用datax同步es数据到其他地方,踩了不少坑.记录一下.
78 0
|
3月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
DataWorks NoSQL Java
DataWorks操作报错合集之数据集成使用公共数据集成资源组写入到redis数据源(使用的是VPC连接),提示以下错误:request action:[InnerVpcGrantVpcInstanceAccessToApp], message:[InvalidInstanceId.怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。

热门文章

最新文章