![](https://img-blog.csdnimg.cn/20200808164414438.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
FlinkX 原理剖析
FlinkX 原理剖析,包括与Flink的结合以及在数据同步领域的一些特殊处理的源码解析
wuhulala
这个作者很懒,什么都没留下…
展开
-
FlinkX Launcher 原理解析
FlinkX Launcher 原理解析模式local本机启动一个flink的LocalStreamEnvironmentstandaloneflink集群的standalone模式yarn-perjob在已经启动在yarn上的flink session里上运行yarn-session在yarn上单独启动flink session运行配置https://blog.csdn.net/u013076044/article/details/106392437实现原理入口 public原创 2020-08-08 16:13:09 · 1601 阅读 · 1 评论 -
FlinkX增量读取
FlinkX增量读取增量同步指每次记录最大值,下次从最大值的位置来同步。累加器是具有添加操作和最终累积结果的简单构造,可在作业结束后使用。从Flink的实现上面讲,可以使用Flink的累加器记录作业的最大值,同步任务的每次运行使用上一个任务实例作为起始位置同步。配置increColumn描述:当需要增量同步或间隔轮询时指定此参数,任务运行过程中会把此字段的值存储到flink的Accumulator里,如果配置了指标,名称为:endLocation,类型为string,日期类型会转为时原创 2020-08-08 12:43:14 · 2293 阅读 · 0 评论 -
FlinkX 部署
FlinkX 部署运行概述执行环境Java: JDK8及以上Flink集群: 1.4及以上(单机模式不需要安装Flink集群)操作系统:理论上不限,但是目前只编写了shell启动脚本,用户可以可以参考shell脚本编写适合特定操作系统的启动脚本。运行模式单机模式:对应Flink集群的单机模式standalone模式:对应Flink集群的分布式模式yarn模式:对应Flink集群的yarn模式yarnPer模式: 对应Flink集群的Per-job模式源码下载git clone原创 2020-05-27 22:40:10 · 3981 阅读 · 3 评论 -
FlinkX断点续传原理
FlinkX断点续传原理声明: 前半部分官方文档+贴实现代码前提条件同步任务要支持断点续传,对数据源有一些强制性的要求:数据源(这里特指关系数据库)中必须包含一个升序的字段,比如主键或者日期类型的字段,同步过程中会使用checkpoint机制记录这个字段的值,任务恢复运行时使用这个字段构造查询条件过滤已经同步过的数据,如果这个字段的值不是升序的,那么任务恢复时过滤的数据就是错误的,最终导致数据的缺失或重复;数据源必须支持数据过滤,如果不支持的话,任务就无法从断点处恢复运行,会导致数据重复;原创 2020-05-26 22:27:48 · 2193 阅读 · 1 评论 -
Flink的实时同步(转载官方文档)
Flink的实时同步(转载官方文档)根据数据源的数据是否实时变化可以把数据同步分为离线数据同步和实时数据同步,上面介绍的断点续传就是离线数据同步里的功能,实时采集其实就是实时数据同步,当数据源里的数据发生了增删改操作,同步任务监听到这些变化,将变化的数据实时同步到目标数据源。除了数据实时变化外,实时采集和离线数据同步的另一个区别是:实时采集任务是不会停止的,任务会一直监听数据源是否有变化。基于binlog的实时采集目前FlinkX支持实时采集的插件有KafKa,binlog插件,binlog插件是专门原创 2020-05-26 22:27:10 · 1702 阅读 · 0 评论 -
FlinkX脏值处理
FlinX脏值处理在大量数据的传输过程中,必定会由于各种原因导致很多数据传输报错(比如类型转换错误),这种数据DataX认为就是脏数据。 – by DataX配置实例"dir原创 2020-05-24 18:10:34 · 1879 阅读 · 1 评论 -
FlinkX流控实现
FlinkX流控实现流量控制防止并发性能过高对源数据库造成影响。在FlinkX中,流量控制是采用Byte为单位/s进行流量控制的。配置参数实例:{ “speed”: { "bytes": 0 }}当 bytes > 0 时,才会开启流量控制。整个计算的速率是根据整个系统中的指标,按照每秒的窗口,实时计算出限流的速率的。通过对读取记录的限流,但是没有背压。限流原理实现逻辑首先我们看一下读取器的初始化过程,InputFormat初始化publi原创 2020-05-24 10:35:39 · 1974 阅读 · 0 评论 -
FlinkX 分片读取原理
FlinkX 分片读取原理在数据同步工具中,将数据从源头读取到数据缓存是最重要的一环之一,算是左膀。所以在整个流程,从技术场景上,一定要支持数据的分片与并行读取、流控,从业务角度上,需要支持脏值处理与增量读取。而今天重点来探讨一下分片读取的原理。分片原理分片是将待读取的数据平均分配,尽量的使各个分片任务均衡,不会让数据倾斜从而导致个别节点的同步压力过大(硬件-网卡、cpu等)。下面是配置了一个读取通道为3的作业配置示例:"speed": { "channel": 3, "b原创 2020-05-23 23:38:28 · 1579 阅读 · 0 评论 -
FlinkX的数据类型
FlinkX的数据类型从上一章节里面看到:DataStream<Row> dataStream = dataReader.readData();这个简单的代码里面我们可以得出每一行数据都转化为了Row对象数据转化为了数据流我们下面看一下Row是如何满足所有的数据类型的?FlinkX 中的 Row这里的Row是指的org.apache.flink.types.RowA Row can have arbitrary number of fields and contain原创 2020-05-24 18:17:51 · 1095 阅读 · 0 评论 -
FlinkX 实现原理(全局总览)
FlinkX 实现原理从上一节的代码结构,我们知道FlinkX的结构是Core+Plugin,我们就简单分析一下Core.Core 代码架构基础支持classloader 自定义类加载器Exception 统一异常enums 统一枚举constants 常量options 入参选项配置util 工具类latch 同步类支持核心逻辑config 配置文件格式schemareader Reader插件writer Writer插件inputformat原创 2020-05-24 18:13:55 · 5318 阅读 · 0 评论 -
FlinkX 代码总体结构
总体结构可以看出来里面就一个Flink-Core然后和 DataX 类似 都是 Core + Plugin的结构具体看一下 Plugin的结构也是Core + Reader + Writer的结构。原创 2020-05-24 18:12:31 · 848 阅读 · 0 评论 -
FlinkX配置文件解析
FlinkX配置文件解析配置文件 (本章节引自官网)一个完整的Flinkx任务脚本配置包含 content, setting两个部分。content用于配置任务的输入源与输出源,其中包含reader,writer。而setting则配置任务整体的环境设定,其中包含restore,speed,errorLimit,dirty,log。具体如下所示:{ "job" : { "content" :[{ "reader" : { ...... }, "writer原创 2020-05-24 18:21:45 · 1459 阅读 · 0 评论 -
Flink 数据同步先行者- FlinkX
Flink 数据同步先行者- FlinkX最近在学习Flink-Connector,并尝试使用一些小Demo。联想到之前的DataX与FlinkX,由感而发。从我个人的理解上,Connector就是为了数据通道而生的基础设施,而目前数据通道做的比较全的就是DataX。DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。DataX本身作为离线数据同步框架,将原创 2020-05-17 12:20:10 · 4715 阅读 · 2 评论