随笔分类 - FLINK
【源码】Flink 三层图结构 —— JobGraph 生成过程
摘要:注: 所有内容都基于Flink 本地模式 JobGraph 的生成是从 LocalExecutor.java. execute 方法开始的 // 本地执行调用 Pipeline 是 StreamGraph 的父类 @Override public CompletableFuture<JobClien
阅读全文
【源码】Flink 算子 chain 在一起的条件
摘要:Flink 任务的图结构中,部分算子是 chain 在一起的,因为 chain 在一起有很多好处(减少序列化和网络开销,提高效率),而算子 chain 在一起是需要条件的 Flink 任务在生成 JobGraph 的时候,会加入 chain 的概念,会判断算子能否 chain 在一起 首先在 env
阅读全文
【源码】Flink StreamGraph 生成过程
摘要:Flink StreamGraph 的核心是 streamNodes 包含所以 算子生成的 StreamNode(也叫 Vertex), StreamNode 中包含连接算子的边(Edge),其他的虚拟节点 使用 virtualSelectNodes、virtualSideOutputNodes、v
阅读全文
【源码】Join 算子 Transforation 过程
摘要:又看下了 Join 算子 Transformation 的过程,发现有使用 union 和 coGroup,比较特殊,就仔细梳理一下 join demo 代码: 两个 Stream join 只能在窗口中进行 join,join 在处理无界数据集的时候,必须指定窗口,让无界数据变成有界数据,Flin
阅读全文
【源码】Flink 三层图结构——StreamGraph 生成前准备 Transformation
摘要:最近一直在看 StreamGraph 生成的源码,刚好有点思路,准备动手了发现,如果不说下 Transformation 后面的 StreamGraph 会差比较多意思,所以先做点铺垫。 ## Transformation Transformation 类是 Flink 转换算子的基类,实现类有下面
阅读全文
Flink 反馈流 Demo
摘要:有的时候,我们需要创建有环执行流图,比如将一些处理过后还不满足条件的数据,返回到最开始重新处理。 之前在做的时候,会考虑将处理后还不满足的数据,写入到单独的 Topic 中重新消费处理 今天发现 Flink Iterate 算子,发现也能满足需求 官网介绍: https://ci.apache.or
阅读全文
【源码】Flink StreamingFileSink 处理流程
摘要:前两天试了下 Flink SQL 写 Hive,对 Sink 部分写数据到 HDFS 的部分比较疑惑,特别是基于 checkpoint 的文件提交,所以看了下 StreamingFileSink 的源码(Flink SQL 写 hive 复用了这部分代码) StreamingFileSink 是 1
阅读全文
flink cdc demo
摘要:Flink 1.11 发布了支持 MySQL CDC(Changelog Data Capture) 可以直接解析 Canal / Debezium 格式的 MySQL Binlog 对于实时处理程序,MySQL 的 Binlog 是很重要的数据源(上一个项目几乎所有实时数据都是来自业务系统的数据库
阅读全文
Flink SQL 流式写数据到 Hive
摘要:Flink 1.11 版本对SQL的优化是很多的,其中最重要的一点就是 hive 功能的完善,不再只是作为持久化的 Catalog,而是可以用原生的 Flink SQL 流式的写数据到入 hive中 本文使用官网 “Streaming Writing” 案例 (https://ci.apache.o
阅读全文
Flink 流模式跑离线任务
摘要:通常的认识是:Flink 流模式跑流任务,批模式跑批任务,用流模式跑离线任务也是个有意思的事情 虽然新版 Flink 已经在 sql 上实现了一定程度的流批一体,但是 DataStream 和 DataSet API 还是相差比较大的 用 Flink 跑离线任务也是机缘巧合(也是必然,毕竟我不会 S
阅读全文
【源码】flink 窗口数据触发清理流程
摘要:前言: Flink 窗口会将当前窗口的数据存储在状态中,等待窗口结束的时候触发计算,那窗口状态什么时候清理? (前提: 窗口的主要逻辑是在 WindowOperator 中完成的) 翻一下 WindowOperator 的代码,可以看到下面这个方法,“Drops all state for the
阅读全文
Flink 动态窗口统计面试题-实现
摘要:之前分享了一个 Flink 的面试题,这里简单回顾下内容: 有两个输入源,一个是命令流,一个是数据流 需要将命令流进行广播,然后和数据流进行connect,根据命令流指定的命令进行统计 实现一个输出到终端的 sink,将统计结果打印出来,每一条记录包括 taskId, targetAttr, per
阅读全文
【源码】FlinkKafkaConsumer 消费 kafka 流程
摘要:之前看 Flink Source 的 metrics 时候,看到 FlinkKafkaConsuemr 消费 Kafka 数据的代码,感觉比较有意思,就仔细看下了 大致流程如下: FlinkKafKaConsuemr 的启动流程就不细讲了,直接跳到 FlinkKafkaConsumerBase.ru
阅读全文
Flink Checkpoint 流程
摘要:Checkpoint 源码流程: Flink MiniCluster 启动流程 Flink CheckpointCoordinator 启动流程 Flink Checkpoint 流程 先贴段简单的代码 val kafkaSource = new FlinkKafkaConsumer[String]
阅读全文
Flink CheckpointCoordinator 启动流程
摘要:Checkpoint 源码流程: Flink MiniCluster 启动流程 Flink CheckpointCoordinator 启动流程 Flink Checkpoint 流程 开局一张图,其他全靠吹,来一张官网 Flink 集群解析图: 官网地址:https://ci.apache.org
阅读全文
Flink MiniCluster 启动流程
摘要:Checkpoint 源码流程: Flink MiniCluster 启动流程 Flink CheckpointCoordinator 启动流程 Flink Checkpoint 流程 最近一段时间,在看 Flink Checkpoint 相关的源码,从 CheckpointCoordinator
阅读全文
Flink 学习资料
摘要:最近好些朋友问过我要 Flink 的学习资料,就把电脑上存的Flink 的文档书什么的都放到网盘,然后发出去了 对于初学者,拿着一堆资料是不知道从什么地方开始的学习的,我这个菜鸡也有很多没看(flink 线下 meetup ppt、Flink Forward ppt) 最好的文档,永远是官网文档,特
阅读全文
【源码】 flink 消费 kafka 消费组 offset 提交
摘要:flink 消费 kafka 数据,提交消费组 offset 有三种类型 1、开启 checkpoint : 在 checkpoint 完成后提交 2、开启 checkpoint,禁用 checkpoint 提交: 不提交消费组 offset 3、不开启 checkpoint: 依赖kafka cl
阅读全文
解决 Flink 1.11.0 sql 不能指定 jobName 的问题
摘要:月初的时候,Flink 终于发布 1.11.0 版本, CDC 的功能还是比较期待的(虽然比预期差很多) 当然是升级一波了 最新的代码已经上传到 GitHub : https://github.com/springMoon/sqlSubmit 跑 sqlSubmit 的代码,随便来个 kafka t
阅读全文
Flink connect 算子实践
摘要:借用官网的一个例子: 假设存在一个序列,序列中的元素是具有不同颜色与形状的图形,我们希望在序列里相同颜色的图形中寻找满足一定顺序模式的图形对(比如在红色的图形里,有一个长方形跟着一个三角形)。 同时,我们希望寻找的模式也会随着时间而改变。 在这个例子中,我们定义两个流,一个流包含图形(Item),具
阅读全文