ソースを参照

Fix for HADOOP-83.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@388225 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 19 年 前
コミット
f65655705b
2 ファイル変更9 行追加5 行削除
  1. 7 1
      bin/start-all.sh
  2. 2 4
      src/java/org/apache/hadoop/dfs/DFSClient.java

+ 7 - 1
bin/start-all.sh

@@ -5,7 +5,13 @@
 bin=`dirname "$0"`
 bin=`cd "$bin"; pwd`
 
-"$bin"/hadoop-daemon.sh start namenode
+# start dfs daemons
+# start namenode after datanodes, to minimize time namenode is up w/o data
+# note: datanodes will log connection errors until namenode starts
 "$bin"/hadoop-daemons.sh start datanode
+"$bin"/hadoop-daemon.sh start namenode
+
+# start mapred daemons
+# start jobtracker first to minimize connection errors at startup
 "$bin"/hadoop-daemon.sh start jobtracker
 "$bin"/hadoop-daemons.sh start tasktracker

+ 2 - 4
src/java/org/apache/hadoop/dfs/DFSClient.java

@@ -40,7 +40,7 @@ import java.util.logging.*;
  ********************************************************/
 class DFSClient implements FSConstants {
     public static final Logger LOG = LogFormatter.getLogger("org.apache.hadoop.fs.DFSClient");
-    static int MAX_BLOCK_ACQUIRE_FAILURES = 10;
+    static int MAX_BLOCK_ACQUIRE_FAILURES = 3;
     ClientProtocol namenode;
     String localName;
     boolean running = true;
@@ -358,17 +358,15 @@ class DFSClient implements FSConstants {
                     chosenNode = bestNode(nodes[targetBlock], deadNodes);
                     targetAddr = DataNode.createSocketAddr(chosenNode.getName().toString());
                 } catch (IOException ie) {
-                    /**
                     if (failures >= MAX_BLOCK_ACQUIRE_FAILURES) {
                         throw new IOException("Could not obtain block " + blocks[targetBlock]);
                     }
-                    **/
                     if (nodes[targetBlock] == null || nodes[targetBlock].length == 0) {
                         LOG.info("No node available for block " + blocks[targetBlock]);
                     }
                     LOG.info("Could not obtain block from any node:  " + ie);
                     try {
-                        Thread.sleep(10000);
+                        Thread.sleep(3000);
                     } catch (InterruptedException iex) {
                     }
                     deadNodes.clear();