考虑具有一些节点的Flink集群,其中每个节点具有多核处理器.如果我们根据内核数量和相等的内存份额配置插槽数量,Apache Flink如何在节点和空闲插槽之间分配任务?他们受到公平对待吗?
当我们根据节点上可用的核心数配置任务槽时,有没有办法使Flink能够平等地处理插槽?
例如,假设我们平均分区数据并在分区上运行相同的任务.Flink使用来自某些节点的所有插槽,同时一些节点完全免费.具有较少CPU核心数的节点输出结果的速度比具有该过程中涉及的更多CPU核心数的节点快得多.除此之外,这个加速比率与每个节点中使用的核心数量不成比例.换句话说,如果在一个节点中占用一个核心而在另一个节点中占用两个核心,相当地将每个核心视为一个时隙,每个时隙应该在几乎相同的时间内在同一任务上输出结果,而不管哪个节点他们属于.但是,这不是这种情况.
有了这个假设,我会说节点不会被平等对待.这又产生了与可用节点数量不成比例的结果.我们不能说增加插槽数量必然会降低时间成本.
我很感激Apache Flink社区的任何评论!
非常旧的线程,但有一个较新的线程可以回答当前版本的这个问题。
在 Flink 1.5 中,我们增加了资源弹性。这意味着 Flink 现在能够在 Yarn 或 Mesos 等集群管理框架上分配新容器。由于这些更改(也适用于独立模式),Flink 不再考虑一组固定的 TaskManager,因为如果需要,它将启动新容器(在独立模式下不起作用)。因此,系统很难做出关于将属于单个作业的槽分布到多个 TM 的任何决定。当您考虑到像您这样的某些工作可能会从这种策略中受益,而其他工作可能会从共同定位其插槽中受益时,事情就会变得更加困难。如果您想要对多个作业进行调度,而系统不完全了解这些作业,因为它们是按顺序提交的,那么情况会变得更加复杂。因此,Flink 目前假设槽请求可以由任何 TaskManager 来满足。
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |