MAPREDUCE-2141. Add an "extra data" field to Task for use by Mesos.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/mapreduce/trunk@1033804 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index 54fa676..c743438 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -23,6 +23,8 @@
IMPROVEMENTS
+ MAPREDUCE-2141. Add an "extra data" field to Task for use by Mesos. (matei)
+
MAPREDUCE-2140. Regenerate fair scheduler design doc PDF. (matei)
MAPREDUCE-1546. Redirect all job pages to corresponding history page
diff --git a/src/java/org/apache/hadoop/mapred/Task.java b/src/java/org/apache/hadoop/mapred/Task.java
index 18367a7..cea47dc 100644
--- a/src/java/org/apache/hadoop/mapred/Task.java
+++ b/src/java/org/apache/hadoop/mapred/Task.java
@@ -44,6 +44,7 @@
import org.apache.hadoop.fs.LocalDirAllocator;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem.Statistics;
+import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.DataInputBuffer;
import org.apache.hadoop.io.RawComparator;
import org.apache.hadoop.io.Text;
@@ -124,6 +125,11 @@
protected boolean jobCleanup = false;
protected boolean jobSetup = false;
protected boolean taskCleanup = false;
+
+ // An opaque data field used to attach extra data to each task. This is used
+ // by the Hadoop scheduler for Mesos to associate a Mesos task ID with each
+ // task and recover these IDs on the TaskTracker.
+ protected BytesWritable extraData = new BytesWritable();
//skip ranges based on failed ranges from previous attempts
private SortedRanges skipRanges = new SortedRanges();
@@ -409,6 +415,7 @@
out.writeBoolean(writeSkipRecs);
out.writeBoolean(taskCleanup);
Text.writeString(out, user);
+ extraData.write(out);
}
public void readFields(DataInput in) throws IOException {
@@ -433,6 +440,7 @@
setPhase(TaskStatus.Phase.CLEANUP);
}
user = Text.readString(in);
+ extraData.readFields(in);
}
@Override
@@ -1472,4 +1480,12 @@
reducer.run(reducerContext);
}
}
+
+ BytesWritable getExtraData() {
+ return extraData;
+ }
+
+ void setExtraData(BytesWritable extraData) {
+ this.extraData = extraData;
+ }
}