数据同步工具Sqoop和DataX
在日常大数据生产环境中,经常会有集群数据集和关系型数据库互相转换的需求,在需求选择的初期解决问题的方法————数据同步工具就应运而生了。此次我们选择两款生产环境常用的数据同步工具进行讨论
Sqoop
通常数据开发岗位的朋友都会较早的接触这款工具,因为Sqoop的设计初衷就是在Hadoop和DB(关系型数据库)、大型机(Oracle服务机)之间搭建桥梁,斩断数据同步的隔阂。该项目起步于2009年,最早是Hadoop的一个三方模块的存在,后来社区开发者为了能够快速部署和使用,同时也为了开发人员能够更快速的迭代开发,最终成为Apache基金会的顶级项目。
核心机制

Sqoop是基于MR的分布式数据同步工具,使用MR完成数据的导入和导出,依赖计算框架的能力,可以实现并行操作以及容错能力
导入
在读取数据库文件时,sqoop底层逐行读取,导入过程的输出是一组文件,其中包含导入的表或数据集副本,因为
底层使用的是MR并行处理,所以这一过程会产生多个文件(序列化二进制文件或逗号分割的文本文件)。导入的过程
由JAVA类控制,此类可将数据与序列化文件进行序列化和反序列化。同时开放的接口可以使用其他工具解析分隔记录
数据。导出
当MR或Hive生成的查询处理结果生成结果集时,可以使用其导入关系型数据库。Sqoop将HDFS文件并行读取一组文本文件,将它们解析记录,并将它们插入到数据库表中作为新行,供外部程序或用户进行查询。
特点
- 分布式可水平扩展
- 运行模式基于MR
- 依赖hadoop生态圈,某些业务场景下限制多
- 负载默认均匀分布,若不人为修改,某些状况下会导致负载倾斜
- 对压缩文件支持不友好
- 启动速度相对较慢
DataX
DataX是阿里开源的一个异构数据源离线同步工具,用于在关系型数据库、HDFS、Hive、ODPS(阿里云组件)、HBase、DRDS、ADS、TableStore(OTS)、FTP等各种异构数据源之间做稳定高效的数据同步。从官方给出的定义不难看出这一数据同步框架面向更多数据场景,目前离线同步数据源已支持DB2、Kafka等工具。

由上图可知,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
框架设计

DataX在设计之初就将同步理念抽象成框架+插件的形式.框架负责内部的序列化传输,缓冲,并发,转换等而核心技术问题,数据的采集(Reader)和落地(Writer)完全交给插件执行

DataX Framework提供了简单的接口与插件交互,提供简单的插件接入机制,只需要任意加上一种插件,就能无缝对接其他数据源。经过不停的迭代,当前DataX已经有了比较全面的插件体系,包括主流的RDBMS,NOSQL以及大数据计算系统

核心模块介绍:
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成功退出。否则,异常退出,进程退出值非
特点
- 单线程多进程,不支持分布式
- 数据转换功能丰富,可在传输过程中脱敏、过滤
- 传输速度可控,具备信息统计功能
- 可以进行数据校验
总结
对比两者的特点,不难发现Sqoop依赖于Hadoop生态对HDFS、Hive支持友善,在处理数仓大表的速度相对较快,但不具备统计和校验能力。而DataX无法分布式部署,可以在传输过程中进行过滤,并且可以统计传输数据的信息,因此在业务场景复杂(表结构变更)更适用,同时对于不同的数据源支持更好。且DataX的开源版本目前只支持单机部署,需要依赖调度系统实现多客户端,同时不支持自动创建表和分区。
数据同步工具Sqoop和DataX的更多相关文章
- Spark记录-阿里巴巴开源工具DataX数据同步工具使用
1.官网下载 下载地址:https://github.com/alibaba/DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSe ...
- 环境篇:数据同步工具DataX
环境篇:数据同步工具DataX 1 概述 https://github.com/alibaba/DataX DataX是什么? DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 ...
- 数据集成工具—Sqoop
数据集成/采集/同步工具 @ 目录 数据集成/采集/同步工具 Sqoop简介 Sqoop安装 1.上传并解压 2.修改文件夹名字 3.修改配置文件 4.修改环境变量 5.添加MySQL连接驱动 6.测 ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
- Rsync数据同步工具
Rsync数据同步工具 什么是Rsync? Rsync是一款开源的.快速的.多功能的,可以实现全量及增量的本地或原程数据同步备份 ...
- rsync数据同步工具的配置
rsync数据同步工具的配置 1. rsync介绍 1.1.什么是rsync rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于 unix ...
- Linux系统备份还原工具4(rsync/远程数据同步工具)
rsync即是能备份系统也是数据同步的工具. 在Jenkins上可以使用rsync结合SSH的免密登录做数据同步和分发.这样一来可以达到部署全命令化,不需要依赖任何插件去实现. 命令参考:http:/ ...
- rsync---远程数据同步工具
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而 ...
- kafka2x-Elasticsearch 数据同步工具demo
Bboss is a good elasticsearch Java rest client. It operates and accesses elasticsearch in a way simi ...
随机推荐
- LeetCode 面试题16.18.模式匹配
模式匹配 题目: 你有两个字符串,即pattern和value. pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式.例如,字符串" ...
- 动态方法拦截(AOP)的N种解决方案
AOP的本质是方法拦截(将针对目标方法调用劫持下来,进而执行执行的操作),置于方法拦截的实现方案,不外乎两种代码注入类型,即编译时的静态注入和运行时的动态注入,本篇文章列出了几种常用的动态注入方案.这 ...
- 如何将未呈现的WPF控件保存到图片
SaveFileDialog save = new SaveFileDialog(); save.Filter = "BMP|*.bmp|PNG|*.png|JPG|*.jpg"; ...
- phpstorm2020.1最新版永久破解
phpstorm最新安装包以及破解包下载 链接:https://pan.baidu.com/s/177DyhBWP7Lek2IAd-CVJbg 提取码:rhpz 下载安装以及先选择试用什么的傻瓜式操作 ...
- phpstorm 注册码破解
激活码1 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2ln ...
- 查找linux系统下的端口被占用进程的两种方法 【转】
在linux下开发时,你的软件可能要使用某一个端口,或者想查找某一个端口是否被占用.需要怎么做呢??这的确是一个比较烦恼的问题,我也此为这个苦恼过.但是通过查找man手册,还是同事的交流.总结出来两种 ...
- Linux学习笔记 | 常见错误之VMware启动linux后一直黑屏
方法1: 宿主机(windows)管理员模式运行cmd 输入netsh winsock reset 然后重启电脑 netsh winsock reset命令,作用是重置 Winsock 目录.如果一台 ...
- wmic process进程管理
process 进程管理工具 示例:1.列举当前的进程.进程路径.命令行.进程ID.父进程ID.线程数,内存使用::wmic process get name,executablepath,co ...
- 发票校验BAPI_INCOMINGINVOICE_CREATE
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' EXPORTING headerdata = headerdata ...
- 2V升5V的升压芯片,两款芯片电路图
2V的输入电压,是可以用来做5V输出的升压电路,但是2V的供电设备很少,不知道还有什么东西是2V电压的,还需要升压到5V的电路系统. 两款2V升5V的芯片电路图: 第1, PW5100升压芯片,输出电 ...