diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/ServiceScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/ServiceScheduler.java index 6cf4e14..562d079 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/ServiceScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/ServiceScheduler.java @@ -392,16 +392,12 @@ private void initGlobalTokensForSubstitute(ServiceContext context) { // ZK globalTokens.put(ServiceApiConstants.CLUSTER_ZK_QUORUM, getConfig() .getTrimmed(KEY_REGISTRY_ZK_QUORUM, DEFAULT_REGISTRY_ZK_QUORUM)); - String user = null; - try { - user = UserGroupInformation.getCurrentUser().getShortUserName(); - } catch (IOException e) { - LOG.error("Failed to get user.", e); - } - globalTokens - .put(SERVICE_ZK_PATH, ServiceRegistryUtils.mkServiceHomePath(user, app.getName())); + String user = RegistryUtils.currentUser(); + globalTokens.put(SERVICE_ZK_PATH, + ServiceRegistryUtils.mkServiceHomePath(user, app.getName())); - globalTokens.put(ServiceApiConstants.USER, user); + // DNS name doesn't allow "_", replace it with "-" + globalTokens.put(ServiceApiConstants.USER, user.replace("_", "-")); String dnsDomain = getConfig().getTrimmed(KEY_DNS_DOMAIN); if (dnsDomain != null && !dnsDomain.isEmpty()) { globalTokens.put(ServiceApiConstants.DOMAIN, dnsDomain); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/provider/docker/DockerProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/provider/docker/DockerProviderService.java index 0741947..a8ad10c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/provider/docker/DockerProviderService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/provider/docker/DockerProviderService.java @@ -41,14 +41,16 @@ public void processArtifact(AbstractLauncher launcher, String domain = compInstance.getComponent().getScheduler().getConfig() .get(RegistryConstants.KEY_DNS_DOMAIN); String hostname; + // DNS name doesn't allow "_", replace it with "-" + String user = RegistryUtils.currentUser().replace("_", "-"); if (domain == null || domain.isEmpty()) { hostname = MessageFormat .format("{0}.{1}.{2}", compInstance.getCompInstanceName(), - service.getName(), RegistryUtils.currentUser()); + service.getName(), user); } else { hostname = MessageFormat .format("{0}.{1}.{2}.{3}", compInstance.getCompInstanceName(), - service.getName(), RegistryUtils.currentUser(), domain); + service.getName(), user, domain); } launcher.setDockerHostname(hostname); launcher.setRunPrivilegedContainer( diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/yarn-service/Configurations.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/yarn-service/Configurations.md index a6fd998..a7d9e03 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/yarn-service/Configurations.md +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/yarn-service/Configurations.md @@ -155,7 +155,7 @@ where `regionserver-0` is the actual component instance name assigned by the sys | Name | Description | | ------------ | ------------- | | SERVICE_NAME | name of the service defined by the user -| USER | user who submits the service | +| USER | user who submits the service. Note that user name which has "\_" will be converted to use "-", because the DNS name which embeds user name doesn't allow "\_". E.g. "bob_dev" will be converted to "bob-dev" | | DOMAIN | the domain name for the cluster | | COMPONENT_NAME | the name for a given component | | COMPONENT_INSTANCE_NAME | the name for a given component instance (i.e. container) |