/** * 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.mapred; import java.util.Random; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.TaskType; import org.apache.hadoop.mapreduce.lib.input.FileSplit; import org.apache.hadoop.tools.rumen.JobStory; import org.apache.hadoop.tools.rumen.MapTaskAttemptInfo; import org.apache.hadoop.tools.rumen.Pre21JobHistoryConstants; import org.apache.hadoop.tools.rumen.ReduceTaskAttemptInfo; import org.apache.hadoop.tools.rumen.TaskAttemptInfo; import org.apache.hadoop.tools.rumen.TaskInfo; /** * {@link JobStory} represents the runtime information available for a * completed Map-Reduce job. */ public class FakeJobs implements JobStory { String jobName ; long submissionTime = 0; int maps = 0; int reduces = 0; Random random = new Random(); public FakeJobs (String name, long submissionTime, int nmaps, int nreduces) { jobName = name; this.submissionTime = submissionTime; this.maps = nmaps; this.reduces = nreduces; } public String getName() { return jobName; } public org.apache.hadoop.mapreduce.JobID getJobID() { return null; } /** * Get the user who ran the job. * @return the user who ran the job */ public String getUser() { return "mumak"; } /** * Get the job submission time. * @return the job submission time */ public long getSubmissionTime(){ return submissionTime; } /** * Get the number of maps in the {@link JobStory}. * @return the number of maps in the <code>Job</code> */ public int getNumberMaps() { return maps; } /** * Get the number of reduce in the {@link JobStory}. * @return the number of reduces in the <code>Job</code> */ public int getNumberReduces() { return reduces; } /** * Get the input splits for the job. * @return the input splits for the job */ public InputSplit[] getInputSplits() { InputSplit[] retval = new InputSplit[getNumberMaps()]; FileSplit tmp = new FileSplit(new Path("/"), 0, 0, new String[0]); for (int i = 0; i < retval.length; ++i) { retval[i] = tmp; } return retval; } /** * 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) { return null; } /** * Get {@link TaskAttemptInfo} for a given task-attempt. * @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) { int bytesin = random.nextInt()%10000; int recsin = bytesin/10 ; int bytesout = (int)(bytesin*1.5); int recsout = bytesout/10 ; int maxMem = 1000000; long mapRunTime = 5678; long reduceShuffleTime = 0; long reduceSortTime = 0; long reduceRunTime = 1234; TaskInfo task = new TaskInfo(bytesin, recsin, bytesout, recsout, maxMem); TaskAttemptInfo tAInfo = null; if (taskType == TaskType.MAP) { tAInfo = new MapTaskAttemptInfo(TaskStatus.State.SUCCEEDED, task, mapRunTime); } else if (taskType == TaskType.REDUCE) { tAInfo = new ReduceTaskAttemptInfo(TaskStatus.State.SUCCEEDED, task, reduceShuffleTime, reduceSortTime, reduceRunTime); } else { throw new IllegalArgumentException("Unsupported TaskType "+taskType); } return tAInfo; } public JobConf getJobConf() { JobConf jobConf = new JobConf(); jobConf.setJobName(jobName); jobConf.setUser("mumak"); jobConf.setNumMapTasks(maps); jobConf.setNumReduceTasks(reduces); return jobConf; } @Override public TaskAttemptInfo getMapTaskAttemptInfoAdjusted(int taskNumber, int taskAttemptNumber, int locality) { return getTaskAttemptInfo(TaskType.MAP, taskNumber, taskAttemptNumber); } @Override public Pre21JobHistoryConstants.Values getOutcome() { return Pre21JobHistoryConstants.Values.SUCCESS; } }