You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by va...@apache.org on 2018/08/28 17:33:45 UTC
spark git commit: [SPARK-23679][YARN] Setting RM_HA_URLS for
AmIpFilter to avoid redirect failure in YARN mode
Repository: spark
Updated Branches:
refs/heads/master de46df549 -> 4e3f3cebe
[SPARK-23679][YARN] Setting RM_HA_URLS for AmIpFilter to avoid redirect failure in YARN mode
## What changes were proposed in this pull request?
YARN `AmIpFilter` adds a new parameter "RM_HA_URLS" to support RM HA, but Spark on YARN doesn't provide a such parameter, so it will be failed to redirect when running on RM HA. The detailed exception can be checked from JIRA. So here fixing this issue by adding "RM_HA_URLS" parameter.
## How was this patch tested?
Local verification.
Closes #22164 from jerryshao/SPARK-23679.
Authored-by: jerryshao <ss...@hortonworks.com>
Signed-off-by: Marcelo Vanzin <va...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/4e3f3ceb
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/4e3f3ceb
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/4e3f3ceb
Branch: refs/heads/master
Commit: 4e3f3cebe4cc6f47c264821a5ea92c32a4f1daa5
Parents: de46df5
Author: jerryshao <ss...@hortonworks.com>
Authored: Tue Aug 28 10:33:39 2018 -0700
Committer: Marcelo Vanzin <va...@cloudera.com>
Committed: Tue Aug 28 10:33:39 2018 -0700
----------------------------------------------------------------------
.../apache/spark/deploy/yarn/YarnRMClient.scala | 29 +++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/4e3f3ceb/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnRMClient.scala
----------------------------------------------------------------------
diff --git a/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnRMClient.scala b/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnRMClient.scala
index b59dcf1..05a7b1e 100644
--- a/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnRMClient.scala
+++ b/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnRMClient.scala
@@ -19,6 +19,7 @@ package org.apache.spark.deploy.yarn
import scala.collection.JavaConverters._
+import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.yarn.api.records._
import org.apache.hadoop.yarn.client.api.AMRMClient
import org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest
@@ -112,7 +113,16 @@ private[spark] class YarnRMClient extends Logging {
val proxies = WebAppUtils.getProxyHostsAndPortsForAmFilter(conf)
val hosts = proxies.asScala.map(_.split(":").head)
val uriBases = proxies.asScala.map { proxy => prefix + proxy + proxyBase }
- Map("PROXY_HOSTS" -> hosts.mkString(","), "PROXY_URI_BASES" -> uriBases.mkString(","))
+ val params =
+ Map("PROXY_HOSTS" -> hosts.mkString(","), "PROXY_URI_BASES" -> uriBases.mkString(","))
+
+ // Handles RM HA urls
+ val rmIds = conf.getStringCollection(YarnConfiguration.RM_HA_IDS).asScala
+ if (rmIds != null && rmIds.nonEmpty) {
+ params + ("RM_HA_URLS" -> rmIds.map(getUrlByRmId(conf, _)).mkString(","))
+ } else {
+ params
+ }
}
/** Returns the maximum number of attempts to register the AM. */
@@ -126,4 +136,21 @@ private[spark] class YarnRMClient extends Logging {
}
}
+ private def getUrlByRmId(conf: Configuration, rmId: String): String = {
+ val addressPropertyPrefix = if (YarnConfiguration.useHttps(conf)) {
+ YarnConfiguration.RM_WEBAPP_HTTPS_ADDRESS
+ } else {
+ YarnConfiguration.RM_WEBAPP_ADDRESS
+ }
+
+ val addressWithRmId = if (rmId == null || rmId.isEmpty) {
+ addressPropertyPrefix
+ } else if (rmId.startsWith(".")) {
+ throw new IllegalStateException(s"rmId $rmId should not already have '.' prepended.")
+ } else {
+ s"$addressPropertyPrefix.$rmId"
+ }
+
+ conf.get(addressWithRmId)
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org