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

org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest Maven / Gradle / Ivy

There is a newer version: 3.4.0
Show newest version
/**
 * 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.api.protocolrecords;

import java.util.Collections;
import java.util.List;

import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest;
import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.api.records.SchedulingRequest;
import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
import org.apache.hadoop.yarn.util.Records;

/**
 * 

The core request sent by the ApplicationMaster to the * ResourceManager to obtain resources in the cluster.

* *

The request includes: *

    *
  • A response id to track duplicate responses.
  • *
  • Progress information.
  • *
  • * A list of {@link ResourceRequest} to inform the * ResourceManager about the application's * resource requirements. *
  • *
  • * A list of unused {@link Container} which are being returned. *
  • *
  • * A list of {@link UpdateContainerRequest} to inform * the ResourceManager about the change in * requirements of running containers. *
  • *
* * @see ApplicationMasterProtocol#allocate(AllocateRequest) */ @Public @Stable public abstract class AllocateRequest { @Public @Stable public static AllocateRequest newInstance(int responseID, float appProgress, List resourceAsk, List containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest) { return AllocateRequest.newBuilder().responseId(responseID) .progress(appProgress).askList(resourceAsk) .releaseList(containersToBeReleased) .resourceBlacklistRequest(resourceBlacklistRequest).build(); } @Public @Unstable public static AllocateRequest newInstance(int responseID, float appProgress, List resourceAsk, List containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest, String trackingUrl) { return AllocateRequest.newBuilder().responseId(responseID) .progress(appProgress).askList(resourceAsk) .releaseList(containersToBeReleased) .resourceBlacklistRequest(resourceBlacklistRequest) .trackingUrl(trackingUrl).build(); } @Public @Unstable public static AllocateRequest newInstance(int responseID, float appProgress, List resourceAsk, List containersToBeReleased, List updateRequests, ResourceBlacklistRequest resourceBlacklistRequest) { return AllocateRequest.newBuilder().responseId(responseID) .progress(appProgress).askList(resourceAsk) .releaseList(containersToBeReleased) .resourceBlacklistRequest(resourceBlacklistRequest) .updateRequests(updateRequests) .build(); } /** * Get the response id used to track duplicate responses. * @return response id */ @Public @Stable public abstract int getResponseId(); /** * Set the response id used to track duplicate responses. * @param id response id */ @Public @Stable public abstract void setResponseId(int id); /** * Get the current progress of application. * @return current progress of application */ @Public @Stable public abstract float getProgress(); /** * Set the current progress of application * @param progress current progress of application */ @Public @Stable public abstract void setProgress(float progress); /** * Get the list of ResourceRequest to update the * ResourceManager about the application's resource requirements. * @return the list of ResourceRequest * @see ResourceRequest */ @Public @Stable public abstract List getAskList(); /** * Set list of ResourceRequest to update the * ResourceManager about the application's resource requirements. * @param resourceRequests list of ResourceRequest to update the * ResourceManager about the application's * resource requirements * @see ResourceRequest */ @Public @Stable public abstract void setAskList(List resourceRequests); /** * Get the list of ContainerId of containers being * released by the ApplicationMaster. * @return list of ContainerId of containers being * released by the ApplicationMaster */ @Public @Stable public abstract List getReleaseList(); /** * Set the list of ContainerId of containers being * released by the ApplicationMaster * @param releaseContainers list of ContainerId of * containers being released by the * ApplicationMaster */ @Public @Stable public abstract void setReleaseList(List releaseContainers); /** * Get the ResourceBlacklistRequest being sent by the * ApplicationMaster. * @return the ResourceBlacklistRequest being sent by the * ApplicationMaster * @see ResourceBlacklistRequest */ @Public @Stable public abstract ResourceBlacklistRequest getResourceBlacklistRequest(); /** * Set the ResourceBlacklistRequest to inform the * ResourceManager about the blacklist additions and removals * per the ApplicationMaster. * * @param resourceBlacklistRequest the ResourceBlacklistRequest * to inform the ResourceManager about * the blacklist additions and removals * per the ApplicationMaster * @see ResourceBlacklistRequest */ @Public @Stable public abstract void setResourceBlacklistRequest( ResourceBlacklistRequest resourceBlacklistRequest); /** * Get the list of container update requests being sent by the * ApplicationMaster. * @return list of {@link UpdateContainerRequest} * being sent by the * ApplicationMaster. */ @Public @Unstable public abstract List getUpdateRequests(); /** * Set the list of container update requests to inform the * ResourceManager about the containers that need to be * updated. * @param updateRequests list of UpdateContainerRequest for * containers to be updated */ @Public @Unstable public abstract void setUpdateRequests( List updateRequests); /** * Get the list of Scheduling requests being sent by the * ApplicationMaster. * @return list of {@link SchedulingRequest} being sent by the * ApplicationMaster. */ @Public @Unstable public List getSchedulingRequests() { return Collections.emptyList(); } /** * Set the list of Scheduling requests to inform the * ResourceManager about the application's resource requirements * (potentially including allocation tags and placement constraints). * @param schedulingRequests list of {@link SchedulingRequest} to update * the ResourceManager about the application's resource * requirements. */ @Public @Unstable public void setSchedulingRequests( List schedulingRequests) { } /** * Get the tracking url update for this heartbeat. * @return tracking url to update this application with */ @Public @Unstable public abstract String getTrackingUrl(); /** * Set the new tracking url for this application. * @param trackingUrl the new tracking url */ @Public @Unstable public abstract void setTrackingUrl(String trackingUrl); @Public @Unstable public static AllocateRequestBuilder newBuilder() { return new AllocateRequestBuilder(); } /** * Class to construct instances of {@link AllocateRequest} with specific * options. */ @Public @Stable public static final class AllocateRequestBuilder { private AllocateRequest allocateRequest = Records.newRecord(AllocateRequest.class); private AllocateRequestBuilder() { } /** * Set the responseId of the request. * @see AllocateRequest#setResponseId(int) * @param responseId responseId of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder responseId(int responseId) { allocateRequest.setResponseId(responseId); return this; } /** * Set the progress of the request. * @see AllocateRequest#setProgress(float) * @param progress progress of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder progress(float progress) { allocateRequest.setProgress(progress); return this; } /** * Set the askList of the request. * @see AllocateRequest#setAskList(List) * @param askList askList of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder askList(List askList) { allocateRequest.setAskList(askList); return this; } /** * Set the releaseList of the request. * @see AllocateRequest#setReleaseList(List) * @param releaseList releaseList of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder releaseList(List releaseList) { allocateRequest.setReleaseList(releaseList); return this; } /** * Set the resourceBlacklistRequest of the request. * @see AllocateRequest#setResourceBlacklistRequest( * ResourceBlacklistRequest) * @param resourceBlacklistRequest * resourceBlacklistRequest of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder resourceBlacklistRequest( ResourceBlacklistRequest resourceBlacklistRequest) { allocateRequest.setResourceBlacklistRequest(resourceBlacklistRequest); return this; } /** * Set the updateRequests of the request. * @see AllocateRequest#setUpdateRequests(List) * @param updateRequests updateRequests of the request * @return {@link AllocateRequestBuilder} */ @Public @Unstable public AllocateRequestBuilder updateRequests( List updateRequests) { allocateRequest.setUpdateRequests(updateRequests); return this; } /** * Set the schedulingRequests of the request. * @see AllocateRequest#setSchedulingRequests(List) * @param schedulingRequests SchedulingRequest of the request * @return {@link AllocateRequestBuilder} */ @Public @Unstable public AllocateRequestBuilder schedulingRequests( List schedulingRequests) { allocateRequest.setSchedulingRequests(schedulingRequests); return this; } /** * Set the trackingUrl of the request. * @see AllocateRequest#setTrackingUrl(String) * @param trackingUrl new tracking url * @return {@link AllocateRequestBuilder} */ @Public @Unstable public AllocateRequestBuilder trackingUrl(String trackingUrl) { allocateRequest.setTrackingUrl(trackingUrl); return this; } /** * Return generated {@link AllocateRequest} object. * @return {@link AllocateRequest} */ @Public @Stable public AllocateRequest build() { return allocateRequest; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy