Apache Flink:设置并行性的指南?

8

我希望得到一些简单的规则或指导方针,以确定operator或job并行度应设置为什么值。对我来说,它似乎应该是一个小于等于可用任务槽数量的数字?

例如,假设我有两台task manager机器,每台机器上有4个任务槽。假设在集群上没有其他作业正在运行,在像filter和map这样的操作中,我应将并行度设置为8吗?如果不是,什么数量是合理的?

如果您请求的并行度超过了任务槽数量会发生什么?在上面的例子中,如果我在操作中将并行度设置为12,会发生什么?我认为它会尽可能使用所有可用资源?

此外,似乎您不希望将并行度硬编码到源代码中,因为您希望在提交作业时大致了解可用任务槽的情况?您应该将所有运算符的并行度设置为大致相同的值还是不同的值,并且这个决定会受到什么的指导?

谢谢!

1个回答

5
通常不建议硬编码并行性,因为通常由操作负责决定为您的作业分配多少资源。此外,资源需求通常取决于您的SLA和实际工作量,因此与程序无关并应分别处理。
在使用Yarn或Mesos运行Flink 1.5.0时,您只需要决定作业的并行度,系统将确保启动足够的TaskManagers以及足够的插槽来执行您的作业。这完全是动态的,您甚至可以在运行时更改作业的并行度。
如果您正在使用独立模式,或者您的Yarn/Mesos集群没有足够的资源/插槽可用,则如果系统无法获取所需的插槽,则作业将失败,并显示NoResourceAvailableException

听起来是个好建议。但是那些数字示例呢?它们正确吗? - igx
你指的是哪些数字示例? - Till Rohrmann
1
他在询问:“例如,假设我有两台任务管理机器,每台机器有4个任务插槽。假设集群上没有运行其他作业,那么对于像过滤和映射这样的操作,我应该将并行度设置为8吗?...如果我将其设置为12会发生什么”等等。 - igx
理想情况下,您应将并行度设置为集群中的插槽数量。在批处理作业中,您也可以将并行度设置得更高,但这样做并不会带来太大的收益。 - Till Rohrmann
是的,当在Yarn或Mesos上部署时,Flink会动态请求TMs。 - Till Rohrmann
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接