![](https://img-blog.csdnimg.cn/20210509111252893.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flink
文章平均质量分 87
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。
Lansonli
CSDN大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
大数据Flink(一百零五):SQL性能调优
因此如果你要做这个优化,需要提前做一下吞吐量和延迟之间的权衡,但是大多数情况下,buffer 数据的延迟都是可以被接受的。:其核心思想在于按照 distinct 的 key,即 user_id,先做数据的分桶,将数据打散,分散到 Flink 的多个 TM 上进行计算,然后再将数据合桶计算。:在聚合数据处理场景中,很可能会由于热点数据导致数据倾斜,如下 SQL 所示,当 color = RED 为 50000w 条,而 color = BLUE 为 5 条,就产生了数据倾斜,而器数据处理的算子产生性能瓶颈。原创 2023-10-30 06:00:00 · 570 阅读 · 0 评论 -
大数据Flink(一百零四):SQL任务参数配置
在计算 count(1),sum(col) 场景汇总提效很高,因为 count(1),sum(col) 在经过本地 localAggregate 之后,每个 group by 的 key 就一个结果值。Flink SQL 相关参数需要在 TableEnvironment 中设置。Flink SQL 任务在生成执行计划时,优化生成更优的执行计划。用于优化 Flink SQL 任务在执行时的任务性能。原创 2023-10-27 22:09:09 · 1604 阅读 · 0 评论 -
大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)
Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与 Python UDAF 不同的是,针对同一组输入数据,Python UDTAF 可以产生 0 条、1 条、甚至多条输出数据。原创 2023-10-27 07:55:13 · 1024 阅读 · 1 评论 -
大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
Python UDAF,即 Python AggregateFunction。Python UDAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等。针对同一组输入数据,Python AggregateFunction 产生一条输出数据。原创 2023-10-25 22:57:02 · 1205 阅读 · 0 评论 -
大数据Flink(一百零一):SQL 表值函数(Table Function)
Python UDTF,即 Python TableFunction,针对每一条输入数据,Python UDTF 可以产生 0 条、1 条或者多条输出数据,此外,一条输出数据可以包含多个列。如果你是使用 Scala 实现函数,不要使用 Scala 中 object 实现 UDF,Scala object 是单例的,有可能会导致并发问题。原创 2023-10-23 23:25:59 · 948 阅读 · 0 评论 -
大数据Flink(一百):SQL自定义函数(UDF)和标量函数(Scalar Function)
Python UDF,即 Python ScalarFunction,针对每一条输入数据,仅产生一条输出数据。目前 Flink 自定义函数可以基于 JVM 语言(例如 Java 或 Scala)或 Python 实现,实现者可以在 UDF 中使用任意第三方库,本章聚焦于使用 Python 语言开发自定义函数。自定义函数(UDF)是一种扩展开发机制,可以用来在查询语句里调用难以用 SQL 进行 直接 表达的频繁使用或自定义的逻辑。Flink 体系也提供了类似于其他大数据引擎的 UDF 体系。原创 2023-10-21 18:43:40 · 942 阅读 · 0 评论 -
大数据Flink(九十九):SQL 函数的解析顺序和系统内置函数
版本的 Flink 体系中,内置的系统函数没有像 Hive 内置的函数那么丰富,比如 Hive 中常见的 get_json_object 之类的,Flink 都是没有的,但是 Flink 提供了插件化 Module 的能力,能扩充一些 UDF,下一篇会进行介绍。由于精确函数应用一定会带上 Catalog 或者数据库名称,所以 Flink 中的精确函数引用一定是指向临时性 Catalog 函数或 Catalog 函数的。系统内置函数可以直接在 Flink 官网进行查询,这里就不多进行介绍。原创 2023-10-19 23:58:05 · 1014 阅读 · 0 评论 -
大数据Flink(九十八):SQL函数的归类和引用方式
在模糊函数引用中,用户只需在 SQL 查询中指定函数名就可以引用 UDF,例如: select myfunc(x) from mytable。当然如果系统函数和 Catalog 函数的名称是重复的,Flink 体系是会使用哪一个函数呢?请注意,在用户使用函数时,系统函数始终优先于 Catalog 函数解析,临时函数始终优先于持久化函数解析。Flink Table\SQL API 允许用户使用函数进行数据处理、字段标准化等处理。用户在 Flink 中可以通过精确、模糊两种引用方式引用函数。原创 2023-10-17 20:50:07 · 1032 阅读 · 0 评论 -
大数据Flink(九十七):EXPLAIN、USE和SHOW 子句
如果熟悉 MySQL 的同学会非常熟悉这个子句,在 MySQL 中,USE 子句通常被用于切换库,那么在 Flink SQL 体系中,它的作用也是和 MySQL 中 USE 子句的功能基本一致,用于切换 Catalog,DataBase,使用 Module。:如果熟悉 MySQL 的同学会非常熟悉这个子句,在 MySQL 中,SHOW 子句常常用于查询库、表、函数等,在 Flink SQL 体系中也类似。:EXPLAIN 子句其实就是用于查看当前这个 sql 查询的逻辑计划以及优化的执行计划。原创 2023-10-16 22:29:28 · 620 阅读 · 0 评论 -
大数据Flink(九十六):DML:Deduplication
Deduplication 其实就是去重,也即上文介绍到的 TopN 中 row_number = 1 的场景,但是这里有一点不一样在于其排序字段一定是时间属性列,不能是其他非时间属性的普通列。在 row_number = 1 时,如果排序字段是普通列 planner 会翻译成 TopN 算子,如果是时间属性列 planner 会翻译成 Deduplication,这两者最终的执行算子是不一样的,Deduplication 相比 TopN 算子专门做了对应的优化,性能会有很大提升。可以看到其有回撤数据。原创 2023-10-04 08:00:00 · 357 阅读 · 0 评论 -
大数据Flink(九十五):DML:Window TopN
还记得上文介绍 TopN 说道的 TopN 时会出现中间结果,从而出现回撤数据的嘛?Window TopN 不会出现回撤数据,因为 Window TopN 实现是在窗口结束时输出最终结果,不会产生中间结果。而且注意,因为是窗口上面的操作,Window TopN 在窗口结束时,会自动把 State 给清除。:Window TopN 是一种特殊的 TopN,它的返回结果是每一个窗口内的 N 个最小值或者最大值。:取当前这一分钟的搜索关键词下的搜索热度前 10 名的词条数据。测试代码,并nc -lk 8888。原创 2023-10-03 07:00:00 · 505 阅读 · 0 评论 -
大数据Flink(九十三):DML:Order By、Limit 子句
实时任务中,Order By 子句中必须要有时间属性字段,并且时间属性必须为升序时间属性,即 WATERMARK FOR rowtime_column AS rowtime_column - INTERVAL '0.001' SECOND 或者。,但在实时任务中一般用的非常少。原创 2023-10-01 06:00:00 · 266 阅读 · 0 评论 -
大数据Flink(九十四):DML:TopN 子句
TopN 其实就是对应到离线数仓中的 row_number(),可以使用 row_number() 对某一个分组的数据进行排序。原创 2023-10-02 06:30:00 · 356 阅读 · 0 评论 -
大数据Flink(九十二):DML:集合操作
上述 SQL 在流式任务中,如果一条左流数据先来了,没有从右流集合数据中找到对应的数据时会直接输出,当右流对应数据后续来了之后,会下发回撤流将之前的数据給撤回。上述 SQL 的 In 子句其实就和之前介绍到的 Inner Join 类似。并且 In 子查询也会涉及到大状态问题,大家注意设置 State 的 TTL。原创 2023-09-30 07:30:00 · 194 阅读 · 0 评论 -
大数据Flink(九十一):Array Expansion(数组列转行)和Table Function(自定义列转行)
:这个其实和 Array Expansion 功能类似,但是 Table Function 本质上是个 UDTF 函数,和离线 Hive SQL 一样,我们可以自定义 UDTF 去决定列转行的逻辑。:比如某些场景下,日志是合并、攒批上报的,就可以使用这种方式将一个 Array 转为多行。:将表中 ARRAY 类型字段(列)拍平,转为多行。SQL 表值函数(Table Function)原创 2023-09-27 08:00:00 · 426 阅读 · 0 评论 -
大数据Flink(九十):Lookup Join(维表 Join)
Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。原创 2023-09-26 22:09:41 · 1894 阅读 · 0 评论 -
大数据Flink(八十九):Temporal Join(快照 Join)
比如常见的汇率数据(实时的根据汇率计算总金额),在 12:00 之前(事件时间),人民币和美元汇率是 7:1,在 12:00 之后变为 6:1,那么在 12:00 之前数据就要按照 7:1 进行计算,12:00 之后就要按照 6:1 计算。在事件时间语义的任务中,事件时间 12:00 之前的数据,要按照 7:1 进行计算,12:00 之后的数据,要按照 6:1 进行计算。事件时间的 Temporal Join 一定要把 Versioned Table 的主键包含在 Join on 的条件中。原创 2023-09-26 00:25:53 · 849 阅读 · 1 评论 -
大数据Flink(八十七):DML:Joins之Regular Join
流的上游是无限的数据,所以要做到关联的话,Flink 会将两条流的所有数据都存储在 State 中,所以 Flink 任务的 State 会无限增大,因此你需要为 State 配置合适的 TTL,以防止 State 过大。:Join 其实在我们的数仓建设过程中应用是非常广泛的。:Regular Join 其实就是和离线 Hive SQL 一样的 Regular Join,通过条件关联两条流数据输出。Join 的流程是左流新来一条数据之后,会和右流中符合条件的所有数据做 Join,然后输出。原创 2023-09-23 09:26:09 · 248 阅读 · 1 评论 -
大数据Flink(八十六):DML:Group 聚合和Over 聚合
而 Group by 聚合是没有时间语义的,不管数据迟到多长时间,只要数据来了,就把上一次的输出的结果数据撤回,然后把计算好的新的结果数据发出。而窗口聚合是在时间粒度上对数据进行分组,是纵向的。Group by 聚合涉及到了回撤流(也叫 retract 流),会产生回撤流是因为从整个 SQL 的语义来看,上游的 Kafka 数据是源源不断的,无穷无尽的,那么每次这个 SQL 任务产出的结果都是一个中间结果,所以每次结果发生更新时,都需要将上一次发出的中间结果给撤回,然后将最新的结果发下去。原创 2023-09-23 09:00:32 · 246 阅读 · 1 评论 -
大数据Flink(八十五):Window TVF 支持多维数据分析
这时,有离线 Hive SQL 使用经验的就会想到,如果有了 Grouping Sets,我们就可以直接用 Grouping Sets 将维度组合写在一条 SQL 中,写起来方便并且执行效率也高。对于经常需要对数据进行多维度的聚合分析的场景,您既需要对a列做聚合,也要对b列做聚合,同时要按照a、b两列同时做聚合,因此需要多次使用UNION ALL。CUBE会枚举指定列的所有可能组合作为GROUPING SETS,而ROLLUP会以按层级聚合的方式产生GROUPING SETS。也可以用于非窗口函数的场景。原创 2023-09-21 23:51:43 · 422 阅读 · 0 评论 -
大数据Flink(八十四):SQL语法的DML:窗口聚合
由于窗口涉及到的知识内容比较多,先为大家说明介绍下面内容时的思路,大家跟着思路走。首先来看看 Flink SQL 中支持的 4 种窗口的运算。原创 2023-09-20 21:40:45 · 691 阅读 · 4 评论 -
大数据Flink(八十三):SQL语法的DML:With、SELECT & WHERE、SELECT DISTINCT 子句
但是这可能会影响查询结果的正确性,比如某个 key 的数据过期从状态中删除了,那么下次再来这么一个 key,由于在状态中找不到,就又会输出一遍。可以看到这个实时任务的所有算子是以一种 pipeline 模式运行的,所有的算子在同一时刻都是处于 running 状态的,24 小时一直在运行,实时任务中也没有离线中常见的分区概念。可以看到离线任务的算子是分阶段(stage)进行运行的,每一个 stage 运行结束之后,然后下一个 stage 开始运行,全部的 stage 运行完成之后,这个离线任务就跑结束了。原创 2023-09-19 00:00:20 · 711 阅读 · 1 评论 -
大数据Flink(八十二):SQL语法的DDL:Create 子句
例如,我们可以使用元数据列从 Kafka 数据中读取 Kafka 数据自带的时间戳(这个时间戳不是数据中的某个时间戳字段,而是数据写入 Kafka 时,Kafka 引擎给这条数据打上的时间戳标记),然后我们可以在 Flink SQL 中使用这个时间戳,比如进行基于时间的窗口操作。如果只是简单的四则运算的话直接写在 DML 中就可以,但是计算列一般是用于定义时间属性的(因为在 SQL 任务中时间属性只能在 DDL 中定义,不能在 DML 语句中定义)。这些列本身是没有以物理形式存储到数据源中的。原创 2023-09-17 08:54:45 · 737 阅读 · 1 评论 -
大数据Flink(八十一):SQL 时区问题
在北京时区的用户使用 TIMESTAMP(3) 类型的时间列开最常用的 1 天的窗口时,划分出来的窗口范围是北京时间的 [2022-01-01 08:00:00, 2022-01-02 08:00:00],而不是北京时间的 [2022-01-01 00:00:00, 2022-01-02 00:00:00]。通过上述结果可见,使用处理时间进行开窗,在 UTC 时区下的计算结果与在 Asia/Shanghai 时区下计算的窗口开始时间,窗口结束时间和窗口的时间是不同的,都是按照时区进行格式化的。原创 2023-09-16 10:19:47 · 818 阅读 · 1 评论 -
大数据Flink(八十):Checkpoint的状态后端和重启策略
MemoryStateBackend内部将状态(state)数据作为对象保存在java堆内存中(taskManager),通过checkpoint机制,MemoryStateBackend将状态(state)进⾏快照并保存Jobmanager(master)的堆内存中。如果某个算子在节点A上失败,在节点B上恢复,使用本地文件时,在B上无法读取节点 A上的数据,导致状态恢复失败。您可以选择将状态保留在 JVM 堆上,或者如果它太大,则保留在有效组织的磁盘数据结构中,这取决于状态后端的配置。原创 2023-09-14 06:00:00 · 317 阅读 · 1 评论 -
大数据Flink(七十九):SQL 的容错(Checkpoint)
Checkpoint 保存数默认是 1,也就是只保存最新的 Checkpoint 的 State 文件,当进行 State 恢复时,如果最新的 Checkpoint 文件不可用时 (比如文件损坏或者其他原因),那么 State 恢复就会失败,如果设置 Checkpoint 保存数 3,即使最新的 Checkpoint 恢复失败,那么 Flink 也会回滚到上一次 Checkpoint 的状态文件进行恢复。一般来说,Checkpoint 时间间隔越长,需要生产的 State 就越大。原创 2023-09-13 19:00:00 · 223 阅读 · 1 评论 -
大数据Flink(七十八):SQL 的水印操作(Watermark)
4.后面几个以此类推,直到Event Time为:1648197590000的数据进来的时候,前一条数据的WaterMark为1648197589000,于是更新当前的WaterMark为1648197590000,Flink认为1648197590000之前的数据都已经到达,且达到了窗口的触发条件,开始进行计算。可以看到,设置了最大允许乱序时间后,WaterMark要比原来低5秒,可以对延迟5秒内的数据进行处理,窗口的触发条件也同样会往后延迟关于延迟时间,请结合业务场景进行设置。原创 2023-09-12 23:02:32 · 933 阅读 · 1 评论 -
大数据Flink(七十七):SQL窗口的Over Windows
按照时间区间聚合就是时间区间的一个滑动窗口,比如下面案例 1 小时的区间,最新输出的一条数据的 sum 聚合结果就是最近一小时数据的 amount 之和。按照行数聚合就是数据行数的一个滑动窗口,比如下面案例,最新输出的一条数据的 sum 聚合结果就是最近 5 行数据的 amount 之和。在 Hive 中也有相同的聚合,但是可以想想你在离线数仓经常使用嘛?:可以理解为是一种特殊的滑动窗口聚合函数。:计算最近一段滑动窗口的聚合结果数据。那这里我们拿 Over 聚合 与。原创 2023-09-11 23:39:37 · 373 阅读 · 3 评论 -
大数据Flink(七十六):SQL的渐进式窗口(CUMULATE)
这类指标是一段周期内的累计状态,对分析师来说更具统计分析价值,而且几乎所有的复合指标都是基于此类指标的统计(不然离线为啥都要累计一天的数据,而不要一分钟累计的数据呢)。渐进式窗口可以认为是首先开一个最大窗口大小的滚动窗口,然后根据用户设置的触发的时间间隔将这个滚动窗口拆分为多个窗口,这些窗口具有相同的窗口起点和不同的窗口终点。例如,从每日零点到当前这一分钟绘制累积 UV,其中 10:00 时的 UV 表示从 00:00 到 10:00 的 UV 总数。:渐进式窗口语义和滚动窗口类似,这里不再赘述。原创 2023-09-10 15:22:30 · 1061 阅读 · 4 评论 -
大数据Flink(七十五):SQL的Session 窗口(SESSION)
可以看到 Group Window Aggregation 中 Session 窗口的写法就是把 session window 的声明写在了 group by 子句中,即 session(row_time, interval '5' minute)。Session 时间窗口和滚动、滑动窗口不一样,其没有固定的持续时间,如果在定义的间隔期(Session Gap)内没有新的数据出现,则 Session 就会窗口关闭。:Session 窗口语义和滚动窗口类似,这里不再赘述。第一个参数为事件时间的时间戳;原创 2023-09-08 11:42:35 · 455 阅读 · 2 评论 -
大数据Flink(七十四):SQL的滑动窗口(HOP)
与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大小,则滑动窗口之间每个窗口是可以重叠。这样,每 5 分钟会划分一次窗口,这个窗口包含的数据是过去 10 分钟内的数据,如下图所示。:比如计算同时在线的数据,要求结果的输出频率是 1 分钟一次,每次计算的数据是过去 5 分钟的数据(有的场景下用户可能在线,但是可能会 2 分钟不活跃,但是这也要算在同时在线数据中,所以取最近 5 分钟的数据就能计算进去了)原创 2023-09-06 23:40:27 · 1409 阅读 · 1 评论 -
大数据Flink(七十三):SQL的滚动窗口(TUMBLE)
(TUMBLE 算子):接收到上游算子发的一条一条的数据,然后将每一条数据按照时间戳划分到对应的窗口中(根据事件时间、处理时间的不同语义进行划分),上述案例为事件时间,事件时间中,滚动窗口算子接收到上游的 Watermark 大于窗口的结束时间时,则说明当前这一分钟的滚动窗口已经结束了,将窗口计算完的结果发往下游算子(一条一条发给下游。数据源算子(From Order):连接到 Kafka topic,数据源算子一直运行,实时的从 Order Kafka 中一条一条的读取数据,然后一条一条发送给下游的。原创 2023-09-05 23:06:28 · 1103 阅读 · 2 评论 -
大数据Flink(七十二):SQL窗口的概述和Over Windows
当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。按照时间区间聚合就是时间区间的一个滑动窗口,比如下面案例 1 小时的区间,最新输出的一条数据的 sum 聚合结果就是最近一小时数据的 amount 之和。按照行数聚合就是数据行数的一个滑动窗口,比如下面案例,最新输出的一条数据的 sum 聚合结果就是最近 5 行数据的 amount 之和。原创 2023-09-04 06:30:00 · 939 阅读 · 1 评论 -
大数据Flink(七十一):SQL的时间属性
以事件时间举个例子,如果只是数据携带了时间,Flink 也消费了这个数据,但是在 Flink 中没有使用数据的这个时间作为计算的触发条件,也不能把这个 Flink 任务叫做事件时间的任务。:举个例子,比如用户可以自定义每隔 10s 的本地时间,或者消费到的数据的时间戳每增大 10s,就把计算结果输出一次,时间在此类应用中也是一种标识任务进度的作用。事件时间:指的是数据本身携带的时间,这个时间是在事件产生时的时间,而且在 Flink SQL 触发计算时,也使用数据本身携带的时间。三种时间属性的应用场景是啥?原创 2023-09-03 10:01:50 · 1444 阅读 · 1 评论 -
大数据Flink(七十):SQL 动态表 & 连续查询
可以理解为虽然 group by user, tumble(xxx) 上游也是一个源源不断的数据,但是这个查询本质上是对时间上的划分,而时间都是越变越大的,当前这个滚动窗口结束之后,后面来的数据的时间都会比这个滚动窗口的结束时间大,都归属于之后的窗口了,当前这个滚动窗口的结果数据就不会再改变了,因此这条查询只有 INSERT 数据,即一个 Append 查询。连续查询(Continuous Query) 的产出的结果 = 批处理模式在输入表的上执行的相同查询的结果。查询每小时持续计算结果并更新结果表。原创 2023-08-31 23:31:53 · 1289 阅读 · 2 评论 -
大数据Flink(六十九):SQL 数据类型
DECIMAL、DECIMAL(p)、DECIMAL(p, s)、DEC、DEC(p)、DEC(p, s)、NUMERIC、NUMERIC(p)、NUMERIC(p, s):固定长度和精度的数值类型,就和 Java 中的 BigDecimal 一样,p 代表数值位数(长度),取值范围 [1, 38];BIGINT:-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 的 8 字节大小的有符号整数,就和 Java 中的 long 一样。原创 2023-08-29 06:30:00 · 386 阅读 · 3 评论 -
大数据Flink(六十八):SQL & Table 的基本概念及常用 API
Table 对象不会真的产生一个中间表供下游多个查询去引用,即多个查询不共享这个 Table 的结果,可以理解为是一种中间表的简化写法,不会先产出一个中间表结果,然后将这个结果在下游多个查询中复用,后续的多个查询会将这个 Table 的逻辑执行多次。对比到离线的 Hive SQL 中,在离线的场景(Hive 表)中 VIEW 也都是从已有的表中去创建的。那么在这个 Flink session 中,你的任务访问到这个表时,访问到的永远是临时表(即相同名称的表,临时表会屏蔽永久表)。原创 2023-08-27 07:33:48 · 795 阅读 · 2 评论 -
大数据Flink(六十七):SQL & Table 简介及运行环境
Table API 和 SQL API 也与 DataStream API 做到了无缝集成。例如,可以使用 SQL 的 MATCH_RECOGNIZE 子句匹配出异常的数据,然后使用再转为 DataStream API 去灵活的构建针对于异常数据的自定义报警机制。这就是说为什么 Flink SQL 和 Table API 可以做到在用户接口层面的流批统一。无论输入是连续(流处理)还是有界(批处理),在 Table 和 SQL 任一 API 中同一条查询语句是具有相同的语义并且会产出相同的结果的。原创 2023-08-26 07:16:33 · 668 阅读 · 2 评论 -
大数据Flink(六十六):Flink的重要概念和小结
每一个算子的子任务,会根据数据传输的策略,把数据发送到不同的下游目标任务。如果大家见过传说中的“卡带式游戏机”,就会对它有更直观的认识:游戏机上的卡槽提供了可以运行游戏的接口和资源,我们把游戏卡带插入卡槽,就可以占用游戏机的计算资源,执行卡带中的游戏程序了。比图中的 map 和后面的 keyBy/window 算子之间(这里的 keyBy 是数据传输算子,后面的 window、apply 方法共同构成了 window 算子),以及 keyBy/window 算子和 Sink 算子之间,都是这样的关系。原创 2023-08-23 21:53:35 · 788 阅读 · 4 评论 -
大数据Flink(六十五):Flink作业提交流程
比如我们在上一章实践过的独立集群环境的会话模式,就是需要先启动集群,如果资源不够,只能等待资源释放,而不会直接启动新的 TaskManager。在独立模式(Standalone)下, TaskManager 都需要手动启动,所以当 ResourceManager 收到 JobMaster 的请求时,会直接要求 TaskManager 提供资源。(1)客户端将作业提交给 YARN 的资源管理器,这一步中会同时将 Flink 的 Jar 包和配置上传到 HDFS,以便后续启动 Flink 相关组件的容器。原创 2023-08-21 06:30:00 · 268 阅读 · 1 评论