【问题标题】:apache spark: local[K] master URL - job gets stuckapache spark: local[K] master URL - 作业卡住
【发布时间】:2013-12-09 19:45:53
【问题描述】:

我正在使用 apache spark 0.8.0 处理一个大数据文件,并对RDD 执行一些基本的.map.reduceByKey 操作。

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

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 来构建和运行应用程序

【问题讨论】:

  • 我在 Spark 1.4.1 上看到了同样的问题。 @Vijay 你解决了吗?
  • 我发现分配的进程 (k) 多于机器上的逻辑核心数通常会导致此问题。尝试给出较小的数字。 @YohanLiyanage
  • 谢谢@Vijay。我会调查的。

标签: scala sbt apache-spark


【解决方案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

【讨论】:

  • 我看到我的reduceByKey 在任何任务完成之前挂起 (1.0.0) 所以对我来说规范'exec' 将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多