diff --git a/src/main/java/org/apache/hadoop/mapred/ResourcePolicy.java b/src/main/java/org/apache/hadoop/mapred/ResourcePolicy.java index e6b10ea..4ba891c 100644 --- a/src/main/java/org/apache/hadoop/mapred/ResourcePolicy.java +++ b/src/main/java/org/apache/hadoop/mapred/ResourcePolicy.java @@ -313,7 +313,7 @@ public void resourceOffers(SchedulerDriver schedulerDriver, scheduler.mesosTrackers.put(httpAddress, new MesosTracker(httpAddress, taskId, mapSlots, reduceSlots, scheduler)); - List jvmOpts = Arrays.asList( + List defaultJvmOpts = Arrays.asList( "-XX:+UseConcMarkSweepGC", "-XX:+CMSParallelRemarkEnabled", "-XX:+CMSClassUnloadingEnabled", @@ -330,6 +330,11 @@ public void resourceOffers(SchedulerDriver schedulerDriver, "-XX:CMSInitiatingOccupancyFraction=80" ); + String jvmOpts = scheduler.conf.get("mapred.mesos.executor.jvm.opts"); + if (jvmOpts == null) { + jvmOpts = StringUtils.join(" ", defaultJvmOpts); + } + // Set up the environment for running the TaskTracker. Protos.Environment.Builder envBuilder = Protos.Environment .newBuilder() @@ -337,7 +342,7 @@ public void resourceOffers(SchedulerDriver schedulerDriver, Protos.Environment.Variable.newBuilder() .setName("HADOOP_OPTS") .setValue( - StringUtils.join(" ", jvmOpts) + + jvmOpts + " -Xmx" + tasktrackerJVMHeap + "m" + " -XX:NewSize=" + tasktrackerJVMHeap / 3 + "m -XX:MaxNewSize=" + (int)Math.floor (tasktrackerJVMHeap * 0.6) + "m"