Package com.twitter.ambrose.model.hadoop

Source Code of com.twitter.ambrose.model.hadoop.MapReduceJobState

package com.twitter.ambrose.model.hadoop;

import com.fasterxml.jackson.annotation.JsonCreator;

import org.apache.hadoop.mapred.RunningJob;
import org.apache.hadoop.mapred.TIPStatus;
import org.apache.hadoop.mapred.TaskReport;

import java.io.IOException;

/**
* Container that holds state of a MapReduce job
*/
public class MapReduceJobState {
  private String jobId;
  private String jobName;
  private String trackingURL;
  private boolean isComplete;
  private boolean isSuccessful;
  private float mapProgress;
  private float reduceProgress;
  private long jobStartTime;
  private long jobLastUpdateTime;

  private int totalMappers;
  private int finishedMappersCount;

  private int totalReducers;
  private int finishedReducersCount;

  @JsonCreator
  public MapReduceJobState() { }

  public MapReduceJobState(RunningJob runningJob,
                           TaskReport[] mapTaskReport,
                           TaskReport[] reduceTaskReport) throws IOException {
    jobId = runningJob.getID().toString();
    jobName = runningJob.getJobName();
    trackingURL = runningJob.getTrackingURL();
    isComplete = runningJob.isComplete();
    isSuccessful = runningJob.isSuccessful();
    mapProgress = runningJob.mapProgress();
    reduceProgress = runningJob.reduceProgress();

    totalMappers = mapTaskReport.length;
    totalReducers = reduceTaskReport.length;

    for (TaskReport report : mapTaskReport) {
      if (report.getStartTime() < jobStartTime || jobStartTime == 0L) {
        jobStartTime = report.getStartTime();
      }

      TIPStatus status = report.getCurrentStatus();
      if (status != TIPStatus.PENDING && status != TIPStatus.RUNNING) {
        finishedMappersCount++;
      }
    }

    for (TaskReport report : reduceTaskReport) {
      if (jobLastUpdateTime < report.getFinishTime()) { jobLastUpdateTime = report.getFinishTime(); }

      TIPStatus status = report.getCurrentStatus();
      if (status != TIPStatus.PENDING && status != TIPStatus.RUNNING) {
        finishedReducersCount++;
      }
    }

    // If not all the reducers are finished.
    if (finishedReducersCount != reduceTaskReport.length || jobLastUpdateTime == 0) {
      jobLastUpdateTime = System.currentTimeMillis();
    }
  }

  public String getJobId() {
    return jobId;
  }

  public void setJobId(String jobId) {
    this.jobId = jobId;
  }

  public String getJobName() {
    return jobName;
  }

  public void setJobName(String jobName) {
    this.jobName = jobName;
  }

  public String getTrackingURL() {
    return trackingURL;
  }

  public void setTrackingURL(String trackingURL) {
    this.trackingURL = trackingURL;
  }

  public boolean isComplete() {
    return isComplete;
  }

  public void setComplete(boolean complete) {
    isComplete = complete;
  }

  public boolean isSuccessful() {
    return isSuccessful;
  }

  public void setSuccessful(boolean successful) {
    isSuccessful = successful;
  }

  public float getMapProgress() {
    return mapProgress;
  }

  public void setMapProgress(float mapProgress) {
    this.mapProgress = mapProgress;
  }

  public float getReduceProgress() {
    return reduceProgress;
  }

  public void setReduceProgress(float reduceProgress) {
    this.reduceProgress = reduceProgress;
  }

  public int getTotalMappers() {
    return totalMappers;
  }

  public void setTotalMappers(int totalMappers) {
    this.totalMappers = totalMappers;
  }

  public int getTotalReducers() {
    return totalReducers;
  }

  public void setTotalReducers(int totalReducers) {
    this.totalReducers = totalReducers;
  }

  public int getFinishedMappersCount() {
    return finishedMappersCount;
  }

  public void setFinishedMappersCount(int finishedMappersCount) {
    this.finishedMappersCount = finishedMappersCount;
  }

  public int getFinishedReducersCount() {
    return finishedReducersCount;
  }

  public void setFinishedReducersCount(int finishedReducersCount) {
    this.finishedReducersCount = finishedReducersCount;
  }

  public long getJobStartTime() {
    return jobStartTime;
  }

  public void setJobStartTime(long jobStartTime) {
    this.jobStartTime = jobStartTime;
  }

  public long getJobLastUpdateTime() {
    return jobLastUpdateTime;
  }

  public void setJobLastUpdateTime(long jobLastUpdateTime) {
    this.jobLastUpdateTime = jobLastUpdateTime;
  }
}
TOP

Related Classes of com.twitter.ambrose.model.hadoop.MapReduceJobState

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.