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 46bfa7a4564..b6d957e655a 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 @@ -1424,12 +1424,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 58fe70b4f9b..fba9e460deb 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 @@ -62,6 +62,9 @@ public static final String YARN_SERVICE_CLASSPATH = "yarn.service.classpath"; + 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";