【Flink】Flink SQL

news2024/11/26 9:33:03

一、Flink 架构

Flink 架构 | Apache Flink

二、设置TaskManager、Slot和Parallelism

在Apache Flink中,设置TaskManager、Slot和Parallelism是配置Flink集群性能和资源利用的关键步骤。以下是关于如何设置这些参数的详细指南:

1. TaskManager 设置

TaskManager是Flink集群中负责执行作业的节点。关于TaskManager的设置,主要关注其数量和资源分配。

  1. TaskManager数量:根据集群规模和作业需求确定TaskManager的数量。例如,如果集群资源充足且作业并发度高,可以增加TaskManager的数量以提高处理能力。
  2. 资源分配:为每个TaskManager分配适当的内存和CPU资源。这取决于集群的硬件配置和作业的资源需求。确保为TaskManager分配足够的资源以确保作业可以高效运行。

2. Slot 设置

Slot是TaskManager上用于执行作业的资源单元。一个Slot可以并行运行一个作业的子任务。

  1. Slot数量:每个TaskManager上的Slot数量决定了该TaskManager可以并行运行的作业子任务数。Slot数量通常根据TaskManager的内存和CPU资源来确定。例如,如果TaskManager有2GB内存和1个CPU核心,并且每个Slot需要1GB内存和0.5个CPU核心,则该TaskManager可以设置2个Slot。
  2. 资源分配:每个Slot会分配到一定的内存和CPU资源。这些资源应该根据作业的需求和TaskManager的总资源进行合理分配。

3. Parallelism 设置

Parallelism决定了Flink作业的并行度,即作业可以并行执行的程度。

  1. 默认并行度:在Flink配置文件中,可以指定默认并行度(parallelism.default)。如果作业没有指定并行度,则使用默认并行度。
  2. 作业级并行度:在提交作业时,可以通过命令行参数(-p)或编程API(env.setParallelism())为整个作业设置并行度。这将作为作业的默认并行度,但可以被单个算子的并行度设置覆盖。
  3. 算子级并行度:在Flink程序中,可以为每个算子单独设置并行度。这可以通过在算子链的末尾调用setParallelism()方法来实现。算子级并行度的优先级高于作业级并行度和默认并行度。

4. 总结

  • 设置TaskManager的数量和资源分配以适应集群规模和作业需求。
  • 根据TaskManager的资源为每个TaskManager设置适当的Slot数量。
  • 根据作业的需求和集群的资源设置作业的默认并行度、作业级并行度和算子级并行度。

 5. 阿里云 实时计算Flink版 参数示例 


三、Flink SQL性能调优与配置

在使用Flink SQL进行数据处理时,性能调优是确保系统高效运行的关键。以下是一些常见的调优配置和策略,它们可以帮助您优化Flink SQL作业的性能。

1. 微批处理(Mini-Batch)

Flink SQL支持微批处理,通过组合多个小批次来减少任务调度的开销。当启用微批处理时,Flink会尝试将多个小批次合并成一个较大的批次进行处理。

# 启用微批处理
table.exec.mini-batch.enabled: 'true'
# 设置允许的最大延迟时间,超过该时间将不再等待更多数据而直接发送当前批次
table.exec.mini-batch.allow-latency: 2s

2. 算子链优化(Operator Chaining)

算子链优化是一种减少任务间数据传输开销的策略。通过将多个算子链接在一起,可以减少序列化和反序列化的开销,并提高数据传输的效率。

# 默认情况下,Flink会尝试自动进行算子链优化
# 如果需要禁用此功能,可以设置为false
pipeline.operator-chaining: 'false'

注意:通常建议保持算子链优化开启('true'),以获得更好的性能。

3. Hash Shuffle

在Flink中,Keyed Streams使用hash shuffle策略将数据分发到下游的并行任务。这有助于确保具有相同key的数据被发送到同一个下游任务,从而进行高效的聚合或连接操作。

对于Flink SQL中的sink,如果其接受的是Keyed Stream,并且需要确保数据的顺序性,可以使用FORCE关键字来强制使用hash shuffle。

# 强制使用hash shuffle
table.exec.sink.keyed-shuffle: FORCE

