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..dfe9808 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,14 +392,9 @@ 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); String dnsDomain = getConfig().getTrimmed(KEY_DNS_DOMAIN); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/binding/RegistryUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/binding/RegistryUtils.java index 858b6b1..cd2741c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/binding/RegistryUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/binding/RegistryUtils.java @@ -296,7 +296,9 @@ public static String getCurrentUsernameUnencoded(String env_hadoop_username) { */ public static String currentUser() { String shortUserName = currentUsernameUnencoded(); - return encodeForRegistry(shortUserName); + String encodedName = encodeForRegistry(shortUserName); + // DNS name doesn't allow "_", replace it with "-" + return encodedName.replace("_", "-"); } /** 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) |