diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ServiceApiConstants.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ServiceApiConstants.java index 5f76f19..b78d690 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ServiceApiConstants.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ServiceApiConstants.java @@ -36,6 +36,8 @@ String SERVICE_NAME_LC = $("SERVICE_NAME.lc"); + String USER = $("USER"); + // Constants for component String COMPONENT_NAME = $("COMPONENT_NAME"); @@ -47,4 +49,8 @@ String COMPONENT_ID = $("COMPONENT_ID"); String CONTAINER_ID = $("CONTAINER_ID"); + + // Constants for default cluster ZK + String CLUSTER_ZK_QUORUM = $("CLUSTER_ZK_QUORUM"); + } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java index 723b975..081688b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java @@ -25,7 +25,7 @@ JSON("json"), PROPERTIES("properties"), XML("xml"), - HADOOP_XML("hadoop-xml"), + HADOOP_XML("hadoop_xml"), ENV("env"), TEMPLATE("template"), YAML("yaml"), diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java index d384585..3f6dbcb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java @@ -436,7 +436,7 @@ private void resolvePlainTemplateAndSaveOnHdfs(FileSystem fs, return; } // substitute tokens - substituteStrWithTokens(content, tokensForSubstitution); + content = substituteStrWithTokens(content, tokensForSubstitution); try (OutputStream output = fs.create(remoteFile)) { org.apache.commons.io.IOUtils.write(content, output); @@ -461,8 +461,6 @@ private void resolvePlainTemplateAndSaveOnHdfs(FileSystem fs, tokens.put("${NN_URI}", nnuri); tokens.put("${NN_HOST}", URI.create(nnuri).getHost()); } - tokens.put("${ZK_HOST}", appConf.getProperty(OptionKeys.ZOOKEEPER_HOSTS)); - tokens.put("${DEFAULT_ZK_PATH}", appConf.getProperty(OptionKeys.ZOOKEEPER_PATH)); tokens.put(SERVICE_NAME_LC, clusterName.toLowerCase()); tokens.put(SERVICE_NAME, clusterName); tokens.put(COMPONENT_NAME, roleInstance.role); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java index 93a481c..fd1fb38 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java @@ -89,7 +89,7 @@ public void buildContainerLaunchContext(ContainerLauncher launcher, Map tokensForSubstitution = providerUtils .getStandardTokenMap(application.getConfiguration(), roleInstance, application.getName()); - + tokensForSubstitution.putAll(providerRole.appState.globalTokens); // Set the environment variables in launcher launcher.putEnv(SliderUtils .buildEnvMap(component.getConfiguration(), tokensForSubstitution)); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java index 9f7b4a8..3de19df 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java @@ -24,11 +24,11 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import org.apache.commons.io.IOUtils; -import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.metrics2.lib.MutableGaugeInt; +import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerStatus; @@ -42,6 +42,7 @@ import org.apache.hadoop.yarn.util.resource.Resources; import org.apache.slider.api.ClusterNode; import org.apache.slider.api.InternalKeys; +import org.apache.slider.api.ServiceApiConstants; import org.apache.slider.api.StatusKeys; import org.apache.slider.api.proto.Messages; import org.apache.slider.api.proto.Messages.ComponentCountProto; @@ -89,6 +90,8 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import static org.apache.hadoop.registry.client.api.RegistryConstants.DEFAULT_ZK_REGISTRY_ROOT; +import static org.apache.hadoop.registry.client.api.RegistryConstants.KEY_REGISTRY_ZK_ROOT; import static org.apache.slider.api.ResourceKeys.*; import static org.apache.slider.api.StateValues.*; import static org.apache.slider.api.resource.ApplicationState.STARTED; @@ -193,14 +196,13 @@ private int containerMinMemory; private RoleHistory roleHistory; - private Configuration publishedProviderConf; private long startTimeThreshold; private int failureThreshold = 10; private int nodeFailureThreshold = 3; private String logServerURL = ""; - + public Map globalTokens = new HashMap<>(); /** * Selector of containers to release; application wide. */ @@ -335,6 +337,11 @@ public synchronized void buildInstance(AppStateBindingInfo binding) DEFAULT_CONTAINER_FAILURE_THRESHOLD); nodeFailureThreshold = conf.getPropertyInt(NODE_FAILURE_THRESHOLD, DEFAULT_NODE_FAILURE_THRESHOLD); + globalTokens.put(ServiceApiConstants.CLUSTER_ZK_QUORUM, + binding.serviceConfig + .getTrimmed(KEY_REGISTRY_ZK_ROOT, DEFAULT_ZK_REGISTRY_ROOT)); + globalTokens.put(ServiceApiConstants.USER, + UserGroupInformation.getCurrentUser().getShortUserName()); //build the initial component list int priority = 1;