blob: 36eeeab90d0434b9e85ed39f89982a9e8089cd30 [file] [log] [blame]
/**
* 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.tools.rumen;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.JobID;
import org.apache.hadoop.mapreduce.TaskType;
import org.apache.hadoop.tools.rumen.Pre21JobHistoryConstants.Values;
/**
* {@link JobStory} represents the runtime information available for a
* completed Map-Reduce job.
*/
public interface JobStory {
/**
* Get the {@link JobConf} for the job.
* @return the <code>JobConf</code> for the job
*/
public JobConf getJobConf();
/**
* Get the job name.
* @return the job name
*/
public String getName();
/**
* Get the job ID
* @return the job ID
*/
public JobID getJobID();
/**
* Get the user who ran the job.
* @return the user who ran the job
*/
public String getUser();
/**
* Get the job submission time.
* @return the job submission time
*/
public long getSubmissionTime();
/**
* Get the number of maps in the {@link JobStory}.
* @return the number of maps in the <code>Job</code>
*/
public int getNumberMaps();
/**
* Get the number of reduce in the {@link JobStory}.
* @return the number of reduces in the <code>Job</code>
*/
public int getNumberReduces();
/**
* Get the input splits for the job.
* @return the input splits for the job
*/
public InputSplit[] getInputSplits();
/**
* Get {@link TaskInfo} for a given task.
* @param taskType {@link TaskType} of the task
* @param taskNumber Partition number of the task
* @return the <code>TaskInfo</code> for the given task
*/
public TaskInfo getTaskInfo(TaskType taskType, int taskNumber);
/**
* Get {@link TaskAttemptInfo} for a given task-attempt, without regard to
* impact of locality (e.g. not needed to make scheduling decisions).
* @param taskType {@link TaskType} of the task-attempt
* @param taskNumber Partition number of the task-attempt
* @param taskAttemptNumber Attempt number of the task
* @return the <code>TaskAttemptInfo</code> for the given task-attempt
*/
public TaskAttemptInfo getTaskAttemptInfo(TaskType taskType,
int taskNumber,
int taskAttemptNumber);
/**
* Get {@link TaskAttemptInfo} for a given task-attempt, considering impact
* of locality.
* @param taskNumber Partition number of the task-attempt
* @param taskAttemptNumber Attempt number of the task
* @param locality Data locality of the task as scheduled in simulation
* @return the <code>TaskAttemptInfo</code> for the given task-attempt
*/
public TaskAttemptInfo
getMapTaskAttemptInfoAdjusted(int taskNumber,
int taskAttemptNumber,
int locality);
/**
* Get the outcome of the job execution.
* @return The outcome of the job execution.
*/
public Values getOutcome();
/**
* Get the queue where the job is submitted.
* @return the queue where the job is submitted.
*/
public String getQueueName();
}