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