Sun.Zhu's Blog

Thinking will not overcome fear but action will.

Flink实战之自定义flink sql connector

Flink实战之自定义flink sql connector

背景 最近工作中需要自定义开发一些flink sql的connector,因为官方提供的connector毕竟有限,在我们工作中可能会用到各种各样的中间件。所以官方没有提供的就需要我们自定义开发。 就是如: CREATE TABLE XXX( A STRING, B BIGINT) WITH( 'connect.type' = 'kafka', ... ) 所以开发...

Flink源码阅读之Flinksql执行流程

Flink源码阅读之Flinksql执行流程

基本结构 Planner接口 负责sql解析、转换成Transformation Executor接口 负责将planner转换的Transformation生成streamGraph并执行 public interface Planner { /** * Retrieves a {@link Parser} that provides methods for parsing a ...

Flink源码阅读之Checkpoint执行过程

Flink源码阅读之Checkpoint执行过程

前言 对应Flink来说checkpoint的作用及重要性就不细说了,前面文章写过checkpoint的详细过程和checkpoint周期性触发过程。不熟悉checkpoint大概过程的同学可以查阅。 本篇我们在一起根据源码看下checkpoint的详细执行过程。 checkpoint过程 源头 我们都知道checkpoint的周期性触发是由jobmanager中的一个叫做Checkpoin...

Flink源码阅读之Timer定时器

Flink源码阅读之Timer定时器

概述 在window执行过程篇也提到了定时器的注册,在flink中有很多定时器的使用,比如窗口trigger的触发、watermark的周期生成,其实定时器底层是依赖jdk的ScheduledThreadPoolExecutor来调度的。 入口 通过TimerService 接口注册和删除定时器。 public interface TimerService { long currentPr...

Flink源码阅读之Checkpoint周期触发过程

Flink源码阅读之Checkpoint周期触发过程

Flink的checkpoint原理就不说了,官网以及博客都有说明,有兴趣的同学可以自行查阅。 本文主要从源码层面分析一下checkpoint是如何周期性触发的。 分析 首先通过如下配置启用CheckPoint env.enableCheckpointing(1000); 不设置,则默认CheckPoint间隔为-1,即不启用CheckPoint /** Periodic check...

Flink序列化和Java序列化对比

Flink序列化和Java序列化对比

Java序列化 Java的序列化机制一般是对象实现Serializable接口,并指定serialVersionUID。通过字节流的方式来实现序列化和反序列化。 serialVersionUID的作用是用来作为版本控制,如果serialVersionUID发生改变则会反序列化失败。 主要用途: 用于网络传输 对象深拷贝 用于将对象存储起来 缺点: 无法跨语...

Flink为什么比Storm快

Flink为什么比Storm快

Flink的优势以及具有更多丰富的功能、特性,本文就不提了,网上资料很多。 本文从底层原理分析一下为什么Flink要比Storm快。 “快”说白了就是延迟低。Flink为什么延迟更低主要有以下几个原因: 一、数据传输 数据传输有分为进程之间和进程内部。 进程之间 进程之间的传输一般包含shuffle的过程,主要是序列化、网络传输、反序列化这三个步骤。 Flink中一般是两个TM之间的传输,通...

Flink源码阅读之Watermark对齐

Flink源码阅读之Watermark对齐

watermark的产生 我们知道watermark的生成有两种方式: 1.在sourceFunction中通过emitWatermark方法生成 2.通过assignTimestampsAndWatermarks抽取timestamp并生成watermark watermark的流转 watermark会像普通的element和stream status一样随着stream流不断的向下游流...

Flink中串行的陷阱

Flink中串行的陷阱

问题背景 在使用FlinkSql做topic复制程序时,遇到一个问题: 一份kafka topic数据往多个topic中发,实现一份数据复制多份的功能,但是在做性能压测的时候发现tps上不来。 问题分析 由于flinksql目前不支持针对具体的算子设置并行度,所以整个job只设置了一个整体并行度。由于flink内部的operation chain机制,会将source和3个map、3个s...

对数据漂移处理的一点理解

对数据漂移处理的一点理解

《大数据之路》一书中对数据漂移的处理是这么说的: 数据漂移的处理 通常我们把从源系统同步进人数据仓库的第一层数据称为 ODS或者staging 层数据,阿里巴巴统称为 ODS 。数据漂移是 ODS 数据的一个顽疾,通常是指 ODS 表的同一个业务日期数据中包含前一天或后凌晨附近的数据或者丢失当天的变更数据。 由于 ODS 需要承接面向历史的细节数据查询需求,这就需要物理落地到数据仓库的 O...