Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * http://www.apache.org/licenses/LICENSE-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 org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentMap; import javax.crypto.SecretKey; import org.apache.hadoop.classification.InterfaceAudience.LimitedPrivate; import org.apache.hadoop.security.token.Token; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.EventHandler; import org.apache.hadoop.yarn.security.AMRMTokenIdentifier; import org.apache.hadoop.yarn.security.client.ClientToAMTokenIdentifier; import org.apache.hadoop.yarn.server.resourcemanager.blacklist.BlacklistManager; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; /** * Interface to an Application Attempt in the Resource Manager. * A {@link RMApp} can have multiple app attempts based on * {@link YarnConfiguration#RM_AM_MAX_ATTEMPTS}. For specific * implementation take a look at {@link RMAppAttemptImpl}. */ public interface RMAppAttempt extends EventHandler<RMAppAttemptEvent> { /** * Get the application attempt id for this {@link RMAppAttempt}. * @return the {@link ApplicationAttemptId} for this RM attempt. */ ApplicationAttemptId getAppAttemptId(); /** * The state of the {@link RMAppAttempt}. * @return the state {@link RMAppAttemptState} of this {@link RMAppAttempt} */ RMAppAttemptState getAppAttemptState(); /** * The host on which the {@link RMAppAttempt} is running/ran on. * @return the host on which the {@link RMAppAttempt} ran/is running on. */ String getHost(); /** * The rpc port of the {@link RMAppAttempt}. * @return the rpc port of the {@link RMAppAttempt} to which the clients can connect * to. */ int getRpcPort(); /** * The url at which the status of the application attempt can be accessed. * @return the url at which the status of the attempt can be accessed. */ String getTrackingUrl(); /** * The original url at which the status of the application attempt can be * accessed. This url is not fronted by a proxy. This is only intended to be * used by the proxy. * @return the url at which the status of the attempt can be accessed and is * not fronted by a proxy. */ String getOriginalTrackingUrl(); /** * The base to be prepended to web URLs that are not relative, and the user * has been checked. * @return the base URL to be prepended to web URLs that are not relative. */ String getWebProxyBase(); /** * Diagnostics information for the application attempt. * @return diagnostics information for the application attempt. */ String getDiagnostics(); /** * Progress for the application attempt. * @return the progress for this {@link RMAppAttempt} */ float getProgress(); /** * The final status set by the AM. * @return the final status that is set by the AM when unregistering itself. Can return a null * if the AM has not unregistered itself. */ FinalApplicationStatus getFinalApplicationStatus(); /** * Return a list of the last set of finished containers, resetting the * finished containers to empty. * @return the list of just finished containers, re setting the finished containers. */ List<ContainerStatus> pullJustFinishedContainers(); /** * Returns a reference to the map of last set of finished containers to the * corresponding node. This does not reset the finished containers. * @return the list of just finished containers, this does not reset the * finished containers. */ ConcurrentMap<NodeId, List<ContainerStatus>> getJustFinishedContainersReference(); /** * Return the list of last set of finished containers. This does not reset * the finished containers. * @return the list of just finished containers */ List<ContainerStatus> getJustFinishedContainers(); /** * The map of conatiners per Node that are already sent to the AM. * @return map of per node list of finished container status sent to AM */ ConcurrentMap<NodeId, List<ContainerStatus>> getFinishedContainersSentToAMReference(); /** * The container on which the Application Master is running. * @return the {@link Container} on which the application master is running. */ Container getMasterContainer(); /** * The application submission context for this {@link RMAppAttempt}. * @return the application submission context for this Application. */ ApplicationSubmissionContext getSubmissionContext(); /** * The AMRMToken belonging to this app attempt * @return The AMRMToken belonging to this app attempt */ Token<AMRMTokenIdentifier> getAMRMToken(); /** * The master key for client-to-AM tokens for this app attempt. This is only * used for RMStateStore. Normal operation must invoke the secret manager to * get the key and not use the local key directly. * @return The master key for client-to-AM tokens for this app attempt */ @LimitedPrivate("RMStateStore") SecretKey getClientTokenMasterKey(); /** * Create a token for authenticating a client connection to the app attempt * @param clientName the name of the client requesting the token * @return the token or null if the attempt is not running */ Token<ClientToAMTokenIdentifier> createClientToken(String clientName); /** * Get application container and resource usage information. * @return an ApplicationResourceUsageReport object. */ ApplicationResourceUsageReport getApplicationResourceUsageReport(); /** * Get the {@link BlacklistManager} that manages blacklists for AM failures * @return the {@link BlacklistManager} that tracks AM failures. */ BlacklistManager getAMBlacklistManager(); /** * the start time of the application. * @return the start time of the application. */ long getStartTime(); /** * The current state of the {@link RMAppAttempt}. * * @return the current state {@link RMAppAttemptState} for this application * attempt. */ RMAppAttemptState getState(); /** * Create the external user-facing state of the attempt of ApplicationMaster * from the current state of the {@link RMAppAttempt}. * * @return the external user-facing state of the attempt ApplicationMaster. */ YarnApplicationAttemptState createApplicationAttemptState(); /** * Create the Application attempt report from the {@link RMAppAttempt} * * @return {@link ApplicationAttemptReport} */ ApplicationAttemptReport createApplicationAttemptReport(); /** * Return the flag which indicates whether the attempt failure should be * counted to attempt retry count. * <p> * There failure types should not be counted to attempt retry count: * <ul> * <li>preempted by the scheduler.</li> * <li> * hardware failures, such as NM failing, lost NM and NM disk errors. * </li> * <li>killed by RM because of RM restart or failover.</li> * </ul> */ boolean shouldCountTowardsMaxAttemptRetry(); /** * Get metrics from the {@link RMAppAttempt} * @return metrics */ RMAppAttemptMetrics getRMAppAttemptMetrics(); /** * the finish time of the application attempt. * @return the finish time of the application attempt. */ long getFinishTime(); /** * To capture Launch diagnostics of the app. * @param amLaunchDiagnostics */ void updateAMLaunchDiagnostics(String amLaunchDiagnostics); /** * @return Set of nodes which are blacklisted by the application */ Set<String> getBlacklistedNodes(); }