Flink1.10从0到1:(六)Flink的并行度和Slot

 

一、简介

        Flink中每一个worker(TaskManager)都是一个JVM进程,它可能会在独立的线程(Solt)上执行一个或多个 subtask。Flink 的每个 TaskManager 为集群提供 Solt。Solt 的数量通常与每个 TaskManager 节点的可用 CPU 内核数成比例,一般情况下 Slot 的数量就是每个节点的 CPU 的核数。 Slot的数量由集群中flink-conf.yaml配置文件中设 置taskmanager.numberOfTaskSlots 的值为 3,这个值的大小建议和节点 CPU 的数量保持一致。

 

一个任务的并行度设置可以从 4 个层面指定:

        Operator Level(算子层面)。

        Execution Environment Level(执行环境层面)。

        Client Level(客户端层面)。

        System Level(系统层面)。

优 先 级 :Operator Level>Execution Environment Level>Client Level>System Level。

 

1、 并行度设置之 Operator Level

        Operator、Source 和 Sink 目的地的并行度可以通过调用 setParallelism()方法来指定

 

2、 行度设置之 Execution Environment Level

        任务的默认并行度可以通过调用 setParallelism()方法指定。为了以并行度 3 来执行所有的 Operator、Source 和 Sink,可以通过如下方式设置执行环境的并行度

 

 

3、 并行度设置之 Client Level

        并行度还可以在客户端提交 Job 到 Flink 时设定。对于 CLI 客户端,可以通过-p 参数 30指定并行度

命令:flink run -p xxx.jar

 

 

 

4、 并行度设置之 System Level

在系统级可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度。

 

5、案例分析(如下图)

 

Flink 集群中有 3 个 TaskManager 节点,每个 TaskManager 的 Slot 数量为 3

 

 

 

 

Example1 :

    在fink-conf.yaml中 taskmanager.numberOfTaskSlots 默认值为1,即每个Task Manager上只有一个Slot ,此处是3
    Example中,WordCount程序设置了并行度为1,意味着程序 Source、Reduce、Sink在一个Slot中,占用一个Slot

Example2 :

        设置并行度为2后,占用2个Slot

Example3 :

        设置并行度为9,占用9个Slot

Example4 :

        设置并行度为9,并且设置sink的并行度为1,则Source、Reduce将占用9个Slot,但是Sink只占用1个Slot

感悟:

       我们要深信:今日的失败,都由于过去的不努力。我们要深信:今日的努力,必定有将来的大收成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值