001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.hadoop.mapred;
020
021 import org.apache.hadoop.classification.InterfaceAudience;
022 import org.apache.hadoop.classification.InterfaceStability;
023
024 /**
025 * This is used to track task completion events on
026 * job tracker.
027 */
028 @InterfaceAudience.Public
029 @InterfaceStability.Stable
030 public class TaskCompletionEvent
031 extends org.apache.hadoop.mapreduce.TaskCompletionEvent {
032 @InterfaceAudience.Public
033 @InterfaceStability.Stable
034 static public enum Status {FAILED, KILLED, SUCCEEDED, OBSOLETE, TIPFAILED};
035
036 public static final TaskCompletionEvent[] EMPTY_ARRAY =
037 new TaskCompletionEvent[0];
038 /**
039 * Default constructor for Writable.
040 *
041 */
042 public TaskCompletionEvent() {
043 super();
044 }
045
046 /**
047 * Constructor. eventId should be created externally and incremented
048 * per event for each job.
049 * @param eventId event id, event id should be unique and assigned in
050 * incrementally, starting from 0.
051 * @param taskId task id
052 * @param status task's status
053 * @param taskTrackerHttp task tracker's host:port for http.
054 */
055 public TaskCompletionEvent(int eventId,
056 TaskAttemptID taskId,
057 int idWithinJob,
058 boolean isMap,
059 Status status,
060 String taskTrackerHttp){
061 super(eventId, taskId, idWithinJob, isMap, org.apache.hadoop.mapreduce.
062 TaskCompletionEvent.Status.valueOf(status.name()), taskTrackerHttp);
063 }
064
065 static TaskCompletionEvent downgrade(
066 org.apache.hadoop.mapreduce.TaskCompletionEvent event) {
067 return new TaskCompletionEvent(event.getEventId(),
068 TaskAttemptID.downgrade(event.getTaskAttemptId()),event.idWithinJob(),
069 event.isMapTask(), Status.valueOf(event.getStatus().name()),
070 event.getTaskTrackerHttp());
071 }
072 /**
073 * Returns task id.
074 * @return task id
075 * @deprecated use {@link #getTaskAttemptId()} instead.
076 */
077 @Deprecated
078 public String getTaskId() {
079 return getTaskAttemptId().toString();
080 }
081
082 /**
083 * Returns task id.
084 * @return task id
085 */
086 public TaskAttemptID getTaskAttemptId() {
087 return TaskAttemptID.downgrade(super.getTaskAttemptId());
088 }
089
090 /**
091 * Returns enum Status.SUCESS or Status.FAILURE.
092 * @return task tracker status
093 */
094 public Status getTaskStatus() {
095 return Status.valueOf(super.getStatus().name());
096 }
097
098 /**
099 * Sets task id.
100 * @param taskId
101 * @deprecated use {@link #setTaskAttemptId(TaskAttemptID)} instead.
102 */
103 @Deprecated
104 public void setTaskId(String taskId) {
105 this.setTaskAttemptId(TaskAttemptID.forName(taskId));
106 }
107
108 /**
109 * Sets task id.
110 * @param taskId
111 */
112 protected void setTaskAttemptId(TaskAttemptID taskId) {
113 super.setTaskAttemptId(taskId);
114 }
115
116 /**
117 * Set task status.
118 * @param status
119 */
120 protected void setTaskStatus(Status status) {
121 super.setTaskStatus(org.apache.hadoop.mapreduce.
122 TaskCompletionEvent.Status.valueOf(status.name()));
123 }
124
125 /**
126 * Set the task completion time
127 * @param taskCompletionTime time (in millisec) the task took to complete
128 */
129 protected void setTaskRunTime(int taskCompletionTime) {
130 super.setTaskRunTime(taskCompletionTime);
131 }
132
133 /**
134 * set event Id. should be assigned incrementally starting from 0.
135 * @param eventId
136 */
137 protected void setEventId(int eventId) {
138 super.setEventId(eventId);
139 }
140
141 /**
142 * Set task tracker http location.
143 * @param taskTrackerHttp
144 */
145 protected void setTaskTrackerHttp(String taskTrackerHttp) {
146 super.setTaskTrackerHttp(taskTrackerHttp);
147 }
148 }