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

org.apache.tez.dag.app.rm.AMSchedulerEventTALaunchRequest Maven / Gradle / Ivy

There is a newer version: 0.10.4
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.tez.dag.app.rm;

import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.tez.dag.api.TaskLocationHint;
import org.apache.tez.dag.app.ContainerContext;
import org.apache.tez.dag.app.dag.TaskAttempt;
import org.apache.tez.dag.records.TezTaskAttemptID;
import org.apache.tez.runtime.api.impl.TaskSpec;

public class AMSchedulerEventTALaunchRequest extends AMSchedulerEvent {

  // TODO Get rid of remoteTask from here. Can be forgotten after it has been assigned.
  //.... Maybe have the Container talk to the TaskAttempt to pull in the remote task.

  private final TezTaskAttemptID attemptId;
  private final int priority;
  private final Resource capability;
  private final TaskLocationHint locationHint;
  private final ContainerContext containerContext;

  private final TaskSpec remoteTaskSpec;
  private final TaskAttempt taskAttempt;

  private final int launcherId;
  private final int taskCommId;

  public AMSchedulerEventTALaunchRequest(TezTaskAttemptID attemptId,
      Resource capability,
      TaskSpec remoteTaskSpec, TaskAttempt ta,
      TaskLocationHint locationHint, int priority,
      ContainerContext containerContext,
      int schedulerId, int launcherId, int taskCommId) {
    super(AMSchedulerEventType.S_TA_LAUNCH_REQUEST, schedulerId);
    this.attemptId = attemptId;
    this.capability = capability;
    this.remoteTaskSpec = remoteTaskSpec;
    this.taskAttempt = ta;
    this.locationHint = locationHint;
    this.priority = priority;
    this.containerContext = containerContext;
    this.launcherId = launcherId;
    this.taskCommId = taskCommId;
  }

  public TezTaskAttemptID getAttemptID() {
    return this.attemptId;
  }

  public Resource getCapability() {
    return capability;
  }
  
  public TaskLocationHint getLocationHint() {
    return locationHint;
  }

  public int getPriority() {
    return priority;
  }

  public TaskSpec getRemoteTaskSpec() {
    return remoteTaskSpec;
  }

  public TaskAttempt getTaskAttempt() {
    return this.taskAttempt;
  }

  public ContainerContext getContainerContext() {
    return this.containerContext;
  }

  public int getLauncherId() {
    return launcherId;
  }

  public int getTaskCommId() {
    return taskCommId;
  }

  // Parameter replacement: @taskid@ will not be usable
  // ProfileTaskRange not available along with ContainerReUse

  /*Requirements to determine a container request.
   * + Data-local + Rack-local hosts.
   * + Resource capability
   * + Env - mapreduce.map.env / mapreduce.reduce.env can change. M/R log level.
   * - JobConf and JobJar file - same location.
   * - Distributed Cache - identical for map / reduce tasks at the moment.
   * - Credentials, tokens etc are identical.
   * + Command - dependent on map / reduce java.opts
   */
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy