您当前的位置: 首页 >  flink

杨林伟

暂无认证

  • 2浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Flink教程(15)- Flink高级API(并行度)

杨林伟 发布时间:2022-03-08 10:30:58 ,浏览量:2

文章目录
  • 01 引言
  • 02 并行度
    • 2.1 并行度定义
    • 2.2 并行度指定方式
      • 2.2.1 Operator Level(算子级别)
      • 2.2.2 Execution Environment Level(Env级别)
      • 2.2.3 Client Level(客户端级别,推荐使用)
      • 2.2.4 System Level(系统默认级别,尽量不使用)
    • 2.3 并行度注意点
  • 03 文末

01 引言

在前面的博客,我们学习了Flink的一些高级API,有兴趣的同学可以参阅下:

  • 《Flink教程(01)- Flink知识图谱》
  • 《Flink教程(02)- Flink入门》
  • 《Flink教程(03)- Flink环境搭建》
  • 《Flink教程(04)- Flink入门案例》
  • 《Flink教程(05)- Flink原理简单分析》
  • 《Flink教程(06)- Flink批流一体API(Source示例)》
  • 《Flink教程(07)- Flink批流一体API(Transformation示例)》
  • 《Flink教程(08)- Flink批流一体API(Sink示例)》
  • 《Flink教程(09)- Flink批流一体API(Connectors示例)》
  • 《Flink教程(10)- Flink批流一体API(其它)》
  • 《Flink教程(11)- Flink高级API(Window)》
  • 《Flink教程(12)- Flink高级API(Time与Watermaker)》
  • 《Flink教程(13)- Flink高级API(状态管理)》
  • 《Flink教程(14)- Flink高级API(容错机制)》

衔接之前的文章,本文要讲的是Flink里面的并行度。

02 并行度 2.1 并行度定义

并行度:一个Flink程序由多个Operator组成(sourcetransformationsink), 一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。

2.2 并行度指定方式 2.2.1 Operator Level(算子级别)

一个算子、数据源和sink的并行度可以通过调用 setParallelism()方法来指定 在这里插入图片描述

2.2.2 Execution Environment Level(Env级别)

执行环境(任务)的默认并行度可以通过调用setParallelism()方法指定。为了以并行度3来执行所有的算子、数据源和data sink, 可以通过如下的方式设置执行环境的并行度:

执行环境的并行度可以通过显式设置算子的并行度而被重写在这里插入图片描述

2.2.3 Client Level(客户端级别,推荐使用)

并行度可以在客户端将job提交到Flink时设定。

对于CLI客户端,可以通过-p参数指定并行度

./bin/flink run -p 10 WordCount-java.jar
2.2.4 System Level(系统默认级别,尽量不使用)

在系统级可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度: 在这里插入图片描述 在这里插入图片描述 上图流程描述:

  • Example1:在fink-conf.yamltaskmanager.numberOfTaskSlots默认值为1,即每个Task Manager上只有一个Slot,此处是3,Example1中,WordCount程序设置了并行度为1,意味着程序 SourceReduceSink在一个Slot中,占用一个Slot
  • Example2:通过设置并行度为2后,将占用2个Slot
  • Example3:通过设置并行度为9,将占用9个Slot
  • Example4:通过设置并行度为9,并且设置sink的并行度为1,则SourceReduce将占用9个Slot,但是Sink只占用1个Slot
2.3 并行度注意点

并行度注意点:

  • 并行度的优先级:算子级别 > env级别 > Client级别 > 系统默认级别 (越靠前具体的代码并行度的优先级越高);
  • 如果source不可以被并行执行,即使指定了并行度为多个,也不会生效;
  • 在实际生产中,我们推荐在算子级别显示指定各自的并行度,方便进行显示和精确的资源控制;
  • slot是静态的概念,是指taskmanager具有的并发执行能力; parallelism是动态的概念,是指程序运行时实际使用的并发能力。
03 文末

本文主要讲解了与Flink相关的并行度,谢谢大家的阅读,本文完!

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.3879s