【转载】基于flink的分布式同步工具

FlinkX概览

一.FlinkX是一个基于Flink的异构数据源离线同步工具,用于在多种数据源(MySQL、Oracle、SqlServer、Ftp、Hdfs,HBase、Hive、Elasticsearch等)之间进行高效稳定的数据同步。
二.FlinkX简化了数据同步任务的开发过程,用户只需提供一份数据同步任务的配置,FlinkX会将配置转化为Flink任务,并自动提交到Flink集群上执行。
三.Flink一个面向分布式数据流处理和批量数据处理的开源计算平台,具有分布式、低延迟、高吞吐和高可靠的特性。

FlinkX的设计思路

一.插件式架构

FlinkX采用了一种插件式的架构:不同的源数据库被抽象成不同的Reader插件,不同的目标数据库被抽象成不同的Writer插件;整个数据同步任务共有的处理逻辑被抽象在Template模块中,该模块根据数据同步任务配置加载对应的Reader和Writer插件,组装Flink任务,并提交到Flink集群执行;
FlinkX框架可以支持任意数据源类型的数据同步工作。作为一个开放式系统,用户可以根据需要开发新的插件,以接入新的数据库类型。

二. Flink任务的自动组装

Template模块根据同步任务的配置信息加载源数据库和目的数据库对应的Reader插件和Writer插件;
Reader插件实现了InputFormat接口,从源数据库中获取DataStream对象;
Writer插件实现了OutputFormat接口,将目的数据库与DataStream对象相关联;
Template模块通过DataStream对象将Reader和Writer串接在一起,组装成一个Flink任务,并提交到Flink集群上执行。

FlinkX的优势

一.便于使用

用户只需要提供一份数据同步配置信息,无需编写程序,FlinkX会配置信息自动转换为Flink任务并提交到Flink集群执行。

二.性能优越

FlinkX会将数据同步任务提交到Flink集群中的执行,使得FlinkX天然具有Flink的性能优势,主要表现为分布式、低延迟、高吞吐和高可靠。

三.多运行模式

同普通的Flink任务一样,FlinkX支持local、standalone和yarn三种运行模式。local模式就是在本地开启一个mini的Flink集群执行Flink任务,这种运行模式的好处是使用方便,不需要预先启动分布式集群,适用于测试和实验环境;缺点是由于单点执行,可靠性差,当数据量大时吞吐量受限; standalone模式是指以独立部署的方式启动一个Flink集群,然后将提交Flink任务到该集群上执行;
yarn模式是指在yarn集群中部署Flink集群,然后将Flink任务提交到部署在yarn集群中的Flink集群上执行;standalone模式和yarn模式都是分布式地执行FlinkX,而yarn模式可以利用yarn的资源管理功能,因而成为部署FlinkX应用时的首选。

四.插件式开发

插件式架构,你可以给任何类型的数据源开发Reader和Writer插件。

五.错误控制

错误控制可以在数据同步配置信息中设置错误记录阈值、错误占比阈值,使得数据同步任务在出错时及时停止,避免系统资源的浪费。
脏数据管理可以将错误记录、错误原因、错误类型输出到Hive表中,便于日后的排查工作。

六.任务资源限制

每个同步任务都可以做到并发度,内存,网络io的限制,防止单个任务占用过多cpu,内存,网络io资源

欢迎试用FlinkX

源代码仓库地址 https://github.com/DTStack/flinkx

没有更多推荐了,返回首页