我设置了一个由1 master and 3 workers组成的集群。

如我们所知,在正常情况下,如果用户提交了一些作业,则作业将分配给三个工作人员执行。

但是,如果我要分配例如
job id_1worker 1worker 2,但没有worker 3job id_2worker 1worker 2worker 3job id_3worker 2worker 3,但没有worker 1
Spark可以通过一些配置设置,调度或编写代码来将作业分配给指定的工作人员吗?

可以建议任何想法或方法。

最佳答案

您不应该这样做,因为它会使您的工作变慢,并会导致不必要的问题。 hadoop - 控制Spark集群中作业或任务的分配-LMLPHP

  • 设置位置偏好!如果你知道所有 worker 的名字
    机器,您可以使用并行化版本创建
    设置每个分区的首选位置。这将确保
    将每个分区发送到对应的确定性行为
    工作人员(假设推测性执行,并且延迟调度已启用
    关闭)。
  • 要在不进行硬编码的情况下找出工作节点的名称,您可以
    可以运行具有许多分区的虚拟Spark作业
    返回所有工作程序的主机名。不是那样会尝试确保
    (但不能保证)将在每个分区上至少安排一个分区
    积极的 worker 。实际上,如果系统中还有其他作业正在运行,
    那么这些虚拟任务可能不会在所有
    worker 。没有一些外部机制很难解决这个问题
    知道集群中的所有 worker 。

  • 我从来没有尝试过这种方式来提交工作。

    可能这是您问题Spark Reply的可能解决方案提示

    通过Cluster Mode

    关于hadoop - 控制Spark集群中作业或任务的分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41294320/

    10-16 03:05