Repository: incubator-myriad
Updated Branches:
  refs/heads/master 1daad6324 -> f1bc1d5ee


Made JVM URI, Path and JAVA_LIBRARY_PATH configurable for executors
JIRA:
  [Myriad-196] https://issues.apache.org/jira/browse/MYRIAD-196
Pull Request:
  Closes #65
Author:
  Mohit Soni <mohitsoni1...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-myriad/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-myriad/commit/f1bc1d5e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-myriad/tree/f1bc1d5e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-myriad/diff/f1bc1d5e

Branch: refs/heads/master
Commit: f1bc1d5ee5cbf0a7e93c7922760fb4b2a973e519
Parents: 1daad63
Author: Mohit Soni <mohitsoni1...@gmail.com>
Authored: Sun May 1 00:52:54 2016 -0700
Committer: darinj <dar...@apache.org>
Committed: Mon May 9 14:46:19 2016 -0400

----------------------------------------------------------------------
 .../MyriadExecutorConfiguration.java            | 14 ++++++++++
 .../apache/myriad/scheduler/TaskFactory.java    | 27 +++++++++-----------
 .../main/resources/myriad-config-default.yml    |  3 +++
 3 files changed, 29 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/f1bc1d5e/myriad-scheduler/src/main/java/org/apache/myriad/configuration/MyriadExecutorConfiguration.java
----------------------------------------------------------------------
diff --git 
a/myriad-scheduler/src/main/java/org/apache/myriad/configuration/MyriadExecutorConfiguration.java
 
b/myriad-scheduler/src/main/java/org/apache/myriad/configuration/MyriadExecutorConfiguration.java
index 4479725..6afc086 100644
--- 
a/myriad-scheduler/src/main/java/org/apache/myriad/configuration/MyriadExecutorConfiguration.java
+++ 
b/myriad-scheduler/src/main/java/org/apache/myriad/configuration/MyriadExecutorConfiguration.java
@@ -44,6 +44,16 @@ public class MyriadExecutorConfiguration {
   @JsonSerialize(using = OptionalSerializerString.class)
   private String nodeManagerUri;
 
+  /**
+   * Download URL for JRE.
+   * Ex: jvmUri: http://www.apache.org/myriad/jre-1.8.99.tar.gz
+   * If provided, Mesos fetcher will be used to download and extract it
+   * inside sandbox.
+   */
+  @JsonProperty
+  @JsonSerialize(using = OptionalSerializerString.class)
+  private String jvmUri;
+
   public Optional<Double> getJvmMaxMemoryMB() {
     return Optional.fromNullable(jvmMaxMemoryMB);
   }
@@ -55,4 +65,8 @@ public class MyriadExecutorConfiguration {
   public Optional<String> getNodeManagerUri() {
     return Optional.fromNullable(nodeManagerUri);
   }
+
+  public Optional<String> getJvmUri() {
+    return Optional.fromNullable(jvmUri);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/f1bc1d5e/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/TaskFactory.java
----------------------------------------------------------------------
diff --git 
a/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/TaskFactory.java 
b/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/TaskFactory.java
index 8412eba..ecf0276 100644
--- 
a/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/TaskFactory.java
+++ 
b/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/TaskFactory.java
@@ -20,22 +20,8 @@ package org.apache.myriad.scheduler;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Random;
-import javax.inject.Inject;
-import org.apache.mesos.Protos.CommandInfo;
+import org.apache.mesos.Protos.*;
 import org.apache.mesos.Protos.CommandInfo.URI;
-import org.apache.mesos.Protos.ExecutorID;
-import org.apache.mesos.Protos.ExecutorInfo;
-import org.apache.mesos.Protos.FrameworkID;
-import org.apache.mesos.Protos.Offer;
-import org.apache.mesos.Protos.Resource;
-import org.apache.mesos.Protos.TaskID;
-import org.apache.mesos.Protos.TaskInfo;
-import org.apache.mesos.Protos.Value;
 import org.apache.mesos.Protos.Value.Range;
 import org.apache.myriad.configuration.MyriadConfiguration;
 import org.apache.myriad.configuration.MyriadExecutorConfiguration;
@@ -43,6 +29,9 @@ import org.apache.myriad.state.NodeTask;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.inject.Inject;
+import java.util.*;
+
 
 /**
  * Creates Tasks based on mesos offers
@@ -137,6 +126,13 @@ public interface TaskFactory {
       CommandInfo.Builder commandInfo = CommandInfo.newBuilder();
       String cmd;
 
+      if (myriadExecutorConfiguration.getJvmUri().isPresent()) {
+        final String jvmRemoteUri = 
myriadExecutorConfiguration.getJvmUri().get();
+        LOGGER.info("Getting JRE distribution from:" + jvmRemoteUri);
+        URI jvmUri = 
URI.newBuilder().setValue(jvmRemoteUri).setExtract(true).build();
+        commandInfo.addUris(jvmUri);
+      }
+
       if (myriadExecutorConfiguration.getNodeManagerUri().isPresent()) {
         //Both FrameworkUser and FrameworkSuperuser to get all of the 
directory permissions correct.
         if (!(cfg.getFrameworkUser().isPresent() && 
cfg.getFrameworkSuperUser().isPresent())) {
@@ -166,6 +162,7 @@ public interface TaskFactory {
           commandInfo.setUser(cfg.getFrameworkUser().get());
         }
       }
+
       return commandInfo.build();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/f1bc1d5e/myriad-scheduler/src/main/resources/myriad-config-default.yml
----------------------------------------------------------------------
diff --git a/myriad-scheduler/src/main/resources/myriad-config-default.yml 
b/myriad-scheduler/src/main/resources/myriad-config-default.yml
index ed4bef9..a90de84 100644
--- a/myriad-scheduler/src/main/resources/myriad-config-default.yml
+++ b/myriad-scheduler/src/main/resources/myriad-config-default.yml
@@ -56,9 +56,12 @@ executor:
   #The following should be used for a remotely distributed URI, hdfs assumed 
but other URI types valid.
   #nodeManagerUri: hdfs://namenode:port/dist/hadoop-2.7.0.tar.gz
   #path: hdfs://namenode:port/dist/myriad-executor-runnable-0.1.0.jar
+  #jvmUri: https://downloads.mycompany.com/java/jre-7u76-linux-x64.tar.gz
 yarnEnvironment:
   YARN_HOME: /usr/local/hadoop
   #YARN_HOME: hadoop-2.7.0 #this should be relative if nodeManagerUri is set
   #JAVA_HOME: /usr/lib/jvm/java-default #System dependent, but sometimes 
necessary
+  #JAVA_HOME: jre1.7.0_76 # Path to JRE distribution, relative to sandbox 
directory
+  #JAVA_LIBRARY_PATH: /opt/mycompany/lib
 mesosAuthenticationPrincipal:
 mesosAuthenticationSecretFilename:

Reply via email to