DATAX数据同步工具

news2024/11/30 0:37:29

1:DATAX概览

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

1.1:DataX3.0框架设计

在这里插入图片描述

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

Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题

1.1:支持的数据源插件

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库(其他所有的关系型数据库可以使用此通用插件,如达梦神通等国产数据库不需要重新开发插件)、NOSQL、大数据计算系统都已经接入,目前支持数据如下图,详情请点击:DataX数据源参考指南
在这里插入图片描述
在这里插入图片描述
并且对于不满足的插件支持扩展:
datax插件开发指南-https://github.com/alibaba/DataX/blob/master/dataxPluginDev.md

1.3:核心架构

DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个DataX作业生命周期的时序图,从整体架构设计非常简要说明DataX各个模块相互关系。

在这里插入图片描述
核心模块介绍:
1、DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
2、DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。
3、切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。
4、每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。
5、DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0
DataX调度流程:
举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。 DataX的调度决策思路是:
1、DataXJob根据分库分表切分成了100个Task。
2、根据20个并发,DataX计算共需要分配4个TaskGroup。
3、4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。

1.4:数据同步原理

datax任务以json文件进行定义,json结构主要如下。

1、setting对作业执行的设置包括限流、content包括reader和writer的配置,主要是对数据库的连接地址url,user,password,对表及字段的配置。
2、reader查询的结果会作为writer写入的数据源,根据配置的字段表名自动转换为insert语句插入数据,同时支持全量同步和增量同步(通过数据查询时的时间等字段实现,时间可以通过执行脚本时-q进行传参)
3、关于字段的映射默认名字一样的直接映射,如果不一样会报失败,可以利用 sql as进行列名转换

2:实战

1:作业json配置说明

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3
            }
        },
        "content": [
            {
                "reader": {               
                },
               "writer": {     
                }
            }
        ]
    }
}

详细的配置参看官网示例或者安装后在目录下执行./bin/datax.py -help

./bin/datax.py -help 查看具体使用
./bin/datax.py -p 	给作业传参。内容用双引号包起来,并以-D开头
	如:-p "-Dtableame=test_user",作业中取值则${tableName}
./bin/datax.py -j	设置作业jvm配置
	如:-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
./bin/datax.py jobName.json 执行同步作业,json是自己配置的文件
./bin/datax.pNy -r -w 		查看数据源使用示例
	如:./bin/datax.pNy -r  数据源reader -w 数据源writer
	./bin/datax.pNy -r mysqlreader -w mysqlwriter

具体的数据源可以参看安装目录下plugin/或github源码下的目录
在这里插入图片描述

2:实战

streamwriter和streamreader是对内存数据的处理。可以利用streamwriter将前面数据源的结果打印到控制台,或者streamreader读数据入到数据源

2.1:mysql到streamwriter

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "root",
                        "column": [
                            "id",
                            "name"
                        ],
                        "splitPk": "db_id",
                        "connection": [
                            {
                                "table": [
                                    "table"
                                ],
                                "jdbcUrl": [
     "jdbc:mysql://127.0.0.1:3306/database"
                                ]
                            }
                        ]
                    }
                },
               "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "print":true
                    }
                }
            }
        ]
    }
}

3:datax和海豚调度DolphinScheduler

海豚调度中的任务类型包括海豚调度,可以直接进行配置,可以选择数据源或者自定义模板两种
1:数据源
会把此种配置最后转为json文件再调用datax.py去执行。
2:自定义模板,自定义模板就是和datax的.json配置一样,把配置写进行运行即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/589778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NR RLC(四) AM mode

欢迎关注同名微信公众号“modem协议笔记”。 这篇是RLC AM mode的相关内容,RLC的ARQ是一种重传机制,其实NR三个不同的协议层MAC(HARQ)、 RLC(ARQ)和PDCP都有重传功能。为什么三层协议都需要具备重传功能?早期也有思考过这个问题,…

Sui与KuCoin Labs联合推出夏季黑客松,奖池高达28.5万美金!

Sui与KuCoin Labs联合推出的夏季黑客松于2023年5月29日正式开启,本次黑客松将为参赛者提供与Sui基金会团队、KuCoin Labs和其他黑客松合作伙伴及支持者进行技术交流和项目演示的机会。比赛涵盖四个主要赛道,总奖池高达28.5万美金,最终比赛结果…

【目标检测】yolov5模型详解

文章目录 一、Yolov5网络结构1.1 Input1.2 Backbone1.2.1 Conv模块1.2.2 C3模块1.2.3 SPPF模块 1.3 Neck1.4 Head1.4.1 head1.4.2 目标框回归1.4.3 目标的建立1.4.4 NMS(Non-Maximum Suppression) 二、损失函数2.1 分类损失2.2 置信度损失2.3 定位损失 L…

在Linux系统实现服务器端和客户端的套接字通信

