我设置了一个由1 master and 3 workers
组成的集群。
如我们所知,在正常情况下,如果用户提交了一些作业,则作业将分配给三个工作人员执行。
但是,如果我要分配例如job id_1
到worker 1
和worker 2
,但没有worker 3
job id_2
到worker 1
,worker 2
和worker 3
job id_3
到worker 2
和worker 3
,但没有worker 1
Spark可以通过一些配置设置,调度或编写代码来将作业分配给指定的工作人员吗?
可以建议任何想法或方法。
最佳答案
您不应该这样做,因为它会使您的工作变慢,并会导致不必要的问题。
机器,您可以使用并行化版本创建
设置每个分区的首选位置。这将确保
将每个分区发送到对应的确定性行为
工作人员(假设推测性执行,并且延迟调度已启用
关闭)。
可以运行具有许多分区的虚拟Spark作业
返回所有工作程序的主机名。不是那样会尝试确保
(但不能保证)将在每个分区上至少安排一个分区
积极的 worker 。实际上,如果系统中还有其他作业正在运行,
那么这些虚拟任务可能不会在所有
worker 。没有一些外部机制很难解决这个问题
知道集群中的所有 worker 。
我从来没有尝试过这种方式来提交工作。
可能这是您问题Spark Reply的可能解决方案提示
通过Cluster Mode
关于hadoop - 控制Spark集群中作业或任务的分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41294320/