You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by mc...@apache.org on 2006/03/03 18:36:10 UTC
svn commit: r382895 -
/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
Author: mc
Date: Fri Mar 3 09:36:09 2006
New Revision: 382895
URL: http://svn.apache.org/viewcvs?rev=382895&view=rev
Log:
A bug in the TaskTracker was governing task-allocation
by counting the total number of tasks. The right thing
to do is keep a total for map tasks, and a separate total
for reduces.
This is now fixed.
Modified:
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java?rev=382895&r1=382894&r2=382895&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Fri Mar 3 09:36:09 2006
@@ -57,6 +57,8 @@
TreeMap tasks = null;
TreeMap runningTasks = null;
+ int mapTotal = 0;
+ int reduceTotal = 0;
boolean justStarted = true;
static Random r = new Random();
@@ -224,6 +226,11 @@
TaskStatus status = tip.createStatus();
taskReports.add(status);
if (status.getRunState() != TaskStatus.RUNNING) {
+ if (tip.getTask().isMapTask()) {
+ mapTotal--;
+ } else {
+ reduceTotal--;
+ }
it.remove();
}
}
@@ -246,12 +253,17 @@
//
// Check if we should create a new Task
//
- if (runningTasks.size() < maxCurrentTasks) {
+ if (mapTotal < maxCurrentTasks || reduceTotal < maxCurrentTasks) {
Task t = jobClient.pollForNewTask(taskTrackerName);
if (t != null) {
TaskInProgress tip = new TaskInProgress(t, this.fConf);
synchronized (this) {
tasks.put(t.getTaskId(), tip);
+ if (t.isMapTask()) {
+ mapTotal++;
+ } else {
+ reduceTotal++;
+ }
runningTasks.put(t.getTaskId(), tip);
}
tip.launchTask();