apache-flink - Apache Flink : guideliness for setting parallelism?

标签 apache-flink flink-streaming

我正在尝试获得一些简单的规则或指导方针来设置什么值
运算符(operator)或工作
并行性。在我看来,它应该是一个数字 <= 的数量
可用任务
插槽?

例如,假设我有 2 台任务管理器机器,每台机器有 4 个任务槽。
假设集群上没有其他作业在运行,我会设置并行度吗
用于操作
像过滤器和映射到 8?如果不是,合理的数字是多少?

如果您请求的并行度比任务槽多,会发生什么?在
上面的例子,
如果我将操作的并行度设置为 12,会发生什么?我假设它
只会使用尽可能多的
可用吗?

此外,您似乎不想将并行性硬编码为
你的源代码,因为
当您提交时,您可能希望对可用的任务槽有一个大致的了解
工作?
您是否应该为所有运算符设置大致相同或不同的并行度
值(value)观,以及什么将指导
那个决定?

谢谢!

最佳答案

一般来说,最好不要对并行性进行硬编码,因为决定将多少资源分配给您的作业通常是操作的责任。此外,资源需求通常取决于您的 SLA 和实际工作负载,因此与程序无关,应单独处理。
Flink 1.5.0在 Yarn 或 Mesos 上运行时,您只需要决定作业的并行度,系统将确保它启动足够多的 TaskManagers 和足够的槽来执行您的作业。这完全是动态发生的,您甚至可以在运行时更改作业的并行度。
如果您使用的是独立模式,或者您的 Yarn/Mesos 集群没有足够的资源/插槽可用,那么作业将失败并显示 NoResourceAvailableException如果系统无法获得所需的插槽。

关于apache-flink - Apache Flink : guideliness for setting parallelism?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719147/

相关文章:

java - Apache Flink 作业集群 rpc.address 绑定(bind)到 kubernetes 上的本地主机

scala - Elasticsearch连接器可在IDE中工作,但不能在本地集群上工作

apache-flink - Flink 一个作业中的多个作业或多个管道

batch-processing - Flink 批处理接收器

kubernetes - 连接ResourceManager for Flink FLIP-6开始新的 “session job”

hadoop - Flink 在 HDFS 上写入产生空文件

apache-flink - Flink Kinesis Consumer 不存储最后成功处理的序列号

java - 使用 Java 在 flink 中聚合 JSON

java - 使用 Postgres 实现 Spring + Apache Flink 项目

java - 如何根据json中的特定键将一个数据流中的接收器添加到不同的路径?