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/client/ServiceClient.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/client/ServiceClient.java index 5e038a5e8b2..3032248cec1 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/client/ServiceClient.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/client/ServiceClient.java @@ -1248,12 +1248,26 @@ private void addCredentials(ContainerLaunchContext amContext, Service app) throw new IOException( "Can't get Master Kerberos principal for the RM to use as renewer"); } - final org.apache.hadoop.security.token.Token[] tokens = - fs.getFileSystem().addDelegationTokens(tokenRenewer, allCreds); - if (LOG.isDebugEnabled()) { - if (tokens != null && tokens.length != 0) { - for (Token token : tokens) { - LOG.debug("Got DT: " + token); + + Set fsSet = new HashSet(); + fsSet.add(fs.getFileSystem()); + Collection nameNodes = org.apache.hadoop.util.StringUtils + .getStringCollection(YarnServiceConf.get( + YarnServiceConf.YARN_SERVICE_HDFS_SERVERS, null, + app.getConfiguration(), getConfig())); + for (String nameNode : nameNodes) { + Path path = new Path(nameNode); + fsSet.add(path.getFileSystem(getConfig())); + } + + for (FileSystem fs : fsSet) { + final org.apache.hadoop.security.token.Token[] tokens = + fs.addDelegationTokens(tokenRenewer, allCreds); + if (LOG.isDebugEnabled()) { + if (tokens != null && tokens.length != 0) { + for (Token token : tokens) { + LOG.debug("Got DT: " + token); + } } } } 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/conf/YarnServiceConf.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/conf/YarnServiceConf.java index bbc178c7ce1..4fa2de993f9 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/conf/YarnServiceConf.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/conf/YarnServiceConf.java @@ -59,6 +59,9 @@ public static final String ROLLING_LOG_INCLUSION_PATTERN = "yarn.service.rolling-log.include-pattern"; public static final String ROLLING_LOG_EXCLUSION_PATTERN = "yarn.service.rolling-log.exclude-pattern"; + public static final String YARN_SERVICE_HDFS_SERVERS = YARN_SERVICE_PREFIX + + "hdfs-servers"; + public static final String YARN_SERVICES_SYSTEM_SERVICE_DIRECTORY = YARN_SERVICE_PREFIX + "system-service.dir";