This is an automated email from the ASF dual-hosted git repository.

zihanli58 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 1ca3192a2 [GOBBLIN-1914] Configurable Gobblin Application Master class 
for Yarn (#3781)
1ca3192a2 is described below

commit 1ca3192a29a3fd45045ca5bcddbdf58763ae1f79
Author: Matthew Ho <[email protected]>
AuthorDate: Thu Sep 21 16:21:52 2023 -0700

    [GOBBLIN-1914] Configurable Gobblin Application Master class for Yarn 
(#3781)
    
    * [GOBBLIN-1914] Configurable Gobblin Application Master class for Yarn
    
    * Configurable logs
---
 .../gobblin/yarn/GobblinYarnAppLauncher.java       | 23 ++++++++++++++++------
 .../gobblin/yarn/GobblinYarnConfigurationKeys.java |  3 +++
 .../gobblin/yarn/GobblinYarnAppLauncherTest.java   |  3 +++
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
index 48ac89479..391b160fd 100644
--- 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
+++ 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
@@ -801,23 +801,34 @@ public class GobblinYarnAppLauncher {
 
   @VisibleForTesting
   protected String buildApplicationMasterCommand(String applicationId, int 
memoryMbs) {
-    String appMasterClassName = GobblinApplicationMaster.class.getSimpleName();
+    Class appMasterClass;
+    try {
+       String appMasterClassName = ConfigUtils.getString(
+          config, GobblinYarnConfigurationKeys.APP_MASTER_CLASS, 
GobblinYarnConfigurationKeys.DEFAULT_APP_MASTER_CLASS);
+       appMasterClass = Class.forName(appMasterClassName);
+    } catch (ClassNotFoundException e) {
+      throw new RuntimeException(e);
+    }
+
+    String logFileName = ConfigUtils.getString(config,
+        GobblinYarnConfigurationKeys.APP_MASTER_LOG_FILE_NAME, 
appMasterClass.getSimpleName());
+
     return new StringBuilder()
         
.append(ApplicationConstants.Environment.JAVA_HOME.$()).append("/bin/java")
         .append(" -Xmx").append((int) (memoryMbs * this.jvmMemoryXmxRatio) - 
this.jvmMemoryOverheadMbs).append("M")
         .append(" 
-D").append(GobblinYarnConfigurationKeys.JVM_USER_TIMEZONE_CONFIG).append("=").append(this.containerTimezone)
         .append(" 
-D").append(GobblinYarnConfigurationKeys.GOBBLIN_YARN_CONTAINER_LOG_DIR_NAME).append("=").append(ApplicationConstants.LOG_DIR_EXPANSION_VAR)
-        .append(" 
-D").append(GobblinYarnConfigurationKeys.GOBBLIN_YARN_CONTAINER_LOG_FILE_NAME).append("=").append(appMasterClassName).append(".").append(ApplicationConstants.STDOUT)
+        .append(" 
-D").append(GobblinYarnConfigurationKeys.GOBBLIN_YARN_CONTAINER_LOG_FILE_NAME).append("=").append(logFileName).append(".").append(ApplicationConstants.STDOUT)
         .append(" ").append(JvmUtils.formatJvmArguments(this.appMasterJvmArgs))
-        .append(" ").append(GobblinApplicationMaster.class.getName())
+        .append(" ").append(appMasterClass.getName())
         .append(" 
--").append(GobblinClusterConfigurationKeys.APPLICATION_NAME_OPTION_NAME)
         .append(" ").append(this.applicationName)
         .append(" 
--").append(GobblinClusterConfigurationKeys.APPLICATION_ID_OPTION_NAME)
         .append(" ").append(applicationId)
         .append(" 
1>").append(ApplicationConstants.LOG_DIR_EXPANSION_VAR).append(File.separator).append(
-            appMasterClassName).append(".").append(ApplicationConstants.STDOUT)
+            logFileName).append(".").append(ApplicationConstants.STDOUT)
         .append(" 
2>").append(ApplicationConstants.LOG_DIR_EXPANSION_VAR).append(File.separator).append(
-            appMasterClassName).append(".").append(ApplicationConstants.STDERR)
+            logFileName).append(".").append(ApplicationConstants.STDERR)
         .toString();
   }
 
@@ -1071,4 +1082,4 @@ public class GobblinYarnAppLauncher {
 
     gobblinYarnAppLauncher.launch();
   }
-}
\ No newline at end of file
+}
diff --git 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
index 7088dfa99..f1cc4ada1 100644
--- 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
+++ 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
@@ -30,6 +30,9 @@ public class GobblinYarnConfigurationKeys {
   public static final String GOBBLIN_YARN_PREFIX = "gobblin.yarn.";
 
   // General Gobblin Yarn application configuration properties.
+  public static final String APP_MASTER_CLASS = GOBBLIN_YARN_PREFIX + 
"app.master.class";
+  public static final String DEFAULT_APP_MASTER_CLASS = 
GobblinApplicationMaster.class.getName();
+  public static final String APP_MASTER_LOG_FILE_NAME = GOBBLIN_YARN_PREFIX + 
"app.master.log.file.name";
   public static final String APPLICATION_NAME_KEY = GOBBLIN_YARN_PREFIX + 
"app.name";
   public static final String APP_QUEUE_KEY = GOBBLIN_YARN_PREFIX + "app.queue";
   public static final String APP_REPORT_INTERVAL_MINUTES_KEY = 
GOBBLIN_YARN_PREFIX + "app.report.interval.minutes";
diff --git 
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
 
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
index 65e9dc269..756e88241 100644
--- 
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
+++ 
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
@@ -229,6 +229,9 @@ public class GobblinYarnAppLauncherTest implements 
HelixMessageTestBase {
 
     // 41 is from 64 * 0.8 - 10
     Assert.assertTrue(command.contains("-Xmx41"));
+    
Assert.assertTrue(command.contains("org.apache.gobblin.yarn.GobblinApplicationMaster"));
+    Assert.assertTrue(command.contains("GobblinApplicationMaster.stdout"));
+    Assert.assertTrue(command.contains("GobblinApplicationMaster.stderr"));
   }
 
   @Test

Reply via email to