TaskCompletionEvent.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:6k
- /**
- * 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.io.DataInput;
- import java.io.DataOutput;
- import java.io.IOException;
- import org.apache.hadoop.io.Writable;
- import org.apache.hadoop.io.WritableUtils;
- /**
- * This is used to track task completion events on
- * job tracker.
- */
- public class TaskCompletionEvent implements Writable{
- static public enum Status {FAILED, KILLED, SUCCEEDED, OBSOLETE, TIPFAILED};
-
- private int eventId;
- private String taskTrackerHttp;
- private int taskRunTime; // using int since runtime is the time difference
- private TaskAttemptID taskId;
- Status status;
- boolean isMap = false;
- private int idWithinJob;
- public static final TaskCompletionEvent[] EMPTY_ARRAY =
- new TaskCompletionEvent[0];
- /**
- * Default constructor for Writable.
- *
- */
- public TaskCompletionEvent(){
- taskId = new TaskAttemptID();
- }
- /**
- * Constructor. eventId should be created externally and incremented
- * per event for each job.
- * @param eventId event id, event id should be unique and assigned in
- * incrementally, starting from 0.
- * @param taskId task id
- * @param status task's status
- * @param taskTrackerHttp task tracker's host:port for http.
- */
- public TaskCompletionEvent(int eventId,
- TaskAttemptID taskId,
- int idWithinJob,
- boolean isMap,
- Status status,
- String taskTrackerHttp){
-
- this.taskId = taskId;
- this.idWithinJob = idWithinJob;
- this.isMap = isMap;
- this.eventId = eventId;
- this.status =status;
- this.taskTrackerHttp = taskTrackerHttp;
- }
- /**
- * Returns event Id.
- * @return event id
- */
- public int getEventId() {
- return eventId;
- }
- /**
- * Returns task id.
- * @return task id
- * @deprecated use {@link #getTaskAttemptId()} instead.
- */
- @Deprecated
- public String getTaskId() {
- return taskId.toString();
- }
-
- /**
- * Returns task id.
- * @return task id
- */
- public TaskAttemptID getTaskAttemptId() {
- return taskId;
- }
-
- /**
- * Returns enum Status.SUCESS or Status.FAILURE.
- * @return task tracker status
- */
- public Status getTaskStatus() {
- return status;
- }
- /**
- * http location of the tasktracker where this task ran.
- * @return http location of tasktracker user logs
- */
- public String getTaskTrackerHttp() {
- return taskTrackerHttp;
- }
- /**
- * Returns time (in millisec) the task took to complete.
- */
- public int getTaskRunTime() {
- return taskRunTime;
- }
- /**
- * Set the task completion time
- * @param taskCompletionTime time (in millisec) the task took to complete
- */
- public void setTaskRunTime(int taskCompletionTime) {
- this.taskRunTime = taskCompletionTime;
- }
- /**
- * set event Id. should be assigned incrementally starting from 0.
- * @param eventId
- */
- public void setEventId(
- int eventId) {
- this.eventId = eventId;
- }
- /**
- * Sets task id.
- * @param taskId
- * @deprecated use {@link #setTaskID(TaskAttemptID)} instead.
- */
- @Deprecated
- public void setTaskId(String taskId) {
- this.taskId = TaskAttemptID.forName(taskId);
- }
-
- /**
- * Sets task id.
- * @param taskId
- */
- public void setTaskID(TaskAttemptID taskId) {
- this.taskId = taskId;
- }
-
- /**
- * Set task status.
- * @param status
- */
- public void setTaskStatus(
- Status status) {
- this.status = status;
- }
- /**
- * Set task tracker http location.
- * @param taskTrackerHttp
- */
- public void setTaskTrackerHttp(
- String taskTrackerHttp) {
- this.taskTrackerHttp = taskTrackerHttp;
- }
-
- @Override
- public String toString(){
- StringBuffer buf = new StringBuffer();
- buf.append("Task Id : ");
- buf.append(taskId);
- buf.append(", Status : ");
- buf.append(status.name());
- return buf.toString();
- }
-
- @Override
- public boolean equals(Object o) {
- if(o == null)
- return false;
- if(o.getClass().equals(TaskCompletionEvent.class)) {
- TaskCompletionEvent event = (TaskCompletionEvent) o;
- return this.isMap == event.isMapTask()
- && this.eventId == event.getEventId()
- && this.idWithinJob == event.idWithinJob()
- && this.status.equals(event.getTaskStatus())
- && this.taskId.equals(event.getTaskAttemptId())
- && this.taskRunTime == event.getTaskRunTime()
- && this.taskTrackerHttp.equals(event.getTaskTrackerHttp());
- }
- return false;
- }
- @Override
- public int hashCode() {
- return toString().hashCode();
- }
- public boolean isMapTask() {
- return isMap;
- }
-
- public int idWithinJob() {
- return idWithinJob;
- }
- //////////////////////////////////////////////
- // Writable
- //////////////////////////////////////////////
- public void write(DataOutput out) throws IOException {
- taskId.write(out);
- WritableUtils.writeVInt(out, idWithinJob);
- out.writeBoolean(isMap);
- WritableUtils.writeEnum(out, status);
- WritableUtils.writeString(out, taskTrackerHttp);
- WritableUtils.writeVInt(out, taskRunTime);
- WritableUtils.writeVInt(out, eventId);
- }
-
- public void readFields(DataInput in) throws IOException {
- taskId.readFields(in);
- idWithinJob = WritableUtils.readVInt(in);
- isMap = in.readBoolean();
- status = WritableUtils.readEnum(in, Status.class);
- taskTrackerHttp = WritableUtils.readString(in);
- taskRunTime = WritableUtils.readVInt(in);
- eventId = WritableUtils.readVInt(in);
- }
- }