From d4c6f9c308bb9606ab99bfb9f73d5766b72f9a49 Mon Sep 17 00:00:00 2001 From: Craig Macdonald Date: Fri, 28 Aug 2015 11:37:32 +0100 Subject: [PATCH] Fixes to make security work --- .../kitten/client/service/YarnClientFactory.java | 11 +++++++++-- .../kitten/client/service/YarnClientServiceImpl.java | 5 +++-- .../com/cloudera/kitten/MasterConnectionFactory.java | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientFactory.java b/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientFactory.java index 9d6fc6f..5e1ffcb 100644 --- a/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientFactory.java +++ b/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientFactory.java @@ -30,13 +30,20 @@ public class YarnClientFactory implements MasterConnectionFactory { private final Configuration conf; public YarnClientFactory(Configuration conf) { - this.conf = Preconditions.checkNotNull(conf); + conf = Preconditions.checkNotNull(conf); + this.conf = new YarnConfiguration(conf); + } + + @Override + public Configuration getConfig() + { + return this.conf; } @Override public YarnClient connect() { YarnClient client = YarnClient.createYarnClient(); - client.init(new YarnConfiguration(conf)); + client.init(conf); client.start(); return client; } diff --git a/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientServiceImpl.java b/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientServiceImpl.java index 7550648..906b77d 100644 --- a/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientServiceImpl.java +++ b/java/client/src/main/java/com/cloudera/kitten/client/service/YarnClientServiceImpl.java @@ -87,10 +87,10 @@ public YarnClientServiceImpl(YarnClientParameters parameters, protected void startUp() throws IOException { ByteBuffer serializedTokens = null; if (UserGroupInformation.isSecurityEnabled()) { - Configuration conf = yarnClient.getConfig(); + Configuration conf = this.yarnClientFactory.getConfig(); FileSystem fs = FileSystem.get(conf); Credentials credentials = new Credentials(); - String tokenRenewer = yarnClient.getConfig().get(YarnConfiguration.RM_PRINCIPAL); + String tokenRenewer = this.yarnClientFactory.getConfig().get(YarnConfiguration.RM_PRINCIPAL); if (tokenRenewer == null || tokenRenewer.length() == 0) { throw new IOException("Can't get Master Kerberos principal for the RM to use as renewer"); } @@ -120,6 +120,7 @@ protected void startUp() throws IOException { // Setup the container for the application master. ContainerLaunchParameters appMasterParams = parameters.getApplicationMasterParameters(applicationId); ContainerLaunchContext clc = clcFactory.create(appMasterParams); + LOG.debug("Master context: " + clc); appContext.setResource(clcFactory.createResource(appMasterParams)); appContext.setQueue(parameters.getQueue()); appContext.setPriority(clcFactory.createPriority(appMasterParams.getPriority())); diff --git a/java/common/src/main/java/com/cloudera/kitten/MasterConnectionFactory.java b/java/common/src/main/java/com/cloudera/kitten/MasterConnectionFactory.java index 3f7f316..8f68283 100644 --- a/java/common/src/main/java/com/cloudera/kitten/MasterConnectionFactory.java +++ b/java/common/src/main/java/com/cloudera/kitten/MasterConnectionFactory.java @@ -13,11 +13,12 @@ * License. */ package com.cloudera.kitten; - +import org.apache.hadoop.conf.Configuration; /** * An interface for handling the connection to one of the master YARN services, like the * ResourceManager. */ public interface MasterConnectionFactory { + public Configuration getConfig(); T connect(); }