并行执行

本节介绍如何在Flink中配置程序的并行执行。FLink程序由多个任务(转换/操作符、数据源和sinks)组成。任务被分成多个并行实例来执行,每个并行实例处理任务的输入数据的子集。任务的并行实例的数量称之为并行性。

如果要使用保存点,还应该考虑设置最大并行性(或最大并行性)。当从保存点还原时,可以改变特定运算符或整个程序的并行性,并且该设置指定并行性的上限。这是必需的,因为FLINK内部将状态划分为key-groups,并且我们不能拥有+INF的key-group数,因为这将对性能有害。

Flink中人物的并行度可以从多个不同层面设置:

操作算子层

操作算子,数据源,数据接收器等这些并行度都可以通过调用他们的setParallelism()方法设置。例如:

val env = StreamExecutionEnvironment.getExecutionEnvironment

val text = [...]

val wordCounts = text

? ?.flatMap{ _.split(" ") map { (_, 1) } }

? ?.keyBy(0)

? ?.timeWindow(Time.seconds(5))

? ?.sum(1).setParallelism(5)

wordCounts.print()

env.execute("Word Count Example")

执行环境层面

flink程序执行需要执行环境上下文。执行环境为其要执行的操作算子,数据源,数据sinks都是设置了默认的并行度。执行环境的并行度可以通过操作算子显示指定并行度来覆盖掉。

默认的执行环境并行度可以通过调用setParallelism()来设置。例如,操作算子,数据源,数据接收器,并行度都设置为3,那么在执行环境层面,设置方式如下:

客户端层

在提交job 到flink的时候,在客户端侧也可以设置flink的并行度。客户端即可以是java工程,也可以是scala工程。Flink的Command-line Interface (CLI)就是这样一种客户端。

在客户端侧flink可以通过-p参数来设置并行度。例如:

https://blog.csdn.net/rlnLo2pNEfx9c/article/details/bin/flink run -p 10 https://blog.csdn.net/rlnLo2pNEfx9c/article/examples/*WordCount-java*.jar

在java/scala客户端,并行度设置方式如下:

系统层面

系统层面的并行度设置,会针对所有的执行环境生效,可以通过parallelism.default,属性在conf/flink-conf.yaml文件中设置。

设置最大并行度

设置最大并行度,实际上调用的方法是setMaxParallelism(),其调用位置和setParallelism()一样。

默认的最大并行度是近似于operatorParallelism + (operatorParallelism / 2),下限是127,上线是32768.

值得注意的是将最大的并行的设置为超级大的数可能会对性能造成不利的影响,雅思6.5因为一些状态后端是必须要保存内部数据结构的,这个数据结构跟key-group数量相匹配(这是可重定状态的内部实现机制)。

配置taskmanagerslot

flink通过将项目分成tasks,来实现并行的执行项目,划分的tasks会被发到slot去处理。

集群中Flink的taskmanager提供处理slot。Slots数量最合适的是跟taskmanager的cores数量成正比。当然,taskmanager.numberOfTaskSlots的推荐值就是cpu核心的数目。

当启动一个任务的时候,我们可以为其提供默认的slot数目,其实也即是flink工程的并行度,设置方式在上面已经有详细介绍。

推荐阅读

Flink:动态表上的连续查询


文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/80809738

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(74)-微信公众平台开发-自定义菜单
  2. COG注释--转载
  3. asp.net初识
  4. jquery.color.js的使用
  5. 解决lScrollView嵌套ListView只显示一行的问题,listvie显示全部的item
  6. Mysql分区简述
  7. UWP深入学习三:依赖属性、附加属性和数据绑定
  8. wooyunAPI
  9. Tomcat - 设置 HTTP 基本认证
  10. (转)设置Win7防火墙规则 顺畅访问局域网
  11. JPA2 关于 PagingAndSortingRepository
  12. 一个PHP常用表单验证类(基于正则)
  13. MySQL在大数据Limit使用
  14. Andorid第三方库
  15. PHPstorm 函数时间注释的修改
  16. java读取文件乱码
  17. VB生成条形码(EAN-13)
  18. MFC界面相关源码
  19. c# BackgroundWorker初试
  20. vue从入门到女装??:从零开始搭建后台管理系统(二)用vue-docute生成线上文档

热门文章

  1. SPFA和堆优化的Dijk
  2. GoJS实例3
  3. 微信公众号sdk
  4. MQ的调用
  5. Vue2.x双向数据绑定
  6. Spring boot application.properties和 application.yml 初学者的学习
  7. HDU - 6143 Killer Names(dp记忆化搜索+组合数)
  8. Day4-T2
  9. xv6 锁
  10. [LeetCode] 929. Unique Email Addresses 独特的邮件地址