7

我正在使用 apache spark 0.8.0 来处理一个大数据文件.map.reduceByKeyRDD.

由于我使用的是具有多个处理器的单台机器,因此我local[8]在创建时在主 URL 字段中提到SparkContext

val sc = new SparkContext("local[8]", "Tower-Aggs", SPARK_HOME ) 

但是每当我提到多个处理器时,这项工作就会随机卡住(暂停/停止)。卡住的地方没有确定的,只是随机的。有时它根本不会发生。我不确定在那之后它是否会继续,但它会卡住很长时间,之后我中止了工作。

但是,当我只是使用local代替时local[8],作业可以无缝运行而不会卡住。

val sc = new SparkContext("local", "Tower-Aggs", SPARK_HOME )

我无法理解问题出在哪里。

我正在使用Scala 2.9.3sbt构建和运行应用程序

4

1 回答 1

1

我正在使用 spark 1.0.0 并遇到了同样的问题:如果一个函数无限期地传递给一个转换或动作等待/循环,那么 spark 不会唤醒它或默认终止/重试它,在这种情况下你可以杀死任务。

但是,最近的一项功能(推测任务)允许 spark 启动复制任务,如果一些任务花费的时间比其对等任务的平均运行时间长得多。这可以在以下配置属性中启用和配置:

  • spark.speculation false 如果设置为“true”,则执行任务的推测执行。这意味着如果一个或多个任务在一个阶段运行缓慢,它们将被重新启动。

  • spark.speculation.interval 100 Spark 检查要推测的任务的频率,以毫秒为单位。

  • spark.speculation.quantile 0.75 在为特定阶段启用推测之前必须完成的任务百分比。

  • spark.speculation.multiplier 1.5 一个任务比考虑推测的中值慢多少倍。

(来源:http ://spark.apache.org/docs/latest/configuration.html )

于 2014-06-09T03:34:07.533 回答