/** * 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(); }