深入浅出flink
文章平均质量分 96
旨在用最直白的语言讲好flink,让所有看到的人能够一目了然。
雷恩Layne
大家好,我是雷恩,雷恩的雷,雷恩的恩!
展开
-
【深入浅出flink】第16篇:一篇文章搞懂flink中的状态、状态类型、状态缩放(rescale)和Key Group、状态后端(State backend)
我们知道,Flink的一个算子可能会有多个子任务,每个子任务可能分布在不同的实例(即slot)上,我们可以把Flink的状态理解为某个算子的子任务在其当前实例上的一个变量,该变量记录了流过当前实例算子的历史记录产生的结果。当新数据记录流入时,我们需要结合该结果(即状态,State)来进行计算。原创 2022-02-04 16:48:12 · 2986 阅读 · 0 评论 -
【深入浅出flink】第15篇:flink第一个窗口的起始点和窗口的偏移量,你知道怎么计算吗?
通常,我们通过dataStream.timeWindow或在dataStream.window传入一个窗口分配器来定义一个窗口。那么,第一个窗口的起点是什么,窗口的偏移量又是什么?假如,将第一个窗口的起点记为start,窗口大小为size,那么第一个窗口的范围是[start,start+size),后面的窗口范围也可以定下来,在flink中是怎么算的呢?原创 2022-02-02 13:56:30 · 2731 阅读 · 0 评论 -
【深入浅出flink】第14篇:kafka分区数与flink算子并行度导致Watermark不触发问题,大多数大数据开发者都会遇到的问题
场景描述:flink消费分区有三个,其中第一个分区有数据,另外两个分区无数据。消费kafka分区的flink算子并行度为3,三个子任务分别消费kafka的分区,导致Watermark机制失效。原创 2022-01-30 14:48:47 · 4775 阅读 · 2 评论 -
【深入浅出flink】第13篇:从源码解读flink中Watermark的周期性和间断式生成方式
我们通常通过DataStream的assignTimestampsAndWatermarks方法引入Watermark,assignTimestampsAndWatermarks方法中要求传入的接口有两种,一种是AssignerWithPeriodicWatermarks(周期性生成Watermark的时间戳分配器),另一中是AssignerWithPunctuatedWatermarks(间断式生成Watermark的时间戳分配器),它们都是TimestampAssigner(时间戳分配器)接口的子接口。原创 2022-01-27 20:36:57 · 2150 阅读 · 0 评论 -
【深入浅出flink】第12篇:多图全面剖析flink中的时间语义和Watermark,面试官再也难不倒我了
流式数据处理最大的特点是数据具有时间属性特征,Flink根据时间产生的位置不同,将时间区分为三种概念:数据生成时间(Event_time)、事件接入时间(Ingestion_time)、事件处理时间(Processing_time)。那么此时出现一个问题,一旦出现乱序,如果只根据eventTime决定window的运行,我们不能明确数据是否全部到位,但又不能无限期的等下去,此时必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了,这个特别的机制,就是Watermark。原创 2022-01-23 17:04:51 · 2437 阅读 · 1 评论 -
【深入浅出flink】第11篇:从源码层面剖析flink窗口计算中的Evictor(移除器)
Evictor 主要用来遍历窗口中的元素列表,并决定最先进入窗口的多少个元素需要被移除。剩余的元素会交给用户指定的函数进行窗口的计算。如果没有 Evictor 的话,窗口中的所有元素会一起交给Windowfunction进行计算。原创 2022-01-23 13:28:43 · 1574 阅读 · 0 评论 -
【深入浅出flink】第10篇:聊聊flink窗口计算的触发器(Trigger)
Trigger(触发器)决定了什么时候窗口准备就绪了,一旦窗口准备就绪就可以使用WindowFunction(窗口计算操作)进行计算。每一个 WindowAssigner(窗口分配器) 都会有一个默认的Trigger。如果默认的Trigger不满足用户的需求,用户可以自定义Trigger。原创 2022-01-17 20:59:21 · 7290 阅读 · 1 评论 -
【深入浅出flink】第9篇:详细解读flink中GlobalWindows、window、windowAll的区别与联系
刚学习flink的同学可能会有疑惑,GlobalWindows、window、windowAll到底有什么关系?GlobalWindows和windowAll的并行度都是1吗?window和windowAll的区别是什么?看了这篇文章,你将完全明白它们之间的区别与联系。原创 2022-01-16 10:38:10 · 6246 阅读 · 1 评论 -
【深入浅出flink】第8篇:一篇文章搞懂flink window中的所有内容,保证你完全明白window的分类、window的组成以及window API
Flink支持多种窗口类型,按照驱动类型分为:时间驱动的Time Window(如每30秒钟)和数据驱动的Count Window(如每100个事件)。按照窗口的滚动方式又可以分成:滚动窗口(Tumbling Window,无重叠),滑动窗口(Sliding Window,有重叠)和会话窗口(Session Window,活动间隙)。按照当前流有没有通过keyBy分区,分为Keyed Window和Non Keyed Window。另外,还有全局窗口(global windows)和自定义出窗口。原创 2022-01-15 17:03:03 · 2318 阅读 · 0 评论 -
【深入浅出flink】第7篇:从原理剖析flink中所有的重分区方式keyBy、broadcast、rebalance、rescale、shuffle、global、partitionCustom
flink中的重分区算子除了keyBy以外,还有broadcast、rebalance、shuffle、rescale、global、partitionCustom等多种算子,它们的分区方式各不相同。需要注意的是,这些算子中除了keyBy能将DataStream转化为KeyedStream外,其它重分区算子均不会改变Stream的类型,现在就让我们来一探究竟吧!原创 2022-01-14 21:25:01 · 8022 阅读 · 1 评论 -
【深入浅出flink】第6篇:详解flink中Text Sink、Csv Sink、Socket Sink、Kafka Sink、Redis Sink、ES Sink,以及万能的UDF Sink
Sink 用来消费 DataStream数据的。Flink提供了很多预置的Sink方法,比如Text Sink、Csv Sink、Socket Sink、Kafka Sink、Redis Sink、ES Sink。当现有的Sink不能满足需求时,用户也可以实现自定义sink,用来解决复杂需求。原创 2022-01-12 20:45:40 · 2933 阅读 · 0 评论 -
【深入浅出flink】第5篇:详细梳理flink中常见的dataSteam算子,transformation操作全靠它们,满足你所有的业务需求
本文梳理了常见Transformation操作,几乎平时用到的99%的算子都总结了出来,如果你能把这些算子吃透,那么恭喜你成功进阶DataStream编程。原创 2022-01-09 16:14:46 · 1935 阅读 · 1 评论 -
【深入浅出flink】第3篇:多图讲解flink核心概念(通俗易懂)Job、Task、SubTask、Slot、Slotsharing、Parallelism、Operator Chains
本文是理解flink整个架构的核心,是最基础也是必须要掌握的知识,只有完全理解了它们,你才会在以后学习flink时游刃有余,才能更好的进阶flink高阶知识。原创 2022-01-07 23:11:26 · 6403 阅读 · 6 评论 -
【深入浅出flink】第4篇:flink常见的并行度和多并行度Source,你掌握了多少?
flink提供了大量的已经实现好的source方法,也可以自定义source。通过实现sourceFunction接口来自定义无并行度的source,通过实现ParallelSourceFunction 接口 或 继承RichParallelSourceFunction 来自定义有并行度的source。原创 2022-01-08 21:14:18 · 5027 阅读 · 1 评论 -
【深入浅出flink】第2篇:肝了一个小时的图,完虐flink运行时的四大核心组件和运行流程
文章前半部分描述Flink运行时的四大核心组件,大家在对四个组件有个印象后,再通过一张完整的图来讲解这四大组件是如何协同工作的,即Flink任务分布式的运行流程。原创 2022-01-07 09:00:00 · 3388 阅读 · 1 评论 -
【深入浅出flink】第1篇:什么是flink?和Spark Streaming有什么区别?(开篇之作)
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态的计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。原创 2022-01-06 21:33:49 · 1891 阅读 · 0 评论 -
聊聊Java类型擦除、Flink中使用Lambda表达式丢失信息和Flink类型暗示机制
最近在学Flink时发现,由于Java类型擦除的存在,导致Flink中使用Lambda表达式时,无法检测出泛型的类型,需要使用Flink类型暗示(type hint)机制才能解决。原创 2021-12-26 21:27:02 · 2176 阅读 · 1 评论