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

    一、FlinkX简介

    FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,比如MySQL,HDFS等,也可以采集实时变化的数据,比如MySQL binlog,Kafka等。FlinkX目前包含下面这些特性:
    ● 大部分插件支持并发读写数据,可以大幅度提高读写速度;
    ● 部分插件支持失败恢复的功能,可以从失败的位置恢复任务,节约运行时间;失败恢复
    ● 关系数据库的Reader插件支持间隔轮询功能,可以持续不断的采集变化的数据;间隔轮询
    ● 部分数据库支持开启Kerberos安全认证;Kerberos
    ● 可以限制reader的读取速度,降低对业务数据库的影响;
    ● 可以记录writer插件写数据时产生的脏数据;
    ● 可以限制脏数据的最大数量;
    ● 支持多种运行模式;
    FlinkX目前支持rdb 和很多异构数据。可以上github查看一下
    github:https://github.com/oceanos/flinkx

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

    设计理念
    为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
    ● 当前使用现状
    DataX在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了6年之久。目前每天完成同步8w多道作业,每日传输数据量超过300TB。
    DataX本身作为离线数据同步框架,将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

    Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
    Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
    Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
    github:https://github.com/alibaba/DataX
    三、FlinkX与DataX对比
    在Flink的生态圈里面与DataX对标的就是FlinkX
    相同点:
    ● 支持多种数据库的数据同步
    ● 支持高并发数据读写
    ● 支持大批量数据批量读写
    不同点:
    ● DataX任务是单机多线程的,资源占用多。FlinX提交Flink 任务至Flink 集群,可以分布式运行,且可以使用Yarn进行任务调度,与Hadoop生态无缝结合。
    ● DataX只支持离线批处理。FlinkX支持批处理和部分数据库的流式处理。
    总结:
    FlinkX与DataX 都数据大数据数据同步的第三方插件,但是FlinX很多功能都是对标DataX的,并在其原有基础上进行了改进。DataX是一个单机同步工具,核心底层通道的分布式支持不友好,而FlinkX任务是基于Flink集群的,可以无缝结合Hadoop生态。所以在分布式、高效性和易于拓展方面 FlinX是优于DataXD的。

    这边暂时只关注一下增量同步原理

    flinkx datax 都可与基于查询来增量。

    原理都基于sql 来进行偏移量读取

    image.png

    image.png

    flinkx 支持断点续传
    image.png

    image.png

    image.png

    会根据flink的 checkpoint机制

    开启flink checkpoint配置
    image.png