前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flink之核心概念、基础配置

flink之核心概念、基础配置

原创
作者头像
用户11134802
修改2024-06-13 19:46:10
870
修改2024-06-13 19:46:10
举报
文章被收录于专栏:flink基础知识点flink基础知识点

一、并行度

并行子任务:

当处理数据的数据量过大的时候,flink会把一个算子操作复制多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”(subtasks),再将它们分发到不同节点,就真正实现了并行计算。

并行度的定义:

一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。包含并行子任务的数据流,就是并行数据流,它需要多个分区(stream partition)来分配并行任务。一般情况下,一个流程序的并行度,可以认为就是其所有算子中最大的并行度。一个程序中,不同的算子可能具有不同的并行度。

并行度的设置:四个方面

1、代码中设置

1.1、操作算子层面(Operator Level)

在代码中,可以很简单地在算子后跟着调用setParallelism()方法,来设置当前算子的并行度:

这种方式设置的并行度,只针对当前算子有效。

stream.map(word -> Tuple2.of(word, 1L)).setParallelism(2);

1.2、执行环境层面(Execution Environment Level)

可以直接调用执行环境的setParallelism()方法,全局设定并行度,这样代码中所有算子,默认的并行度就都为2

(一般不推荐,无法动态扩容并行度)

注意的是,由于keyBy不是算子,所以无法对keyBy设置并行度

env.setParallelism(2);

2、提交应用时设置

2.1、客户端层面(Client Level)

使用flink run命令提交应用时,可以增加-p参数来指定当前应用程序执行的并行度,它的作用类似于执行环境的全局设置:

bin/flink run –p 2 –c com.atguigu.wc.StreamWordCount ./FlinkTutorial-1.0-SNAPSHOT.jar

3、配置文件中设置

3.1、系统层面(System Level)

可以直接在集群的配置文件flink-conf.yaml中直接更改默认并行度:

parallelism.default: 2

需要注意的优先级算子层面>环境层面>客户端层面>系统层面。一句话总结(谁的影响小,谁的优先级高)

并行度的设置:一般设为kafka的分区数,达到1:1; 遵循2的n次方:比如2、4、8、16……

原因如下:

1、充分利用资源:

当 Flink 的并行度与 Kafka 的分区数相匹配时,每个分区都可以由一个独立的并行任务来处理。这样可以确保每个任务都能充分利用分配给它的资源,避免资源闲置或竞争。

例如,如果有 10 个 Kafka 分区和 10 个 Flink 并行任务,每个任务可以专注于处理一个分区的数据,从而实现高效的并行处理。

2、数据均衡分布:

Kafka 的分区机制将数据分散到不同的分区中,以实现数据的均衡分布。

通过将 Flink 的并行度设置为与分区数相同,可以确保每个并行任务处理的数据量相对均衡。这有助于避免某些分区数据量过大而导致的处理延迟或数据倾斜问题。每个任务处理相对均衡的数据量,可以提高整体的处理效率和性能。

3、提高处理效率:

遵循 2 的 n 次方设置并行度,可以使任务在执行过程中更好地利用 CPU 缓存和内存。这是因为 2 的 n 次方通常是计算机体系结构中的一个优化点,可以提高数据访问和处理的效率。

例如,当并行度为 2、4、8、16 等时,任务可以更好地利用 CPU 的缓存行大小、内存分页等特性,减少数据的缓存缺失和内存访问开销,从而提高处理效率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、并行度
    • 1、充分利用资源:
      • 2、数据均衡分布:
        • 3、提高处理效率:
        相关产品与服务
        GPU 云服务器
        GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档