主页 > 新闻资讯 > 大数据学习:Flink Task并行度的概念

大数据学习:Flink Task并行度的概念

作者:张老师 浏览次数: 2021-03-29 18:00
Flink在实时流计算上的优异表现,确实是值得称赞的,而这也得益于Flink在内部架构上的精细设计,基于不同层面去进行并行任务的执行。今天的大数据学习分享,我们就主要来讲讲Flink Task并行度的概念。

大数据学习:Flink Task并行度的概念

Flink并行任务的四个层次

Flink中的任务被分为多个并行任务来执行,其中每个并行的实例处理一部分数据。这些并行实例的数量被称为并行度。我们在实际生产环境中可以从四个不同层面设置并行度:

l操作算子层面(Operator Level)

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

l客户端层面(Client Level)

l系统层面(System Level)

需要注意的优先级:算子层面>环境层面>客户端层面>系统层面。

并行度的两个概念:slot和parallelism

1.slot

是指taskmanager的并发执行能力,在hadoop 1.x版本中也有slot的概念,有兴趣的读者可以了解一下。

每一个taskmanager中的分配3个TaskSlot,3个taskmanager一共有9个TaskSlos

2.parallelism是指taskmanager实际使用的并发能力

运行程序默认的并行度为1,9个TaskSlot只用了1个,有8个空闲。设置合适的并行度才能提高效率。

3.parallelism是可配置、可指定的

①可以通过修改$FLINK_HOME/conf/flink-conf.yaml文件的方式更改并行度

②可以通过设置$FLINK_HOME/bin/flink的-p参数修改并行度

③可以通过设置executionEnvironmentk的方法修改并行度

④可以通过设置flink的编程API修改过并行度

⑤这些并行度设置优先级从低到高排序,排序为api>env>p>file.

⑥设置合适的并行度,能提高运算效率

⑦parallelism不能多与slot个数。

简单来说,slot是静态的概念,是指taskmanager具有的并发执行能力;parallelism是动态的概念,是指程序运行时实际使用的并发能力。

需要设置合适的parallelism能提高运算效率,太多了和太少了都不行;设置parallelism有多中方式,优先级为api>env>p>file。

Flink Task的parallelism

Task的parallelism可以在Flink的不同级别上指定。四种级别是:算子级别、执行环境(ExecutionEnvironment)级别、客户端(命令行)级别、配置文件(flink-conf.yaml)级别

*每个operator、data source或者data sink都可以通过调用setParallelism()方法来指定

*运行环境的默认并发数可以通过调用setParallelism()方法来指定。env.setParallelism(3);运行环境的并发数可以被每个算子确切的并发数配置所覆盖。

*对于CLI客户端,并发参数可以通过-p来指定

*影响所有运行环境的系统级别的默认并发度可以在./conf/flink-conf.yaml的parallelism.defaul项中指定。不建议

当然,你也可以设置最大的并行度

*你可以通过调用setMaxParallelism()方法来设置最大并发度。

Flink如何确定TaskManager个数?

Job的最大并行度除以每个TaskManager分配的任务槽数。

Flink on YARN时,TaskManager的数量就是:max(parallelism)/yarnslots(向上取整)。例如,一个最大并行度为10,每个TaskManager有两个任务槽的作业,就会启动5个TaskManager。

关于大数据学习,Flink Task并行度的概念,以上就为大家做了基本的介绍了。Flink的任务并行度的设置,对于运行效率优化方面,是有着很重要的意义的。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频资料可联系客服获取!
热点排行
推荐文章
立即申请>>