Преглед на файлове

Merge -r 570204:570203. Reverting HADOOP-1739.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@570207 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting преди 18 години
родител
ревизия
8209f932bb
променени са 4 файла, в които са добавени 16 реда и са изтрити 16 реда
  1. 0 5
      CHANGES.txt
  2. 3 3
      conf/hadoop-default.xml
  3. 1 1
      src/java/org/apache/hadoop/mapred/TaskRunner.java
  4. 12 7
      src/java/org/apache/hadoop/mapred/TaskTracker.java

+ 0 - 5
CHANGES.txt

@@ -113,11 +113,6 @@ Release 0.14.1 - (unreleased)
     HADOOP-1740.  Fix null pointer exception in sorting map outputs. (Devaraj
     Das via omalley)
 
-    HADOOP-1739.  Fix task tracker report server to use a port
-    selected by the operating system by default rather than specifying
-    a port, which can fail when that port is not free.
-    (Arun C Murthy via cutting)
-
 
 Release 0.14.0 - 2007-08-17
 

+ 3 - 3
conf/hadoop-default.xml

@@ -476,9 +476,9 @@ creations/deletions), or "all".</description>
 
 <property>
   <name>mapred.task.tracker.report.port</name>
-  <value>0</value>
-  <description>The port number that the MapReduce task tracker report server uses.
-  By default we set it to zero to let the operating system pick an ephemeral port.
+  <value>50050</value>
+  <description>The port number that the MapReduce task tracker report server uses as a starting
+               point to look for a free port to listen on.
   </description>
 </property>
 

+ 1 - 1
src/java/org/apache/hadoop/mapred/TaskRunner.java

@@ -243,7 +243,7 @@ abstract class TaskRunner extends Thread {
                                                    conf.get("mapred.child.java.opts", "-Xmx200m"),
                                                    conf.get("mapred.child.heap.size"));
         javaOpts = replaceAll(javaOpts, "@taskid@", taskid);
-        int port = tracker.getTaskTrackerReportPort() + 1;
+        int port = conf.getInt("mapred.task.tracker.report.port", 50050) + 1;
         javaOpts = replaceAll(javaOpts, "@port@", Integer.toString(port));
         String [] javaOptsSplit = javaOpts.split(" ");
         //Add java.library.path; necessary for native-hadoop libraries

+ 12 - 7
src/java/org/apache/hadoop/mapred/TaskTracker.java

@@ -407,17 +407,22 @@ public class TaskTracker
     this.myMetrics = new TaskTrackerMetrics();
     
     // port numbers
-    this.taskReportPort = this.fConf.getInt("mapred.task.tracker.report.port", 0);
+    this.taskReportPort = this.fConf.getInt("mapred.task.tracker.report.port", 50050);
     // bind address
-    this.taskReportBindAddress = this.fConf.get("mapred.task.tracker.report.bindAddress", 
-                                                "0.0.0.0");
+    this.taskReportBindAddress = this.fConf.get("mapred.task.tracker.report.bindAddress", "0.0.0.0");
 
     // RPC initialization
-    this.taskReportServer = RPC.getServer(this, this.taskReportBindAddress, 
-                                          this.taskReportPort, maxCurrentTasks, 
-                                          false, this.fConf);
-    this.taskReportServer.start();
+    while (true) {
+      try {
+        this.taskReportServer = RPC.getServer(this, this.taskReportBindAddress, this.taskReportPort, maxCurrentTasks, false, this.fConf);
+        this.taskReportServer.start();
+        break;
+      } catch (BindException e) {
+        LOG.info("Could not open report server at " + this.taskReportPort + ", trying new port");
+        this.taskReportPort++;
+      }
         
+    }
     // The rpc-server port can be ephemeral... 
     // ... ensure we have the correct info
     this.taskReportPort = taskReportServer.getListenerAddress().getPort();