[REEF-1831] Setting FileSytemUrl for YarnConfiguration used in FileSystem
* Inject FileSystemUrl in YarnConfigurationConstructor
* Set FileSystemUrl for FileSystem in YarnConfigurationCOnstructor
* Bind FileSystemUrl to driver configuration
JIRA: [REEF-1831](https://issues.apache.org/jira/browse/REEF-1831)
This closes #1332
diff --git a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
index f536bd3..fcf03ba 100644
--- a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
+++ b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
@@ -277,7 +277,7 @@
if (!yarnSubmission.getFileSystemUrl().equalsIgnoreCase(FileSystemUrl.DEFAULT_VALUE)) {
LOG.log(Level.INFO, "getFileSystemUrl: {0}", yarnSubmission.getFileSystemUrl());
} else {
- LOG.log(Level.INFO, "FileSystemUrl is not set");
+ LOG.log(Level.INFO, "FileSystemUrl is not set, use default from the environment.");
}
final List<String> launchCommandPrefix = new ArrayList<String>() {{
@@ -288,6 +288,7 @@
.bindImplementation(RuntimeClasspathProvider.class, YarnClasspathProvider.class)
.bindConstructor(org.apache.hadoop.yarn.conf.YarnConfiguration.class, YarnConfigurationConstructor.class)
.bindNamedParameter(JobSubmissionDirectoryPrefix.class, yarnSubmission.getJobSubmissionDirectoryPrefix())
+ .bindNamedParameter(FileSystemUrl.class, yarnSubmission.getFileSystemUrl())
.bindList(DriverLaunchCommandPrefix.class, launchCommandPrefix)
.build();
final YarnJobSubmissionClient client = Tang.Factory.getTang().newInjector(yarnJobSubmissionClientConfig)
diff --git a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java
index f89afa0..de8d0b1 100644
--- a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java
+++ b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnContainerManager.java
@@ -43,7 +43,6 @@
import org.apache.reef.runtime.common.driver.resourcemanager.RuntimeStatusEventImpl;
import org.apache.reef.runtime.common.files.REEFFileNames;
import org.apache.reef.runtime.yarn.client.unmanaged.YarnProxyUser;
-import org.apache.reef.runtime.yarn.driver.parameters.FileSystemUrl;
import org.apache.reef.runtime.yarn.driver.parameters.JobSubmissionDirectory;
import org.apache.reef.runtime.yarn.driver.parameters.YarnHeartbeatPeriod;
import org.apache.reef.tang.InjectionFuture;
@@ -88,9 +87,7 @@
private final DriverStatusManager driverStatusManager;
private final String trackingUrl;
private final String amRegistrationHost;
-
private final String jobSubmissionDirectory;
- private final String fileSystemUrl;
private final REEFFileNames reefFileNames;
private final RackNameFormatter rackNameFormatter;
private final InjectionFuture<ProgressProvider> progressProvider;
@@ -99,7 +96,6 @@
private YarnContainerManager(
@Parameter(YarnHeartbeatPeriod.class) final int yarnRMHeartbeatPeriod,
@Parameter(JobSubmissionDirectory.class) final String jobSubmissionDirectory,
- @Parameter(FileSystemUrl.class) final String fileSystemUrl,
final YarnConfiguration yarnConf,
final YarnProxyUser yarnProxyUser,
final REEFEventHandlers reefEventHandlers,
@@ -130,14 +126,11 @@
this.nodeManager = new NMClientAsyncImpl(this);
this.jobSubmissionDirectory = jobSubmissionDirectory;
- this.fileSystemUrl = fileSystemUrl;
this.reefFileNames = reefFileNames;
this.progressProvider = progressProvider;
- LOG.log(Level.INFO, "Instantiated YarnContainerManager: {0} {1}, trackingUrl: {2}, fileSystemUrl: {3}, " +
- "jobSubmissionDirectory: {4}.",
- new Object[] {this.registration, this.yarnProxyUser, this.trackingUrl, this.fileSystemUrl,
- this.jobSubmissionDirectory});
+ LOG.log(Level.INFO, "Instantiated YarnContainerManager: {0} {1}, trackingUrl: {3}, jobSubmissionDirectory: {4}.",
+ new Object[] {this.registration, this.yarnProxyUser, this.trackingUrl, this.jobSubmissionDirectory});
}
/**
diff --git a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/util/YarnConfigurationConstructor.java b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/util/YarnConfigurationConstructor.java
index 1f318a7..a54b8e3 100644
--- a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/util/YarnConfigurationConstructor.java
+++ b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/util/YarnConfigurationConstructor.java
@@ -19,20 +19,35 @@
package org.apache.reef.runtime.yarn.util;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.reef.runtime.yarn.driver.parameters.FileSystemUrl;
import org.apache.reef.tang.ExternalConstructor;
+import org.apache.reef.tang.annotations.Parameter;
import javax.inject.Inject;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* An external constructor that creates YarnConfiguration instances.
*/
public final class YarnConfigurationConstructor implements ExternalConstructor<YarnConfiguration> {
+
+ private static final Logger LOG = Logger.getLogger(YarnConfigurationConstructor.class.getName());
+
+ private final String fileSystemUrl;
+
@Inject
- YarnConfigurationConstructor() {
+ YarnConfigurationConstructor(@Parameter(FileSystemUrl.class) final String fileSystemUrl) {
+ this.fileSystemUrl = fileSystemUrl;
}
@Override
public YarnConfiguration newInstance() {
- return new YarnConfiguration();
+ YarnConfiguration yarnConfiguration = new YarnConfiguration();
+ if (!fileSystemUrl.equals(FileSystemUrl.DEFAULT_VALUE)) {
+ yarnConfiguration.set("fs.defaultFS", fileSystemUrl);
+ LOG.log(Level.INFO, "Set fileSystemUrl in YarnConfigurationConstructor: {0}", fileSystemUrl);
+ }
+ return yarnConfiguration;
}
}