浅谈数仓建设之数据同步(离线)及sqoop、flume、dataX原理简介
简介
在数仓建设中,数据同步是最基础的⼀步,也是 ods 层数据的来源。数据同步 简⽽⾔之,就是把 业务库中的需要分析的数据表(或⽂件)同步到 数仓中(hdfs)。
同步的⽅式可以分为3种:直连同步、数据⽂件同步、数据库⽇志解析同步。
下⾯将进⾏详细介绍。
详解
1、直连同步
直连同步是指通过定义好的规范接⼝api 和动态链接库的⽅式直连业务库。
优点:配置简单,实现容易,⽐较适合操作型业务系统的数据同步。
灵组词缺点:
1、直连的⽅式对源系统的性能影响较⼤,甚⾄可能拖垮业务系统;
2、数据量很⼤时,性能很差。
2、⽂件传输
原理:从源系统⽣成数据的⽂本⽂件(⽐如 csv、json 等),然后由⽂件服务器(如FTP服务器)传输到⽬标系统(hdfs),最后加载到数据库系统中。
⽇志类数据通常以⽂件的形式存在的,⽐较适合这种⽅式。
缺点:通过⽂件服务器上传、下载容易造成丢包,需要设置校验机制。
3、数据库⽇志解析同步
实现⽅式如下:
1、在源系统端,需要收集数据变更⽇志,将其写到⽂件中;
2、然后通过⽹络将⽂件传输到 ⽬标系统;
如何在excel中画斜线3、⽬标系统解析该⽂件,然后加载到数据库(hdfs);
优点:
1、现在主流数据库都⽀持通过⽇志⽂件进⾏系统恢复,因此可以使⽤这种⽅式;
2、读取⽇志⽂件属于系统层操作,不会影响到业务库性能;
3、速度快,该⽅式可以达到 实时/准实时 的同步能⼒,延迟到毫秒级。
缺点:
1、可能出现数据延迟。业务系统批量写⼊ 导致数据更新量超出系统处理峰值,导致数据延迟;
2、投⼊⼤,需要部署⼀个实时抽取数据的系统;
3、可能会导致数据漂移和遗漏。
主流⼯具及原理
下⾯介绍⽬前⽤得⽐较多的⼯具
1、sqoop
sqoop 是Apache旗下的⼀款数据同步⼯具, 它的⼯作原理属于第⼀种⽅式,具体过程如下
四大洋是什么1、通过jdbc来获取需要的数据库的元数据信息,例如:导⼊的表的列名,数据类型;为什么手机网速很慢
2、根据 元数据 ⽣成⼀个与表名相同的 java 类;
3、执⾏查询数据操作,并根据每⼀⾏数据⽣成⼀个java对象;
4、开启MapReduce作业,将每个对象反序列化写到 hdfs上。
2、flume
Flume是⼀个分布式、可靠、和⾼可⽤的海量⽇志采集、聚合和传输的系统。Flume可以采集⽂件、s
ocket数据包等各种形式源数据,并输出到:HDFS、hbase、hive、kafka等众多外部存储系统中。也是 apache 旗下的⼀个项⽬。
flume数据同步⽅式属于 第⼆种,它包含 3个组件:source、channel、sink。
source:主要负责 监控并采集 ⽬标数据⽂件(⽐如⽇志)
channel:可以将它看做⼀个数据的缓冲区(数据队列),它可以将数据暂存到内存中也可以持久化到本地磁盘上
sink:对接到外部的数据⽬的地,将数据写到⽬标系统中。
3、dataX
dataX 是阿⾥旗下⼀款开源的 数据同步⼯具,它的⼯作原理属于 第三种。它采⽤Framework + plugin架构构建。将数据源读取和写⼊抽象成为Reader/Writer插件,纳⼊到整个同步框架中。
如何抄税Reader:数据采集模块,负责采集数据源的数据库写⽇志,将数据发送给Framework。
Writer: 数据写⼊模块,负责不断向Framework取数据,并根据⽇志写⼊到⽬的端。
来自星星的你演员表Framework:作为reader和writer的数据传输通道,并处理缓冲,流程控制,并发,上下⽂下载等核⼼技术问题。
针对不同的数据库,只需要更换相应的 reader/writer 插件即可。全程在内存中运⾏,⽀持 单/多线程。
总结
本⽂主要列举了⼏种常见的离线开发 数据同步原理 及 ⽬前主流⼯具,仅作⼀个简介。
看到这的同学记得点个赞哟,你的⽀持就是别⼈的动⼒~~~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论