aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/running-on-yarn.md9
-rw-r--r--yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala14
2 files changed, 23 insertions, 0 deletions
diff --git a/docs/running-on-yarn.md b/docs/running-on-yarn.md
index 6d77db6a32..677c000044 100644
--- a/docs/running-on-yarn.md
+++ b/docs/running-on-yarn.md
@@ -306,6 +306,15 @@ If you need a reference to the proper location to put log files in the YARN so t
</td>
</tr>
<tr>
+ <td><code>spark.yarn.am.attemptFailuresValidityInterval</code></td>
+ <td>(none)</td>
+ <td>
+ Defines the validity interval for AM failure tracking.
+ If the AM has been running for at least the defined interval, the AM failure count will be reset.
+ This feature is not enabled if not configured, and only supported in Hadoop 2.6+.
+ </td>
+</tr>
+<tr>
<td><code>spark.yarn.submit.waitAppCompletion</code></td>
<td><code>true</code></td>
<td>
diff --git a/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala b/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
index 1fbd18aa46..d25d830fd4 100644
--- a/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
+++ b/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
@@ -208,6 +208,20 @@ private[spark] class Client(
case None => logDebug("spark.yarn.maxAppAttempts is not set. " +
"Cluster's default value will be used.")
}
+
+ if (sparkConf.contains("spark.yarn.am.attemptFailuresValidityInterval")) {
+ try {
+ val interval = sparkConf.getTimeAsMs("spark.yarn.am.attemptFailuresValidityInterval")
+ val method = appContext.getClass().getMethod(
+ "setAttemptFailuresValidityInterval", classOf[Long])
+ method.invoke(appContext, interval: java.lang.Long)
+ } catch {
+ case e: NoSuchMethodException =>
+ logWarning("Ignoring spark.yarn.am.attemptFailuresValidityInterval because the version " +
+ "of YARN does not support it")
+ }
+ }
+
val capability = Records.newRecord(classOf[Resource])
capability.setMemory(args.amMemory + amMemoryOverhead)
capability.setVirtualCores(args.amCores)