Class SimpleExponentialTaskRuntimeEstimator
java.lang.Object
org.apache.hadoop.mapreduce.v2.app.speculate.SimpleExponentialTaskRuntimeEstimator
- All Implemented Interfaces:
TaskRuntimeEstimator
A task Runtime Estimator based on exponential smoothing.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected AppContextprotected final Map<Job,DataStatistics> protected final Map<Job,DataStatistics> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlongattemptEnrolledTime(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId attemptID) voidcontextualize(org.apache.hadoop.conf.Configuration conf, AppContext context) protected DataStatisticsdataStatisticsForTask(org.apache.hadoop.mapreduce.v2.api.records.TaskId taskID) voidenrollAttempt(TaskAttemptStatusUpdateEvent.TaskAttemptStatus status, long timestamp) longestimatedNewAttemptRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskId id) Estimates how long a new attempt on this task will take if we start one nowlongestimatedRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id) Estimate a task attempt's total runtime.booleanhasStagnatedProgress(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id, long timeStamp) Returns true if the estimator has no updates records for a threshold time window.longruntimeEstimateVariance(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id) Computes the width of the error band of our estimate of the task runtime as returned byTaskRuntimeEstimator.estimatedRuntime(TaskAttemptId)longthresholdRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskId taskID) Find a maximum reasonable execution wallclock time.voidupdateAttempt(TaskAttemptStatusUpdateEvent.TaskAttemptStatus status, long timestamp)
-
Field Details
-
context
-
startTimes
-
mapperStatistics
-
reducerStatistics
-
doneTasks
-
-
Constructor Details
-
SimpleExponentialTaskRuntimeEstimator
public SimpleExponentialTaskRuntimeEstimator()
-
-
Method Details
-
contextualize
- Specified by:
contextualizein interfaceTaskRuntimeEstimator
-
estimatedRuntime
public long estimatedRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id) Description copied from interface:TaskRuntimeEstimatorEstimate a task attempt's total runtime. Includes the time already elapsed.- Parameters:
id- theTaskAttemptIdof the attempt we are asking about- Returns:
- our best estimate of the attempt's runtime, or
-1if we don't have enough information yet to produce an estimate.
-
estimatedNewAttemptRuntime
public long estimatedNewAttemptRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskId id) Description copied from interface:TaskRuntimeEstimatorEstimates how long a new attempt on this task will take if we start one now- Specified by:
estimatedNewAttemptRuntimein interfaceTaskRuntimeEstimator- Parameters:
id- theTaskIdof the task we are asking about- Returns:
- our best estimate of a new attempt's runtime, or
-1if we don't have enough information yet to produce an estimate.
-
hasStagnatedProgress
public boolean hasStagnatedProgress(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id, long timeStamp) Description copied from interface:TaskRuntimeEstimatorReturns true if the estimator has no updates records for a threshold time window. This helps to identify task attempts that are stalled at the beginning of execution.- Parameters:
id- theTaskAttemptIdof the attempt we are asking abouttimeStamp- the time of the report we compare with- Returns:
- true if the task attempt has no progress for a given time window
-
runtimeEstimateVariance
public long runtimeEstimateVariance(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId id) Description copied from interface:TaskRuntimeEstimatorComputes the width of the error band of our estimate of the task runtime as returned byTaskRuntimeEstimator.estimatedRuntime(TaskAttemptId)- Parameters:
id- theTaskAttemptIdof the attempt we are asking about- Returns:
- our best estimate of the attempt's runtime, or
-1if we don't have enough information yet to produce an estimate.
-
updateAttempt
- Specified by:
updateAttemptin interfaceTaskRuntimeEstimator
-
enrollAttempt
- Specified by:
enrollAttemptin interfaceTaskRuntimeEstimator
-
attemptEnrolledTime
public long attemptEnrolledTime(org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId attemptID) - Specified by:
attemptEnrolledTimein interfaceTaskRuntimeEstimator
-
dataStatisticsForTask
protected DataStatistics dataStatisticsForTask(org.apache.hadoop.mapreduce.v2.api.records.TaskId taskID) -
thresholdRuntime
public long thresholdRuntime(org.apache.hadoop.mapreduce.v2.api.records.TaskId taskID) Description copied from interface:TaskRuntimeEstimatorFind a maximum reasonable execution wallclock time. Includes the time already elapsed. Find a maximum reasonable execution time. Includes the time already elapsed. If the projected total execution time for this task ever exceeds its reasonable execution time, we may speculate it.- Specified by:
thresholdRuntimein interfaceTaskRuntimeEstimator- Parameters:
taskID- theTaskIdof the task we are asking about- Returns:
- the task's maximum reasonable runtime, or MAX_VALUE if we don't have enough information to rule out any runtime, however long.
-