首页 > 其他分享 >Flink教程:并行度

Flink教程:并行度

时间:2023-09-03 13:05:29浏览次数:42  
标签:教程 Flink 作业 并行度 operator Operator 级别


Flink的并行度介绍一下?

Flink教程:并行度_并行度

概述

Flink的并行度(Parallelism)是指在Flink作业中并行执行任务的程度。它决定了作业中任务的数量以及任务之间的数据划分和分配方式。并行度是一个重要的概念,对于实现高吞吐量和低延迟的流处理非常关键。

在Flink中,有两个级别的并行度可以进行配置:

  1. 作业级别并行度(Job Parallelism):
  • 作业级别并行度是指整个作业中任务的数量,它决定了作业的整体并行执行能力。
  • 作业级别并行度可以在提交作业时通过编程API或命令行参数进行指定。例如,可以设置作业级别并行度为4,表示将作业划分为4个并发任务进行执行。
  • 作业级别并行度通常与集群中可用的计算资源数量相关联,以充分利用集群的处理能力。
  1. 算子级别并行度(Operator Parallelism):
  • 算子级别并行度是指每个算子(Operator)的任务数量,它决定了每个算子的并行执行程度。
  • 在Flink中,每个算子都可以独立地设置并行度。默认情况下,算子的并行度与作业级别并行度相同,但可以根据需要进行调整。
  • 通过设置算子级别并行度,可以根据数据流的特点和负载分布,实现更细粒度的任务划分和负载均衡。

并行度的选择需要考虑多个因素,包括可用的计算资源、数据流的特性、任务之间的依赖关系以及作业的性能需求。合理的并行度设置可以充分利用集群的资源,提高作业的吞吐量和响应时间。同时,还需要避免过度的并行度,以避免资源浪费和额外的通信开销。

需要注意的是,并行度的设置也会影响作业的一致性和结果正确性。在具有有状态操作的情况下,确保正确的并行度设置以保持正确的状态管理和结果一致性非常重要。

补充

Flink程序在执行的时候,会被映射成一个**Streaming Dataflow。**一个Streaming Dataflow是由一组Stream和Transformation Operator组成的。在启动时从一个或多个Source Operator开始,结束于一个或多个Sink Operator。

Flink程序本质上是并行的和分布式的,在执行过程中,一个流(stream)包含一个或多个流分区,而每一个operator包含一个或多个operator子任务。操作子任务间彼此独立,在不同的线程中执行,甚至是在不同的机器或不同的容器上。

operator子任务的数量是这一特定operator的并行度。相同程序中的不同operator有不同级别的并行度。

Flink教程:并行度_并行度_02

一个Stream可以被分成多个Stream的分区,也就是Stream Partition。一个Operator也可以被分为多个Operator Subtask。如上图中,Source被分成Source1和Source2,它们分别为Source的Operator Subtask。每一个Operator Subtask都是在不同的线程当中独立执行的。一个Operator的并行度,就等于Operator Subtask的个数

上图Source的并行度为2。而一个Stream的并行度就等于它生成的Operator的并行度。数据在两个operator之间传递的时候有两种模式:

(1)One to One模式:两个operator用此模式传递的时候,会保持数据的分区数和数据的 排序;如上图中的Source1到Map1,它就保留的Source的分区特性,以及分区元素处理的有序性。

(2)Redistributing (重新分配)模式:这种模式会改变数据的分区数;每个operator subtask会根据选择transformation把数据发送到不同的目标subtasks,比如keyBy()会通过hashcode重新分区,broadcast()和rebalance()方法会随机重新分区。


标签:教程,Flink,作业,并行度,operator,Operator,级别
From: https://blog.51cto.com/zhangxueliang/7339494

相关文章

  • flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构
    Flink的架构包含哪些?介绍下技术架构和运行架构Flink架构分为技术架构和运行架构两部分。技术架构如下图为Flink技术架构:Flink作为流批一体的分布式计算引擎,必须提供面向开发人员的API层,同时还需要跟外部数据存储进行交互,需要连接器,作业开发、测试完毕后,需要提交集群执行,需要......
  • flink教程:flink的有界、无界数据流、流批一体、容错能力等概念
    能否详细解释一下其中的数据流、流批一体、容错能力等概念?概述数据流:所有产生的数据都天然带有时间概念,把事件按照时间顺序排列起来,就形成了一个事件流,也被称作数据流。流批一体:首先必须先明白什么是有界数据和无界数据有界数据,就是在一个确定的时间范围内的数据流,有开始,......
  • flink教程:Flink 和 Spark Streaming的区别?
    Flink和SparkStreaming的区别?Flink和SparkSreaming最大的区别在于:Flink是标准的实时处理引擎,基于事件驱动,以流为核心,而SparkStreaming的RDD实际是一组小批次的RDD集合,是微批(Micro-Batch)的模型,以批为核心。概述下面我们介绍两个框架的主要区别:1.架构模型SparkStreamin......
  • sonarqube教程:docker-compose安装sonarqube及sonar-scanner插件的使用
    docker-compose安装sonarqubevim/etc/sysctl.conf vm.max_map_count=262144vm.max_map_count参数含义version:'3'services:postgres:image:postgres:14.5restart:alwayscontainer_name:postgresports:-5432:5432volumes:......
  • flink基础:什么是Flink?
    什么是Flink?描述一下Flink是一个以流为核心的高可用、高性能的分布式计算引擎。具备流批一体,高吞吐、低延迟,容错能力,大规模复杂计算等特点,在数据流上提供数据分发、通信等功能。ApacheFlink是一个开源的流式处理和批处理框架,旨在处理高吞吐量和低延迟的大规模数据流。它提供了......
  • linux教程:vm.max_map_count参数详解
    vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要......
  • linux教程:只用一条命令杀死占用端口为2888的进程
    第一种方式可以使用以下命令来杀死占用端口为2888的进程:kill$(lsof-t-i:2888)上述命令使用了命令替换(commandsubstitution)来获取占用端口为2888的进程的PID,并将其作为参数传递给kill命令。lsof-t-i:2888命令将输出占用该端口的进程的PID列表,kill命令然后将这些PID作为参数来......
  • linux教程:最小化安装的centos7如何安装图形化界面
    列出的组列表yumgrouplist安装yumgroupinstall-y"GNOMEDesktop"安装完成后,修改默认启动方式为图形化界面#设置成图形模式systemctlset-defaultgraphical.target如果要换回来#设置成命令模式systemctlset-defaultmulti-user.target然后重启系统即可......
  • 无涯教程-JavaScript - NEGBINOMDIST函数
    NEGBINOMDIST函数取代了Excel2010中的NEGBINOM.DIST函数。描述该函数返回负二项式分布。NEGBINOMDIST返回在第number_s次成功之前出现number_f次失败的概率,而成功的恒定概率是概率_s。该函数与二项式分布相似,不同之处在于成功次数是固定的,而试验次数是可变的。像二项式一......
  • Android 系统抓包喂饭教程
    前言在编写爬虫前,我们都需要对目标应用进行抓包,然后分析一波后,才能进入到编写脚本的阶段对于使用iPhone的小伙伴来说,日常抓包不要太容易。PC端工具,比如:Charles、Fiddler完全够打;「Stream」是iOS端一款非常强大的网络抓包应用,界面简洁的同时功能非常强大但对于使用Android......