注意:在Flink SQL中,您通常不需要手动配置这个参数,因为Flink会根据作业的特性和需求自动选择合适的shuffle策略。

4. Hash Join

Hash Join是一种基于哈希表的连接算法,适用于等值连接场景。它通过将一个表的数据加载到哈希表中,然后扫描另一个表并与哈希表中的数据进行比较来实现连接。

在Flink SQL中,可以使用Hint(提示)来建议优化器使用Hash Join。但是,请注意,这只是一个建议,优化器可能会根据实际情况选择其他连接策略。

SELECT /*+ SHUFFLE_HASH(t1,t2) */ * FROM table1 t1 JOIN table2 t2 ON t1.key = t2.key

5. 设置Sink的并行度

Sink的并行度决定了数据写入外部系统时的并行度。可以根据外部系统的性能和Flink作业的需求来设置合适的并行度。

在Flink SQL中,可以通过DDL语句或API来设置Sink的并行度。以下是一个示例DDL语句:

CREATE TABLE sink_table (
... -- 定义表结构
) WITH (
... -- 其他配置选项
'sink.parallelism' = '4' -- 设置并行度为4
);

或者,在Flink作业提交时通过API来动态设置Sink的并行度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1871892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAME70硬件擦除flash方法(ATSAME70Q21B-ANT

1.PB12高电平,当PB12置低电平时,将擦除所有数据; 2.ATSAME70Q21B-ANT芯片通过Microchip Studio 7.0仿真器烧录的…elf和hex等文件,读取之后,再烧写,还是可以使用,故需要锁定芯片代码&#xff…

Python27 神经网络中的重要概念和可视化实现

1. 神经网络背后的直观知识 神经网络的工作方式非常相似:它接受多个输入,经过多个隐藏层中的多个神经元进行处理,并通过输出层返回结果,这个过程在技术上称为“前向传播”。 接下来,将神经网络的输出与实际输出进行比…

STM32_hal库学习(2)-按键(中断/非中断)控制LED

在这篇文章我将使用两种方法实现按键控制,分别使用非中断控制和中断控制LED 非中断按键控制LED: 对于非中断实现按键控制led,我将直接从上一个工程led闪烁进行修改 STM32F103—Hal库的学习(1)LED灯闪烁-CSDN博客 非…

<sa8650>QCX ISP Tuning 使用详解 — Tuning前置条件

<sa8650>QCX ISP Tuning 使用详解 — Tuning前置条件 一 如何安装 Qualcomm Chromatix™ 摄像头校准工具二 如何使用 Qualcomm Chromatix™ tuning工具创建tuning项目2.1 创建工程前提依赖2.2 创建工程2.3 添加场景2.4 编辑区域触发器三 如何创建Tuning 树一 如何安装 Qualco…

TypeScript(笔记版)

简介: nvm安装必须先把自己的node卸了,再去安装nvm TS就是js的超集 对js进行了扩展 浏览器不支持ts,要转换为js才可以。 ts是用来编程人员爽的 js的写法拿到ts也可以,ts代码量更大,但ts代码更加清晰 可以在playg…

C++精解【8】

文章目录 运算,- 加减法* / 乘除法逐元 乘法逐元 除法逐元综合运算矩阵乘法与加减法 转置、共轭、伴随矩阵点乘法,叉积 运算 ,- 加减法 逐元加减法 #include <iostream> #include "e:/eigen/Eigen/Dense" using namespace std;int main() {Eigen::Matrix2d …

并发编程工具集——Lock和Condition(上)(十二)

简述&#xff1a;Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程&#xff0c;其中 Lock 用于解决互斥问题&#xff0c;Condition 用于解决同步问题。 再造管程的理由和期望 理由&#xff1a;synchronized 没有办法解决“破坏不可抢占条件方案”。 原因是synchroniz…

可燃气体报警器计量校准:重要性与实践指南

在燃气机锅炉房、酒店厨房以及天然气管路等关键场所&#xff0c;可燃气体检测报警器的准确性和可靠性直接关系到人们的生命安全和财产安全。因此&#xff0c;对可燃气体报警器进行定期的计量校准至关重要。 在这篇文章中&#xff0c;佰德将从校准的必要性、方法与步骤、实际案…

【知识学习】阐述Unity3D中动画渲染的概念及使用方法示例

Unity3D中的卡通渲染&#xff08;Cartoon Rendering&#xff09;是一种渲染技术&#xff0c;它模仿传统手绘动画或漫画的视觉效果。这种渲染风格通常具有鲜明的颜色、清晰的轮廓线和简化的光影效果&#xff0c;常用于制作动画、游戏和其他视觉媒体。 卡通渲染的基本概念 轮廓…

Ansible-playbook的逻辑控制 ②

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在《Ansible-playbook的逻辑控制 ①》中&#xff0c;梳理了逻辑控制when的使用场景&#xff0c;本文则继续梳理学习loop与block块…

python调用nodeJs执行js代码

文章目录 安装环境二、python程序调用js代码示例 安装环境 需要安装nodejs、python python库安装 pip install PyExecJS2 二、python程序调用js代码 示例 js代码&#xff1a; function sum(a,b){return ab; }python代码 import execjsjs_codeopen(dejmo.js).read() js_…

springcloud第4季 分布式事务seata作用服务搭建1

一 seata作用 1.1 seata简介 1.seata是一款解决分布式事务的解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 1.2 seata的术语 一个中心&#xff1a;全局事务id&#xff0c;xid&#xff0c;在调用服务链路的上下文中进行传播。TC(Transa…

风机过滤机组介绍

一、定义 FFU英文全称为&#xff08;Fan Filter Unit&#xff09;&#xff0c;中文专业用语为风机过滤机组。FFU广泛应用于洁净室、洁净工作台、洁净生产线、组装式洁净室和局部百级等应用场合。 二、FFU的组成 FFU主要由四部分组成&#xff1a; 1.箱体 其材质常用镀锌铝合…

SpringBoot脚手架MySpringBootAPI(PgSQL+Druid+MyBatisPlus+Lombok)

MySpringBootAPI SpringBoot脚手架&#xff0c;基于SpringBootDruidPgSQLMyBatisPlusFastJSONLombok&#xff0c;其他的请自行添加和配置。 Author powered by Moshow郑锴(大狼狗) , https://zhengkai.blog.csdn.net 如何运行 1.首先确保你是JDK17&#xff0c;推荐微软的MSJDK…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8275 标注数量(xml文件个数)&#xff1a;8275 标注数量(txt文件个数)&#xff1a;8275 标注…

5分钟,从购买域名到HTTPS访问

5分钟&#xff0c;从购买域名到HTTPS访问 架构师手把手教技术 大家好&#xff0c;最近很多小伙伴咨询关于在 安装nginx 和 部署SSL证书 方面的技术&#xff0c;因此我录制了这个视频&#xff0c;希望可以帮助大家更快速地掌握这些关键技能。 首先&#xff0c;让我们从购买域名…

【离散数学·图论】(复习)

一、基本概念 1.一些基本术语&#xff1a; 2.点u&#xff0c;v邻接&#xff08;或相邻&#xff09;: 边e称为关联顶点u和v,or e连接u和v; 3.G(V,E)中&#xff0c;顶点v所有邻居的集合&#xff1a;N(v), 成为v的邻域。 4.度 &#xff1a; deg(v) 5.悬挂点&#xff1a;度为1的…

「C系列」C 经典练习实例

文章目录 1. 基本输入输出2. 字符串操作3. 数组与循环4. 函数与递归5. 逻辑与条件6. 数学问题7. 数字与数学8. 数组与字符串9. 逻辑与条件10. 结构体和联合体11. 指针12. 文件操作13. 动态内存分配相关链接 C语言经典练习实例及详细代码可以涵盖多个方面&#xff0c;从基础输入…

深度学习实验第T1周:实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 目录 一、前言 二、我的环境 三、…

《梦醒蝶飞:释放Excel函数与公式的力量》6.3NOW函数

6.3NOW函数 1&#xff09;NOW函数概述 NOW函数是Excel中一个非常实用的内置函数&#xff0c;它返回当前的日期和时间。这个函数可以自动更新&#xff0c;以反映打开工作簿时的确切日期和时间。 2&#xff09;函数语法 NOW函数的语法非常简单&#xff0c;因为它不需要任何参…