예제 #1
0
  @Override
  public long thresholdRuntime(TaskId taskID) {
    JobId jobID = taskID.getJobId();
    Job job = context.getJob(jobID);

    TaskType type = taskID.getTaskType();

    DataStatistics statistics = dataStatisticsForTask(taskID);

    int completedTasksOfType =
        type == TaskType.MAP ? job.getCompletedMaps() : job.getCompletedReduces();

    int totalTasksOfType = type == TaskType.MAP ? job.getTotalMaps() : job.getTotalReduces();

    if (completedTasksOfType < MINIMUM_COMPLETE_NUMBER_TO_SPECULATE
        || (((float) completedTasksOfType) / totalTasksOfType)
            < MINIMUM_COMPLETE_PROPORTION_TO_SPECULATE) {
      return Long.MAX_VALUE;
    }

    long result =
        statistics == null
            ? Long.MAX_VALUE
            : (long) statistics.outlier(slowTaskRelativeTresholds.get(job));
    return result;
  }
예제 #2
0
 public static String toString(TaskId tid) {
   return _join(
       "task",
       tid.getJobId().getAppId().getClusterTimestamp(),
       tid.getJobId().getAppId().getId(),
       tid.getJobId().getId(),
       taskSymbol(tid.getTaskType()),
       tid.getId());
 }