Browse Source

HADOOP-470. In HDFS web ui, list the datanodes containing each copy of a block. Contributed by Hairong.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@493124 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 18 năm trước cách đây
mục cha
commit
f002ed8284
2 tập tin đã thay đổi với 17 bổ sung11 xóa
  1. 3 0
      CHANGES.txt
  2. 14 11
      src/webapps/datanode/browseBlock.jsp

+ 3 - 0
CHANGES.txt

@@ -192,6 +192,9 @@ Trunk (unreleased changes)
     causes their blocks to be re-replicated on other nodes, so that
     they may be removed from a cluster.  (Dhruba Borthakur via cutting)
 
+55. HADOOP-470.  In HDFS web ui, list the datanodes containing each
+    copy of a block.  (Hairong Kuang via cutting)
+
 
 Release 0.9.2 - 2006-12-15
 

+ 14 - 11
src/webapps/datanode/browseBlock.jsp

@@ -120,31 +120,34 @@
     out.print("<a name=\"blockDetails\"></a>");
     out.print("<B>Total number of blocks: "+blocks.length+"</B><br>");
     //generate a table and dump the info
+    out.println("\n<table>");
     for (int i = 0; i < blocks.length; i++) {
+      out.print("<tr>");
       blockId = blocks[i].getBlock().getBlockId();
       blockSize = blocks[i].getBlock().getNumBytes();
       String blk = "blk_" + Long.toString(blockId);
+      out.print("<td>"+blk+":</td>");
       DatanodeInfo[] locs = blocks[i].getLocations();
-      int r = jspHelper.rand.nextInt(locs.length);
-      String datanodeAddr = locs[r].getName();
-      datanodePort = Integer.parseInt(datanodeAddr.substring(
+      for(int j=0; j<locs.length; j++) {
+        String datanodeAddr = locs[j].getName();
+        datanodePort = Integer.parseInt(datanodeAddr.substring(
                                         datanodeAddr.indexOf(':') + 1, 
                                     datanodeAddr.length())); 
-      fqdn = InetAddress.getByName(locs[r].getHost()).getCanonicalHostName();
-      String blockUrl = "http://"+ fqdn + ":" +
-                        locs[r].getInfoPort() +
+        fqdn = InetAddress.getByName(locs[j].getHost()).getCanonicalHostName();
+        String blockUrl = "http://"+ fqdn + ":" +
+                        locs[j].getInfoPort() +
                         "/browseBlock.jsp?blockId=" + Long.toString(blockId) +
                         "&blockSize=" + blockSize +
                "&filename=" + URLEncoder.encode(filename, "UTF-8")+ 
                         "&datanodePort=" + datanodePort + 
                         "&namenodeInfoPort=" + namenodeInfoPort +
                         "&chunkSizeToView=" + chunkSizeToView;
-      out.print("<a href=\"" + blockUrl + "\">" + "blk_" + blockId + 
-                        "</a>");
-      if (i < blocks.length - 1)
-        out.print("&nbsp;&nbsp;&nbsp;&nbsp;");
-      if (i % 3 == 0) out.print("<br>");
+        out.print("<td>&nbsp</td>" 
+          + "<td><a href=\"" + blockUrl + "\">" + datanodeAddr + "</a></td>");
+      }
+      out.println("</tr>");
     }
+    out.println("</table>");
     out.print("<hr>");
     String namenodeHost = jspHelper.nameNodeAddr.getHostName();
     out.print("<br><a href=\"http://" +