[GEARPUMP-254] fix gearpump on Yarn
Be sure to do all of the following to help us incorporate your contribution
quickly and easily:
- [x] Make sure the commit message is formatted like:
`[GEARPUMP-<Jira issue #>] Meaningful description of pull request`
- [x] Make sure tests pass via `sbt clean test`.
- [x] Make sure old documentation affected by the pull request has been updated and new documentation added for new functionality.
Author: huafengw <fvunicorn@gmail.com>
Closes #128 from huafengw/fixYarn.
diff --git a/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/appmaster/Command.scala b/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/appmaster/Command.scala
index 711506a..fb482c4 100644
--- a/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/appmaster/Command.scala
+++ b/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/appmaster/Command.scala
@@ -48,7 +48,7 @@
: String = {
val exe = config.getString(java)
- s"$exe -cp ${classPath.mkString(":")}:" +
+ s"$exe -noverify -cp ${classPath.mkString(":")}:" +
"$CLASSPATH " + properties.mkString(" ") +
s" $mainClazz ${cliOpts.mkString(" ")} 2>&1 | /usr/bin/tee -a ${LOG_DIR_EXPANSION_VAR}/stderr"
}
diff --git a/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/client/LaunchCluster.scala b/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/client/LaunchCluster.scala
index 98cff61..267d588 100644
--- a/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/client/LaunchCluster.scala
+++ b/experiments/yarn/src/main/scala/org/apache/gearpump/experiments/yarn/client/LaunchCluster.scala
@@ -185,8 +185,8 @@
if (parsed.getBoolean(VERBOSE)) {
LogUtil.verboseLogToConsole()
}
- val userName = inputAkkaConf.getString(CONTAINER_USER)
- if (userName != null) {
+ if (inputAkkaConf.hasPath(CONTAINER_USER)) {
+ val userName = inputAkkaConf.getString(CONTAINER_USER)
System.setProperty("HADOOP_USER_NAME", userName)
}
diff --git a/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/appmaster/CommandSpec.scala b/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/appmaster/CommandSpec.scala
deleted file mode 100644
index c4c5a65..0000000
--- a/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/appmaster/CommandSpec.scala
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.gearpump.experiments.yarn.appmaster
-
-import com.typesafe.config.ConfigFactory
-import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers}
-
-import org.apache.gearpump.cluster.TestUtil
-import org.apache.gearpump.transport.HostPort
-
-class CommandSpec extends FlatSpec with Matchers with BeforeAndAfterAll {
- val config = ConfigFactory.parseString(
-
- """
- |
- |gearpump {
- | yarn {
- | client {
- | package -path = "/user/gearpump/gearpump.zip"
- | }
- |
- | applicationmaster {
- | ## Memory of YarnAppMaster
- | command = "$JAVA_HOME/bin/java -Xmx512m"
- | memory = "512"
- | vcores = "1"
- | queue = "default"
- | }
- |
- | master {
- | ## Memory of master daemon
- | command = "$JAVA_HOME/bin/java -Xmx512m"
- | memory = "512"
- | vcores = "1"
- | }
- |
- | worker {
- | ## memory of worker daemon
- | command = "$JAVA_HOME/bin/java -Xmx512m"
- | containers = "4"
- | ## This also contains all memory for child executors.
- | memory = "4096"
- | vcores = "1"
- | }
- | services {
- | enabled = true
- | }
- | }
- |}
- """.stripMargin).withFallback(TestUtil.DEFAULT_CONFIG)
-
- "MasterCommand" should "create correct command line" in {
- val version = "gearpump-0.1"
- val master = MasterCommand(config, version, HostPort("127.0.0.1", 8080))
-
- // scalastyle:off line.size.limit
- val expected = "$JAVA_HOME/bin/java -Xmx512m -cp conf:pack/gearpump-0.1/conf:pack/gearpump-0.1/lib/daemon/*:pack/gearpump-0.1/lib/*:$CLASSPATH -Dgearpump.cluster.masters.0=127.0.0.1:8080 -Dgearpump.hostname=127.0.0.1 -Dgearpump.master-resource-manager-container-id={{CONTAINER_ID}} -Dgearpump.home={{LOCAL_DIRS}}/{{CONTAINER_ID}}/pack/gearpump-0.1 -Dgearpump.log.daemon.dir=<LOG_DIR> -Dgearpump.log.application.dir=<LOG_DIR> org.apache.gearpump.cluster.main.Master -ip 127.0.0.1 -port 8080 2>&1 | /usr/bin/tee -a <LOG_DIR>/stderr"
- // scalastyle:on line.size.limit
- assert(master.get == expected)
- }
-
- "WorkerCommand" should "create correct command line" in {
- val version = "gearpump-0.1"
- val worker = WorkerCommand(config, version, HostPort("127.0.0.1", 8080), "worker-machine")
- // scalastyle:off line.size.limit
- val expected = "$JAVA_HOME/bin/java -Xmx512m -cp conf:pack/gearpump-0.1/conf:pack/gearpump-0.1/lib/daemon/*:pack/gearpump-0.1/lib/*:$CLASSPATH -Dgearpump.cluster.masters.0=127.0.0.1:8080 -Dgearpump.log.daemon.dir=<LOG_DIR> -Dgearpump.worker-resource-manager-container-id={{CONTAINER_ID}} -Dgearpump.home={{LOCAL_DIRS}}/{{CONTAINER_ID}}/pack/gearpump-0.1 -Dgearpump.log.application.dir=<LOG_DIR> -Dgearpump.hostname=worker-machine org.apache.gearpump.cluster.main.Worker 2>&1 | /usr/bin/tee -a <LOG_DIR>/stderr"
- // scalastyle:on line.size.limit
- assert(worker.get == expected)
- }
-
- "AppMasterCommand" should "create correct command line" in {
- val version = "gearpump-0.1"
- val appmaster = AppMasterCommand(config, version, Array("arg1", "arg2", "arg3"))
- // scalastyle:off line.size.limit
- val expected = "$JAVA_HOME/bin/java -Xmx512m -cp conf:pack/gearpump-0.1/conf:pack/gearpump-0.1/dashboard:pack/gearpump-0.1/lib/*:pack/gearpump-0.1/lib/daemon/*:pack/gearpump-0.1/lib/services/*:pack/gearpump-0.1/lib/yarn/*:$CLASSPATH -Dgearpump.home={{LOCAL_DIRS}}/{{CONTAINER_ID}}/pack/gearpump-0.1 -Dgearpump.binary-version-with-scala-version=gearpump-0.1 -Dgearpump.log.daemon.dir=<LOG_DIR> -Dgearpump.log.application.dir=<LOG_DIR> -Dgearpump.hostname={{NM_HOST}} org.apache.gearpump.experiments.yarn.appmaster.YarnAppMaster arg1 arg2 arg3 2>&1 | /usr/bin/tee -a <LOG_DIR>/stderr"
- // scalastyle:on line.size.limit
- assert(appmaster.get == expected)
- }
-}
\ No newline at end of file
diff --git a/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/client/LaunchClusterSpec.scala b/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/client/LaunchClusterSpec.scala
index c0a4ee2..3f2f9cb 100644
--- a/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/client/LaunchClusterSpec.scala
+++ b/experiments/yarn/src/test/scala/org/apache/gearpump/experiments/yarn/client/LaunchClusterSpec.scala
@@ -186,7 +186,7 @@
// val workerResources = ArgumentCaptor.forClass(classOf[List[Resource]])
// scalastyle:off line.size.limit
- val expectedCommand = "$JAVA_HOME/bin/java -Xmx512m -cp conf:pack/gearpump-0.2/conf:pack/gearpump-0.2/dashboard:pack/gearpump-0.2/lib/*:pack/gearpump-0.2/lib/daemon/*:pack/gearpump-0.2/lib/services/*:pack/gearpump-0.2/lib/yarn/*:$CLASSPATH -Dgearpump.home={{LOCAL_DIRS}}/{{CONTAINER_ID}}/pack/gearpump-0.2 -Dgearpump.binary-version-with-scala-version=gearpump-0.2 -Dgearpump.log.daemon.dir=<LOG_DIR> -Dgearpump.log.application.dir=<LOG_DIR> -Dgearpump.hostname={{NM_HOST}} org.apache.gearpump.experiments.yarn.appmaster.YarnAppMaster -conf /root/.gearpump_application_0_0000/conf/ -package gearpump.zip 2>&1 | /usr/bin/tee -a <LOG_DIR>/stderr"
+ val expectedCommand = "$JAVA_HOME/bin/java -Xmx512m -noverify -cp conf:pack/gearpump-0.2/conf:pack/gearpump-0.2/dashboard:pack/gearpump-0.2/lib/*:pack/gearpump-0.2/lib/daemon/*:pack/gearpump-0.2/lib/services/*:pack/gearpump-0.2/lib/yarn/*:$CLASSPATH -Dgearpump.home={{LOCAL_DIRS}}/{{CONTAINER_ID}}/pack/gearpump-0.2 -Dgearpump.binary-version-with-scala-version=gearpump-0.2 -Dgearpump.log.daemon.dir=<LOG_DIR> -Dgearpump.log.application.dir=<LOG_DIR> -Dgearpump.hostname={{NM_HOST}} org.apache.gearpump.experiments.yarn.appmaster.YarnAppMaster -conf /root/.gearpump_application_0_0000/conf/ -package gearpump.zip 2>&1 | /usr/bin/tee -a <LOG_DIR>/stderr"
// scalastyle:on line.size.limit
verify(yarnClient).submit("gearpump", appId, expectedCommand,
Resource.newInstance(512, 1), "default",
diff --git a/project/BuildExperiments.scala b/project/BuildExperiments.scala
index 3bebf22..550b407 100644
--- a/project/BuildExperiments.scala
+++ b/project/BuildExperiments.scala
@@ -115,6 +115,6 @@
id = "gearpump-experimental-cgroup",
base = file("experiments/cgroup"),
settings = commonSettings ++ noPublish)
- .dependsOn (core % "test->test; compile->compile")
+ .dependsOn (core % "provided")
.disablePlugins(sbtassembly.AssemblyPlugin)
}
\ No newline at end of file
diff --git a/project/BuildGearpump.scala b/project/BuildGearpump.scala
index 793d903..f0c9517 100644
--- a/project/BuildGearpump.scala
+++ b/project/BuildGearpump.scala
@@ -221,7 +221,7 @@
"org.apache.hadoop" % "hadoop-common" % hadoopVersion
)
)
- ).dependsOn(core % "compile->compile").disablePlugins(sbtassembly.AssemblyPlugin)
+ ).dependsOn(core % "provided").disablePlugins(sbtassembly.AssemblyPlugin)
private def changeShadedDeps(toExclude: Set[String], toInclude: List[xml.Node],
node: xml.Node): xml.Node = {