![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flink
文章平均质量分 76
Flink开发 实战
海兵-2016
天道酬勤,不为凡人。
展开
-
深入浅出Flink 13 之 内存模型
Flink 13 之 内存模型1.1 Flink运行流程回顾1.2 TaskManager之间的数据传输1.3 Flink内存管理1.1 Flink运行流程回顾Flink任务运行流程Task1.2 TaskManager之间的数据传输1.3 Flink内存管理Java对象存储密度低:一个只包含boolean属性的对象占用16个字节内存:对象头占了8个,boolean属性占了1个,对其填充占了7个,而实际只需要一个bit(1/8字节)就够了。Full GC会极大地影响性能,尤其是为原创 2021-07-14 17:37:22 · 284 阅读 · 0 评论 -
深入浅出Flink 12 之 Window操作
Flink 11 之 Window操作1 Keyed Windows1.1 window function1.2 Trigger1.3 Evictor1.4 window增量聚合1.5 window全量聚合1.6 window join1 Keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windows .window(...) <- required: "assigner" [.trigger(...)] <-原创 2021-07-14 17:12:56 · 198 阅读 · 0 评论 -
深入浅出Flink 11 之 Window
Flink 11 之 Window1 Window概述2 Window类型2.1 tumblingwindows:滚动窗⼝【没有重叠】2.2 slidingwindows:滑动窗⼝ 【有重叠】2.3 session windows2.4 global windows2.5 Window类型总结1 Window概述聚合事件(⽐如计数、求和)在流上的⼯作⽅式与批处理不同。⽐如,对流中的所有元素进⾏计数是不可能的,因为通常流是⽆限的(⽆界的)。所以,流上的聚合需要由 window 来划定范围,⽐如 “计算原创 2021-07-14 10:45:44 · 172 阅读 · 0 评论 -
深入浅出Flink 10之 WaterMark机制原理
Flink 10之 WaterMark机制原理1 WaterMark的定义2 需求(深入理解WaterMark)3 计算window的触发时间5 WaterMark+Window 处理乱序时间6 迟到太多的事件7 多并行度下的WaterMark(了解)1 WaterMark的定义使用eventTime的时候如何处理乱序数据?我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也原创 2021-07-14 08:54:06 · 2717 阅读 · 0 评论 -
深入浅出Flink 09 之 WaterMark
Flink 09 之 WaterMark1 需求背景1.1 TimeWindow实现1.2 ProcessWindowFunction1.3 Time的种类2 Process Time Window(有序)3 Process Time Window(无序)4 使用Event Time处理无序5 使用WaterMark机制解决无序1 需求背景需求描述:每隔5秒,计算最近10秒单词出现的次数。1.1 TimeWindow实现/*** 每隔5秒计算最近10秒单词出现的次数 */ public clas原创 2021-07-13 20:14:14 · 140 阅读 · 2 评论 -
深入浅出Flink 08 之 容错机制
Flink 08 之 容错机制sourcekafka Consumer偏移量管理String topic="nxtest"; Properties consumerProperties = new Properties(); consumerProperties.setProperty("bootstrap.servers","192.168.152.102:9092"); consumerProperties.setProperty("group.id","testConsumer");原创 2021-07-13 19:01:42 · 117 阅读 · 0 评论 -
深入浅出Flink 07 之 SavePoint
SavePoint是一个重量级的Checkpoint,你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。可以保存数据源offset,operator操作状态等信息,可以从应用在过去任意做了savepoint的时刻开始继续消费。Checkpint和SavePoint 概念:Checkpoint 是 自动容错机制 ,Savepoint 程序全局状态镜像 。 目的: Checkpoint 是程序自动容错,快速恢复 。 Savepoi原创 2021-07-13 17:34:13 · 905 阅读 · 0 评论 -
深入浅出Flink 06 之 重启策略
Flink 06 之 重启策略1 重启策略概述2 重启策略3 多checkpoint4 从checkpoint恢复数据1 重启策略概述Flink支持不同的重启策略,以在故障发生时控制作业如何重启,集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。 如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略,默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数restart-strategy 定义了哪个策略被使用。常用的重原创 2021-07-13 17:28:24 · 174 阅读 · 0 评论 -
深入浅出Flink 05 之 Checkpoint 原理
Flink 06 之 Checkpoint 原理1.1 Checkpoint概述1.2 Checkpoint的简单想法1.3 Checkpoint 恢复流程1.4 Chandy-Lamport 算法1.4 Checkpoint配置1.1 Checkpoint概述checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如 异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保 证应用流图状态的一致性。1.2 Checkpoint的简单想法原创 2021-07-13 16:33:17 · 194 阅读 · 0 评论 -
深入浅出 Flink 04 之 State
Flink 04 之 State1.1 state概述1.1 State类型1.3 Keyed State的案例演示1.4 KeyedState 案例演示1.5 Operator State案例演示1.1 state概述回顾单词计数的例子/*** 单词计数 */ public class WordCount { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env =原创 2021-07-13 11:33:27 · 152 阅读 · 0 评论 -
深入浅出 Flink 03 之 Sink
Flink 03 之 Sink1.1 print() / printToErr()1.2 writeAsText()1.3 Flink提供的sink1.4 DataSet算子操作1.5 Flink之广播变量1.6 Flink之Counter(计数器)1.1 print() / printToErr()打印每个元素的toString()方法的值到标准输出或者标准错误输出流中1.2 writeAsText()/*** 数据源:1 2 3 4 5.....源源不断过来 * 通过map打印一下接受到原创 2021-07-13 10:01:40 · 442 阅读 · 0 评论 -
深入浅出 Flink 02 之 Transformation
Flink 02 之 Transformation1.1 map和filter1.2 flatMap,keyBy和sum1.3 union1.4 connect,conMap和conFlatMap1.1 map和filter/*** 数据源:1 2 3 4 5.....源源不断过来 * 通过map打印一下接受到数据 * * 通过filter过滤一下数据,我们只需要偶数 */ public class MapDemo { public static void main(String[]原创 2021-07-12 15:10:51 · 86 阅读 · 0 评论 -
深入浅出 Flink 01 之 数据源(DataStream)
Flink 01 之 数据源(DataStream)1.1 source简介1.2 数据源之collection1.3 自定义单并行度数据源1.4 自定义多并行度数据源1.1 source简介source是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource(sourceFunction)来为你的程序添加一个source。flink提供了大量的已经实现好的source方法,也可以自定义source: 1. 通过实现sourceFunction接口来自原创 2021-07-12 14:49:50 · 229 阅读 · 0 评论 -
Flink-11 Flink CEP
Flink CEP简介1 什么是复杂事件处理CEP2 Flink CEP1 什么是复杂事件处理CEP一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件。特征:目标:从有序的简单事件流中发现一些高阶特征输入:一个或多个由简单事件构成的事件流处理:识别简单事件之间的内在联系,多个符合一定规则的简单事件构成复杂事件输出:满足规则的复杂事件CEP用于分析低延迟、频繁产生的不同来源的事件流。CEP可以帮助在复杂的、不相关的事件流中找出有意义的模式原创 2021-06-28 18:57:47 · 121 阅读 · 0 评论 -
Flink-10 Table API 与SQL
Table API 与SQL1 需要引入的pom依赖2 简单了解TableAPI1 动态表2 字段3 TableAPI 的窗口聚合操作1 通过一个例子了解TableAPI2 关于group by3 关于时间窗口4 SQL如何编写1 需要引入的pom依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_2.12</artifa原创 2021-06-28 18:50:39 · 154 阅读 · 1 评论 -
Flink-09 状态编程和容错机制
状态编程和容错机制1 有状态的算子和应用程序1 算子状态(operator state)2 键控状态(keyed state)2 状态一致性1 一致性级别2端到端(end-to-end)状态一致性3 检查点(checkpoint)1 Flink的检查点算法2 Flink+Kafka如何实现端到端的exactly-once语义4 选择一个状态后端(state backend)流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,流处理应用程序从传感器接收温度读数原创 2021-06-28 18:08:25 · 156 阅读 · 0 评论 -
Flink-08 ProcessFunction API(底层API)
ProcessFunction API1 KeyedProcessFunction2 TimerService 和 定时器(Timers)3 侧输出流(SideOutput)4 CoProcessFunction我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以原创 2021-06-28 17:45:48 · 72 阅读 · 0 评论 -
Flink-07 时间语义与Wartermark
时间语义与WartermarkFlink中的时间语义EventTime的引入Watermark1 基本概念2 Watermark的引入EvnetTime在window中的使用(Scala版)1 滚动窗口(TumblingEventTimeWindows)2 滑动窗口(SlidingEventTimeWindows)3 会话窗口(EventTimeSessionWindows)Flink中的时间语义在Flink的流式处理中,会涉及到时间的不同概念,如下图所示:Event Time:是事件创建的时间。它原创 2021-06-28 16:55:07 · 85 阅读 · 0 评论 -
Flink-06 Flink 中的Window
Flink 中的WindowWindow1.Window 概述2.Window 类型Window API1.TimeWindow1.滚动窗口2.滑动窗口(SlidingEventTimeWindows)2.CountWindow1.滚动窗口2.滑动窗口3.window function4.其它可选APIWindow1.Window 概述streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为有限块进行处原创 2021-06-28 16:38:31 · 73 阅读 · 0 评论 -
Flink-05 流处理API
Flink-05 流处理API1. Environment1.getExecutionEnvironment2.createLocalEnvironment3.createRemoteEnvironment2 . Source1.从集合读取数据2.从文件读取数据3.以kafka消息队列的数据作为来源4.自定义Source3 . Transform1.map2.flatmap3.filter4.keyby5.滚动聚合算子 (Rolling Aggregation)6.Reduce7.Split 和 Selec原创 2021-06-28 16:23:48 · 84 阅读 · 0 评论 -
Flink-04 运行架构
1 Flink运行时的组件作业管理器(JobManager)资源管理器(ResourceManager)任务管理器(TaskManager)分发器(Dispatcher)作业管理器(JobManager)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行。JobManager会先接收到要执行的应用程序,这个应用程序会包括:作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、库和其它资源的JAR包原创 2021-06-25 17:03:43 · 113 阅读 · 1 评论 -
Flink-03 部署
Standalone模式1 安装解压缩 flink-1.10.1-bin-scala_2.12.tgz,进入conf目录中。1)修改 flink/conf/flink-conf.yaml 文件:2)修改 /conf/slaves文件:3)分发给另外两台机子:4)启动:访问http://localhost:8081可以对flink集群和任务进行监控管理。2 提交任务准备数据文件(如果需要)把含数据文件的文件夹,分发到taskmanage 机器中如果从文件中读取数据,由原创 2021-06-25 15:19:33 · 76 阅读 · 0 评论 -
Flink-02 上手
搭建maven工程 FlinkTutorialpom文件<?xml version="1.0" encoding="UTF-8"?>4.0.0com.atguigu.flinkFlinkTutorial1.0-SNAPSHOT<dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>fli原创 2021-06-25 14:01:30 · 67 阅读 · 0 评论 -
Flink-01 简介
Flink-01 简介Flink 项目的理念是:“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。Flink 的重要特点:事件驱动型(Event-driven)事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。比较典型原创 2021-06-25 13:46:45 · 86 阅读 · 0 评论