Skip to content

Commit c961788

Browse files
committed
Merge pull request #198 from johnyu0520/master
changing communication of azkaban properties WORKFLOW_LINK, JOB_LINK,…
2 parents 62a187a + ff2009d commit c961788

File tree

3 files changed

+45
-10
lines changed

3 files changed

+45
-10
lines changed

plugins/jobtype/src/azkaban/jobtype/HadoopJobUtils.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.regex.Matcher;
3030
import java.util.regex.Pattern;
3131

32+
import org.apache.hadoop.conf.Configuration;
3233
import org.apache.hadoop.yarn.api.records.ApplicationId;
3334
import org.apache.hadoop.yarn.client.api.YarnClient;
3435
import org.apache.hadoop.yarn.conf.YarnConfiguration;
@@ -441,4 +442,24 @@ public static String javaOptStringFromAzkabanProps(Props props, String key) {
441442
}
442443
return String.format("-D%s=%s", key, value);
443444
}
445+
446+
/**
447+
* <pre>
448+
* constructions a javaOpts string based on the Props, and the key given, will return
449+
* String.format("-D%s=%s", key, value);
450+
* </pre>
451+
*
452+
* @param conf
453+
* @param key
454+
* @return will return String.format("-D%s=%s", key, value). Throws RuntimeException if props not
455+
* present
456+
*/
457+
public static String javaOptStringFromHadoopConfiguration(Configuration conf, String key) {
458+
String value = conf.get(key);
459+
if (value == null) {
460+
throw new RuntimeException(String.format("Cannot find property [%s], in Hadoop configuration: [%s]",
461+
key, value));
462+
}
463+
return String.format("-D%s=%s", key, value);
464+
}
444465
}

plugins/jobtype/src/azkaban/jobtype/HadoopSecureSparkWrapper.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
import azkaban.security.commons.HadoopSecurityManager;
2828
import azkaban.utils.Props;
2929

30+
import static azkaban.flow.CommonJobProperties.ATTEMPT_LINK;
31+
import static azkaban.flow.CommonJobProperties.EXECUTION_LINK;
32+
import static azkaban.flow.CommonJobProperties.JOB_LINK;
33+
import static azkaban.flow.CommonJobProperties.WORKFLOW_LINK;
34+
3035
/**
3136
* <pre>
3237
* A Spark wrapper (more specifically a spark-submit wrapper) that works with Azkaban.
@@ -70,14 +75,14 @@ public static void main(final String[] args) throws Exception {
7075
proxyUser.doAs(new PrivilegedExceptionAction<Void>() {
7176
@Override
7277
public Void run() throws Exception {
73-
runSpark(args);
78+
runSpark(args, conf);
7479
return null;
7580
}
7681
});
7782

7883
} else {
7984
logger.info("Not proxying to execute job. ");
80-
runSpark(args);
85+
runSpark(args, conf);
8186
}
8287
}
8388

@@ -86,7 +91,7 @@ public Void run() throws Exception {
8691
*
8792
* @param args
8893
*/
89-
private static void runSpark(String[] args) {
94+
private static void runSpark(String[] args, Configuration conf) {
9095

9196
if (args.length == 0) {
9297
throw new RuntimeException("SparkSubmit cannot run with zero args");
@@ -102,6 +107,15 @@ private static void runSpark(String[] args) {
102107

103108
final String[] newArgs = concat.toString().split(SparkJobArg.delimiter);
104109
logger.info("newArgs: " + Arrays.toString(newArgs));
110+
111+
StringBuilder driverJavaOptions = new StringBuilder(newArgs[1]);
112+
String[] requiredJavaOpts = { WORKFLOW_LINK, JOB_LINK, EXECUTION_LINK, ATTEMPT_LINK };
113+
for (int i = 0; i < requiredJavaOpts.length; i++) {
114+
driverJavaOptions.append(" ").append(HadoopJobUtils.javaOptStringFromHadoopConfiguration(conf,
115+
requiredJavaOpts[i]));
116+
}
117+
newArgs[1] = driverJavaOptions.toString();
118+
logger.info("newArgs2: " + Arrays.toString(newArgs));
105119

106120
org.apache.spark.deploy.SparkSubmit$.MODULE$.main(newArgs);
107121
}

plugins/jobtype/src/azkaban/jobtype/HadoopSparkJob.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,13 +196,13 @@ static String testableGetMainArguments(Props jobProps, String workingDir, Logger
196196
// special case handling for DRIVER_JAVA_OPTIONS
197197
argList.add(SparkJobArg.DRIVER_JAVA_OPTIONS.sparkParamName);
198198
StringBuilder driverJavaOptions = new StringBuilder();
199-
String[] requiredJavaOpts = { WORKFLOW_LINK, JOB_LINK, EXECUTION_LINK, ATTEMPT_LINK };
200-
driverJavaOptions.append(HadoopJobUtils.javaOptStringFromAzkabanProps(jobProps,
201-
requiredJavaOpts[0]));
202-
for (int i = 1; i < requiredJavaOpts.length; i++) {
203-
driverJavaOptions.append(" "
204-
+ HadoopJobUtils.javaOptStringFromAzkabanProps(jobProps, requiredJavaOpts[i]));
205-
}
199+
// String[] requiredJavaOpts = { WORKFLOW_LINK, JOB_LINK, EXECUTION_LINK, ATTEMPT_LINK };
200+
// driverJavaOptions.append(HadoopJobUtils.javaOptStringFromAzkabanProps(jobProps,
201+
// requiredJavaOpts[0]));
202+
// for (int i = 1; i < requiredJavaOpts.length; i++) {
203+
// driverJavaOptions.append(" "
204+
// + HadoopJobUtils.javaOptStringFromAzkabanProps(jobProps, requiredJavaOpts[i]));
205+
// }
206206
if (jobProps.containsKey(SparkJobArg.DRIVER_JAVA_OPTIONS.azPropName)) {
207207
driverJavaOptions
208208
.append(" " + jobProps.getString(SparkJobArg.DRIVER_JAVA_OPTIONS.azPropName));

0 commit comments

Comments
 (0)