Example #1
0
  private void addRMDelegationToken(final String renewer, final Credentials credentials)
      throws IOException, YarnException {
    // Get the ResourceManager delegation rmToken
    final org.apache.hadoop.yarn.api.records.Token rmDelegationToken =
        yarnClient.getRMDelegationToken(new Text(renewer));

    Token<RMDelegationTokenIdentifier> token;
    // TODO: Use the utility method getRMDelegationTokenService in ClientRMProxy to remove the
    // separate handling of
    // TODO: HA and non-HA cases when hadoop dependency is changed to hadoop 2.4 or above
    if (conf.getBoolean(RM_HA_ENABLED, DEFAULT_RM_HA_ENABLED)) {
      LOG.info("Yarn Resource Manager HA is enabled");
      token = getRMHAToken(rmDelegationToken);
    } else {
      LOG.info("Yarn Resource Manager HA is not enabled");
      InetSocketAddress rmAddress =
          conf.getSocketAddr(
              YarnConfiguration.RM_ADDRESS,
              YarnConfiguration.DEFAULT_RM_ADDRESS,
              YarnConfiguration.DEFAULT_RM_PORT);

      token = ConverterUtils.convertFromYarn(rmDelegationToken, rmAddress);
    }

    LOG.info("RM dt {}", token);

    credentials.addToken(token.getService(), token);
  }
Example #2
0
 private static String getTimelineDelegationTokenRenewer(Configuration conf)
     throws IOException, YarnException {
   // Parse the RM daemon user if it exists in the config
   String rmPrincipal = conf.get(YarnConfiguration.RM_PRINCIPAL);
   String renewer = null;
   if (rmPrincipal != null && rmPrincipal.length() > 0) {
     String rmHost =
         conf.getSocketAddr(
                 YarnConfiguration.RM_ADDRESS,
                 YarnConfiguration.DEFAULT_RM_ADDRESS,
                 YarnConfiguration.DEFAULT_RM_PORT)
             .getHostName();
     renewer = SecurityUtil.getServerPrincipal(rmPrincipal, rmHost);
   }
   return renewer;
 }
Example #3
0
  @Override
  public synchronized void serviceInit(Configuration conf) throws Exception {
    if (rmContext.isHAEnabled()) {
      autoFailoverEnabled = HAUtil.isAutomaticFailoverEnabled(conf);
    }

    masterServiceAddress =
        conf.getSocketAddr(
            YarnConfiguration.RM_ADMIN_ADDRESS,
            YarnConfiguration.DEFAULT_RM_ADMIN_ADDRESS,
            YarnConfiguration.DEFAULT_RM_ADMIN_PORT);
    adminAcl =
        new AccessControlList(
            conf.get(YarnConfiguration.YARN_ADMIN_ACL, YarnConfiguration.DEFAULT_YARN_ADMIN_ACL));
    rmId = conf.get(YarnConfiguration.RM_HA_ID);
    super.serviceInit(conf);
  }
  @Before
  public void setup() throws InterruptedException, IOException {
    conf = createConfiguration();
    rpc = YarnRPC.create(conf);
    rmAddress =
        conf.getSocketAddr(
            YarnConfiguration.RM_ADDRESS,
            YarnConfiguration.DEFAULT_RM_ADDRESS,
            YarnConfiguration.DEFAULT_RM_PORT);

    AccessControlList adminACL = new AccessControlList("");
    conf.set(YarnConfiguration.YARN_ADMIN_ACL, adminACL.getAclString());

    resourceManager =
        new MockRM(conf) {
          protected ClientRMService createClientRMService() {
            return new ClientRMService(
                getRMContext(),
                this.scheduler,
                this.rmAppManager,
                this.applicationACLsManager,
                this.queueACLsManager,
                getRMContext().getRMDelegationTokenSecretManager());
          };

          @Override
          protected void doSecureLogin() throws IOException {}
        };
    new Thread() {
      public void run() {
        resourceManager.start();
      };
    }.start();
    int waitCount = 0;
    while (resourceManager.getServiceState() == STATE.INITED && waitCount++ < 60) {
      LOG.info("Waiting for RM to start...");
      Thread.sleep(1500);
    }
    if (resourceManager.getServiceState() != STATE.STARTED) {
      // RM could have failed.
      throw new IOException(
          "ResourceManager failed to start. Final state is " + resourceManager.getServiceState());
    }
  }
Example #5
0
 public static String getRMWebAppHostAndPort(Configuration conf) {
   InetSocketAddress address =
       conf.getSocketAddr(
           YarnConfiguration.RM_WEBAPP_ADDRESS,
           YarnConfiguration.DEFAULT_RM_WEBAPP_ADDRESS,
           YarnConfiguration.DEFAULT_RM_WEBAPP_PORT);
   address = NetUtils.getConnectAddress(address);
   StringBuffer sb = new StringBuffer();
   InetAddress resolved = address.getAddress();
   if (resolved == null || resolved.isAnyLocalAddress() || resolved.isLoopbackAddress()) {
     String lh = address.getHostName();
     try {
       lh = InetAddress.getLocalHost().getCanonicalHostName();
     } catch (UnknownHostException e) {
       // Ignore and fallback.
     }
     sb.append(lh);
   } else {
     sb.append(address.getHostName());
   }
   sb.append(":").append(address.getPort());
   return sb.toString();
 }
Example #6
0
 public static InetSocketAddress getMasterAddress(Configuration conf) {
   return conf.getSocketAddr(
       YarnConfiguration.RM_ADDRESS,
       YarnConfiguration.DEFAULT_RM_ADDRESS,
       YarnConfiguration.DEFAULT_RM_PORT);
 }
Example #7
0
 public static InetSocketAddress getRmSchedulerAddress(Configuration conf) {
   return conf.getSocketAddr(
       YarnConfiguration.RM_SCHEDULER_ADDRESS,
       YarnConfiguration.DEFAULT_RM_SCHEDULER_ADDRESS,
       YarnConfiguration.DEFAULT_RM_SCHEDULER_PORT);
 }