大数据常用数据同步工具

背景

如果公司要搞数据平台,首当其冲的是把旧库的数据导入到新库中,原本各种数据库大部分都提供了导入导出的工具,但是数据存储到(mongdb,hbase,mysql,oracle)等多种不同的数据库,同步起来头都大,这时候就可以用到一些数据同步工具了。

离线导入导出

DataX

阿里的Datax是比较优秀的产品,基于python,提供各种数据村塾的读写插件,多线程执行,使用起来也很简单,定义好配置json文件执行脚本就可以了,非常适合离线数据,增量数据可以使用一些编码的方式实现,但是也仅仅针对insert数据比较有效,update数据就不适合。

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

Sqoop

Sqoop是针对大数据而生的,专注于Hadoop(Hive)与传统的数据库数据的传递,是Hadoop生态的一员。在数据库的支持的丰富性上不如DataX,但是如果你用hadoop,用sqoop是更好的选择,因为做Apache的顶级项目,他背后的支持远远比阿里一家公司靠谱的多。

官网地址:http://sqoop.apache.org/

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

Kettle

Kettle作为传统ETL工具,目前也都已经有了nosql数据库的支持,而且kettle还有图形界面可以用,使用起来简单多了。而且本来就是专门做ETL的,是Pentaho指定的ETL组件,对于数据清洗等处理数据的环节支持更好。但是数据效率一般,而且在生产环境也很少弄台windows机器,适合小项目,数据量比较小的同步。

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。


实时同步

实时同步最灵活的还是用kafka做中间转发,当数据发生变化时,记录变化到kafka,需要同步数据的程序订阅消息即可,需要研发编码支持。这里说个mysql数据库的同步组件,阿里的canal和otter

canal

canal是基于mysql的binlog进行数据同步的中间件。简单来说,Canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析和贮存后供下游消费端使用。Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。

github地址:https://github.com/alibaba/canal

使用的话,安装好canal,配置好数据库参数,再编写一个客户端消费canal传过来的数据就可以了。详情查看官网。

otter

github地址:https://github.com/alibaba/otter

otter是在canal基础上又重新实现了可配置的消费者,使用otter的话,刚才说过的消费者就不需要写了,而otter提供了一个web界面,可以自定义同步任务及map表。非常适合mysql库之间的同步。

而且通过retl_buff表的监控,也可以实现一些全量数据的同步。

但是otter也有一些不好的地方,比如界面上的参数并不是所有的都有用,文档写的一般,不是很清晰。但是想想省了好多事,还是非常好的一款中间件。

详细查看官网,安装部署研究下问题不大。

全量与增量

数据同步一般分为两种方式:全量和增量。

全量

全量,这个很好理解。就是每天定时(避开业务高峰期)或者周期性全量把数据从一个地方拷贝到另外一个地方;

全量的话,可以采用直接全部覆盖(使用“新”数据覆盖“旧”数据);或者走更新逻辑(覆盖前判断下,如果新旧不一致,就更新);

这里面有一个隐藏的问题:如果采用异步写,主数据物理删除了,怎么直接通过全量数据同步?这就需要借助一些中间操作日志文件,或者其他手段,把这些“看不到”的数据记录起来。

增量

增量,就是指抓取某个时刻(更新时间)或者检查点(checkpoint)以后的数据来同步,不是无规律的全量同步。

这里引入一个关键性的前提:副本一端要记录或者知道(通过查询更新日志或者订阅更新)哪些更新了。

posted @ 2022-10-09 10:33  zhαojh  阅读(667)  评论(0编辑  收藏  举报