目录 一.创建一个socket文件夹用来存放编写的服务器端和客户端程序 二.编写服务器端代码 三.编写客户端代码 四.编译c语言程序 五.断开连接 六.可能涉及到的一些没接触过的知识点 一.创建一个socket文件夹用来存放编写的服务器端和客户端程序 (我系统里的文件…

Revit楼板问题:楼板连接处以及楼板开洞,一键开洞

在我们做楼梯时,楼梯与楼板处的连接处理不是那么符合实际,会出现一些问题,如下图,这样的连接会导致楼梯配筋时钢筋外露。 我们来学习如何调节楼板与楼板连接处的高度,选中楼梯,点击“编辑楼梯”在所需要更改…

STM32堆栈方面知识点

最近弄json,发现经常的堆溢出,然后找问题。因为对STM32堆栈问题没有深刻认识,就花时间好好研究下了堆栈并且做了验证 1.栈地址区间确定 首先找到启动文件,我的启动文件在startup_stm32f40xx.s,一般的启动文件也都在s…

Linux之命令搜索

目录 Linux之命令搜索 Whereis命令 定义 基本信息 举例 which命令 定义 与whereis命令的区别 基本信息 举例 locate 命令 定义 优点 缺点 基本信息 案例 Linux之命令搜索 Whereis命令 定义 whereis --- 搜索系统命令的命令(像绕口令一样&#xff09…

Revit中如何为曲面墙体开洞口,一键开洞?

一、Revit中如何为曲面墙体开洞口 直线墙体开洞可以直接通过编辑轮廓来绘制洞口形状即可,或者可以通过选中墙体选择“墙-洞口”命令来开洞口。 但是曲面墙体开洞并没有那么简单,曲面墙体不能够编辑轮廓,并且选中曲面墙体“墙-洞口”命令只能够…

C++const函数的运用:深度解析const函数的魅力

C 深度解析const函数的魅力 1. C const函数的基本概念(Basic Concepts of const Functions in C)1.1 const函数的定义与特性(Definition and Characteristics of const Functions)1.2 const函数的使用场景(Usage Scena…

docker磁盘空间爆满 通过overlay2 目录名查找对应容器

docker磁盘空间爆满 通过overlay2 目录名查找对应容器 1、docker文件系统占用分析2、使用shell脚本通过overlay2 目录名查找对应容器 1、docker文件系统占用分析 du -sh /var/lib/docker/*看到占用磁盘空间最大的目录是docker存储根目录下的overlay2目录 再查看docker存储根目…

Android智能指针SP WP

1.概述 Android的C部分代码中有大量的sp/wp存在,意思是strong pointer和weak pointer,看字面意思就是指针相关的东西。C是通过new和delete进行内存的分配和释放的,但是有时候开发者会忘记使用delete导致内存泄露,所以Android中就…

设计师们都在用的AI作图神器,你还不抓紧入手一款

人工智能在机器和计算机控制的机器人中模拟人类智能过程。这允许计算机系统执行繁重的任务,帮助人类专注于更重要的事情。因此,多年来,工作场所对 AI 集成的需求不断增加。 同样,人工智能正迅速成为设计行业的一部分。在平面设计…

MyBatis与Spring的整合

学习目标: 掌握Spring与MyBatis的集成 掌握使用SqlSessionTemplate实现整合 掌握使用MapperFactoryBean实现整合 掌握Spring的事务切面实现声明式事务处理 掌握使用注解实现声明式事务处理 学习内容: 1.整合思路梳理 思路梳理 以上流程可以全部移…

RHCE 作业二

1. 第一步:配置服务端server 1>安装chrony [rootserver ~]# yum install chrony -y 2>编辑配置文件,修改为阿里的时间服务地址 [rootserver ~]# vim /etc/chrony.conf 3> 重启服务 [rootserver ~]# systemctl restart chronyd 4>测试 5>…

证件照制作教程:如何使用在线工具制作高质量的证件照

证件照制作:让你的形象更加完美 介绍 证件照是人们在日常生活、工作和学习中必不可少的一项证明身份的重要文件。而证件照的质量好坏不仅会直接影响到证件审核的效率,还会影响到自己形象的好坏。为了让自己的形象更加完美,我们需要制作高质…

公网使用SSH远程连接安卓手机Termux - Android手机服务器

文章目录 1.安装ssh2.安装cpolar内网穿透3.远程ssh连接配置4.公网远程连接5.固定远程连接地址 转载自cpolar极点云的文章:公网SSH远程连接Termux – 电脑使用安卓Termux 「无需公网IP」 使用安卓机跑东西的时候,屏幕太小,有时候操作不习惯。不…

Python期末复习题库(下)——“Python”

小雅兰期末加油冲冲冲!!! 1. (单选题)下列关于文件打开模式的说法,错误的是( C )。 A. r代表以只读方式打开文件 B. w代表以只写方式打开文件 C. a代表以二进制形式打开文件 D. 模式中使用时,文件可读可写 2. (单选题)下列选项中,以追加…

【操作系统】04.设备管理

IO软件层次 IO设备 机械部件 分类 设备控制器 寄存器编址 IO控制方式 程序直接控制方式 中断驱动方式 DMA方式 通道控制方式 中断处理程序 设备驱动程序 设备独立性软件 IO调度 设备保护 设备分配与回收 静态分配和动态分配 数据结构 设备分配步骤 改进 缓冲区管理 缓冲区的…

5款冷门小工具,让你的电脑变得与众不同

每个人的电脑中都会安装很多软件,可能还保留着很多不为人知的冷门软件。不过虽然冷门,但绝不意味着低能,相反很多冷门软件的功能十分出色。闲话少说,接下来我就给大家推荐5款冷门小工具,看一看有没有你喜欢的。 1.图标…

供应商评估时要考虑的 5 个关键因素

在任何供应商评估中,无论是新供应商还是现有供应商,衡量其生产能力、业绩、风险、质量和环境影响都很重要。然而,如果没有一个有组织的评估方法和一个较大的框架来使评估信息为你所用,单靠衡量这些因素将无济于事。 为什么要进行…