All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tencent.angel.localcluster.LocalMaster Maven / Gradle / Ivy

There is a newer version: 3.2.0
Show newest version
/*
 * Tencent is pleased to support the open source community by making Angel available.
 *
 * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in 
 * compliance with the License. You may obtain a copy of the License at
 *
 * https://opensource.org/licenses/Apache-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 *
 */


package com.tencent.angel.localcluster;

import com.tencent.angel.conf.AngelConf;
import com.tencent.angel.master.AngelApplicationMaster;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.Credentials;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;

import java.io.IOException;

/**
 * Local Angel master. It startups the {@link AngelApplicationMaster} using a thread.
 */
public class LocalMaster extends Thread {
  private static final Log LOG = LogFactory.getLog(LocalMaster.class);

  /**
   * Angel Application master
   */
  private final AngelApplicationMaster appMaster;

  /**
   * Master attempt id
   */
  private final ApplicationAttemptId appAttemptId;

  /**
   * Create a new LocalMaster
   *
   * @param appAttemptId
   * @throws IllegalArgumentException
   * @throws IOException
   */
  public LocalMaster(ApplicationAttemptId appAttemptId)
    throws IllegalArgumentException, IOException {
    this.appAttemptId = appAttemptId;
    LocalClusterContext clusterContext = LocalClusterContext.get();
    Configuration conf = clusterContext.getConf();
    conf.setBoolean("fs.automatic.close", false);
    String appName = conf.get(AngelConf.ANGEL_JOB_NAME, "local-test");

    appMaster =
      new AngelApplicationMaster(conf, appName, appAttemptId, clusterContext.getContainerId(),
        clusterContext.getLocalHost(), clusterContext.getPort(), clusterContext.getHttpPort(),
        System.currentTimeMillis(), new Credentials());
  }

  @Override public void run() {
    try {
      appMaster.initAndStart();
    } catch (Exception e) {
      LOG.fatal("master start failed.", e);
      LocalClusterContext.get().getLocalCluster().stop();
    }
  }

  /**
   * Get Angel Application Master
   *
   * @return Angel Application Master
   */
  public AngelApplicationMaster getAppMaster() {
    return appMaster;
  }

  /**
   * Exit
   */
  public void exit() {
    appMaster.getAppContext().getApp().shouldRetry(false);
    appMaster.shutDownJob();
    interrupt();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy