【问题标题】:Control the distribution of job or task in Spark cluster控制 Spark 集群中作业或任务的分布
【发布时间】:2016-12-23 13:53:11
【问题描述】:

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

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

但是,如果我想分配诸如

job id_1worker 1worker 2,但没有 worker 3

job id_2worker 1worker 2worker 3

job id_3worker 2worker 3,但没有 worker 1

Spark 能否通过一些配置设置、调度或编写代码将作业分配给指定的工作人员来做到这一点?

可以推荐任何想法或方法。

【问题讨论】:

  • 必须指定工作节点有点违背容错的目的

标签: hadoop apache-spark


【解决方案1】:

您不应该这样做,因为它会使您的工作变慢并产生不必要的问题。

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

我从来没有像你尝试提交工作那样尝试过这种事情。

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

通过Cluster Mode

【讨论】:

  • 感谢您的回复。如果我知道所有工人的名字,你能详细解释一下如何设置位置偏好吗?
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
相关资源
最近更新 更多