Apache Spark - 控制映射函数的调度

Apache Spark - Controlling scheduling of map functions

我有一个 3 节点集群,我正在尝试制定一个基准。用例是,对于一个应用程序,所有映射函数都需要 运行 在特定机器上,所有 reduce 函数都在另一台机器上。

Spark中有没有什么调度属性可以实现的

可能有一种非常 "bad" 的方法。

  1. 在 m/c A 上启动 master。开启推测执行。
  2. 在 m/c B 上开始工作。
  3. 开始申请。做地图。确保你具体化(通过调用 rdd.count())以便它实际执行。把你的指标。
  4. 暂停执行。
  5. 在 m/c C
  6. 上开始工作

运行 特定 m/c 上的减速器更棘手。因为你要求的是m/cB活着(为了数据)但不参与执行。

  1. 写一个函数,它会故意减慢 m/c B. 这个函数也会处理聚合,这样你就可以在你的 reduceByKey 中使用这个函数。
  2. 恢复执行。这次因为m/cB慢,Scheduler会被迫在m/cC启动相应的reduce任务。

(Reynold Xin 在 2014 Spark summit 期间展示了此技术来解决掉队者,但这里我们使用它来创建掉队者:))

如前所述,这违背了 Spark 的目的。你甚至不应该尝试这样做。提示:Spark != Hadoop MR :)