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 cu...@apache.org on 2006/11/14 21:30:49 UTC
svn commit: r474949 - in /lucene/hadoop/trunk: CHANGES.txt
conf/hadoop-default.xml src/java/org/apache/hadoop/dfs/JspHelper.java
src/webapps/dfs/browseDirectory.jsp
Author: cutting
Date: Tue Nov 14 12:30:48 2006
New Revision: 474949
URL: http://svn.apache.org/viewvc?view=rev&rev=474949
Log:
HADOOP-668. Improvements to the web-based DFS browser. Contributed by Hairong.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/conf/hadoop-default.xml
lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java
lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=474949&r1=474948&r2=474949
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Tue Nov 14 12:30:48 2006
@@ -70,6 +70,9 @@
21. HADOOP-712. Fix record io's xml serialization to correctly handle
control-characters. (Milind Bhandarkar via cutting)
+22. HADOOP-668. Improvements to the web-based DFS browser.
+ (Hairong Kuang via cutting)
+
Release 0.8.0 - 2006-11-03
Modified: lucene/hadoop/trunk/conf/hadoop-default.xml
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/conf/hadoop-default.xml?view=diff&rev=474949&r1=474948&r2=474949
==============================================================================
--- lucene/hadoop/trunk/conf/hadoop-default.xml (original)
+++ lucene/hadoop/trunk/conf/hadoop-default.xml Tue Nov 14 12:30:48 2006
@@ -153,7 +153,7 @@
<property>
<name>dfs.default.chunk.view.size</name>
- <value>2048</value>
+ <value>32768</value>
<description>The number of bytes to view for a file on the browser.
</description>
</property>
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java?view=diff&rev=474949&r1=474948&r2=474949
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java Tue Nov 14 12:30:48 2006
@@ -34,7 +34,7 @@
static Configuration conf = new Configuration();
static int defaultChunkSizeToView =
- conf.getInt("dfs.default.chunk.view.size",2 * 1024);
+ conf.getInt("dfs.default.chunk.view.size",32 * 1024);
static Random rand = new Random();
public JspHelper() {
@@ -160,6 +160,19 @@
out.print("<tr>");
for (int i = 0; i < columns.length; i++) {
out.print("<td style=\"vertical-align: top;\"><B>"+columns[i]+"</B><br></td>");
+ }
+ out.print("</tr>");
+ }
+ public void addTableRow(JspWriter out, String[] columns, int row) throws IOException {
+ out.print("<tr>");
+
+ for (int i = 0; i < columns.length; i++) {
+ if( row/2*2 == row ) {//even
+ out.print("<td style=\"vertical-align: top;background-color:LightGrey;\"><B>"+columns[i]+"</B><br></td>");
+ } else {
+ out.print("<td style=\"vertical-align: top;background-color:LightBlue;\"><B>"+columns[i]+"</B><br></td>");
+
+ }
}
out.print("</tr>");
}
Modified: lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp?view=diff&rev=474949&r1=474948&r2=474949
==============================================================================
--- lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp Tue Nov 14 12:30:48 2006
@@ -13,21 +13,51 @@
<%!
static JspHelper jspHelper = new JspHelper();
- public void generateDirectoryStructure(JspWriter out, HttpServletRequest req)
+ public void generateDirectoryStructure( JspWriter out,
+ HttpServletRequest req,
+ HttpServletResponse resp)
throws IOException {
String dir = req.getParameter("dir");
if (dir == null || dir.length() == 0) {
out.print("Invalid input");
return;
}
-
+
String namenodeInfoPortStr = req.getParameter("namenodeInfoPort");
int namenodeInfoPort = -1;
if (namenodeInfoPortStr != null)
namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr);
DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, jspHelper.conf);
- DFSFileInfo[] files = dfs.listPaths(new UTF8(dir));
+ UTF8 target = new UTF8(dir);
+ if( !dfs.isDirectory(target) ) { // a file
+ LocatedBlock[] blocks = dfs.namenode.open(dir);
+ DatanodeInfo [] locations = blocks[0].getLocations();
+ if (locations.length == 0) {
+ out.print("Empty file");
+ } else {
+ DatanodeInfo chosenNode = jspHelper.bestNode(blocks[0]);
+ String fqdn = InetAddress.getByName(chosenNode.getHost()).
+ getCanonicalHostName();
+ String datanodeAddr = chosenNode.getName();
+ int datanodePort = Integer.parseInt(
+ datanodeAddr.substring(
+ datanodeAddr.indexOf(':') + 1,
+ datanodeAddr.length()));
+ String redirectLocation = "http://"+fqdn+":" +
+ chosenNode.getInfoPort() +
+ "/browseBlock.jsp?blockId=" +
+ blocks[0].getBlock().getBlockId() +
+ "&blockSize=" + blocks[0].getBlock().getNumBytes() +
+ "&filename=" + URLEncoder.encode(dir, "UTF-8") +
+ "&datanodePort=" + datanodePort +
+ "&namenodeInfoPort=" + namenodeInfoPort;
+ resp.sendRedirect(redirectLocation);
+ }
+ return;
+ }
+ // directory
+ DFSFileInfo[] files = dfs.listPaths(target);
//generate a table and dump the info
String [] headings = new String[5];
headings[0] = "Name"; headings[1] = "Type"; headings[2] = "Size";
@@ -48,7 +78,8 @@
}
jspHelper.addTableHeader(out);
- jspHelper.addTableRow(out, headings);
+ int row=0;
+ jspHelper.addTableRow(out, headings, row++);
String cols [] = new String[5];
for (int i = 0; i < files.length; i++) {
//Get the location of the first block of the file
@@ -57,47 +88,30 @@
LocatedBlock[] blocks = dfs.namenode.open(files[i].getPath());
DatanodeInfo [] locations = blocks[0].getLocations();
if (locations.length == 0) {
- cols[0] = files[i].getPath();
- cols[1] = "file";
- cols[2] = Long.toString(files[i].getLen());
- cols[3] = Short.toString(files[i].getReplication());
- cols[4] = Long.toString(files[i].getBlockSize());
- jspHelper.addTableRow(out, cols);
- continue;
+ cols[0] = files[i].getName();
+ } else {
+ String datanodeUrl = req.getRequestURL()+"?dir="+
+ URLEncoder.encode(files[i].getPath(), "UTF-8") +
+ "&namenodeInfoPort=" + namenodeInfoPort;
+
+ cols[0] = "<a href=\""+datanodeUrl+"\">"+files[i].getName()+"</a>";
}
- DatanodeInfo chosenNode = jspHelper.bestNode(blocks[0]);
- String fqdn = InetAddress.getByName(chosenNode.getHost()).getCanonicalHostName();
- String datanodeAddr = chosenNode.getName();
- int datanodePort = Integer.parseInt(
- datanodeAddr.substring(
- datanodeAddr.indexOf(':') + 1,
- datanodeAddr.length()));
- String datanodeUrl = "http://"+fqdn+":" +
- chosenNode.getInfoPort() +
- "/browseBlock.jsp?blockId=" +
- blocks[0].getBlock().getBlockId() +
- "&blockSize=" + files[i].getBlockSize() +
- "&filename=" + URLEncoder.encode(files[i].getPath(), "UTF-8") +
- "&datanodePort=" + datanodePort +
- "&namenodeInfoPort=" + namenodeInfoPort;
- cols[0] = "<a href=\""+datanodeUrl+"\">"+files[i].getPath()+"</a>";
cols[1] = "file";
- cols[2] = Long.toString(files[i].getLen());
+ cols[2] = DFSShell.byteDesc(files[i].getLen());
cols[3] = Short.toString(files[i].getReplication());
- cols[4] = Long.toString(files[i].getBlockSize());
- jspHelper.addTableRow(out, cols);
+ cols[4] = DFSShell.byteDesc(files[i].getBlockSize());
}
else {
String datanodeUrl = req.getRequestURL()+"?dir="+
URLEncoder.encode(files[i].getPath(), "UTF-8") +
"&namenodeInfoPort=" + namenodeInfoPort;
- cols[0] = "<a href=\""+datanodeUrl+"\">"+files[i].getPath()+"</a>";
+ cols[0] = "<a href=\""+datanodeUrl+"\">"+files[i].getName()+"</a>";
cols[1] = "dir";
- cols[2] = "0";
- cols[3] = Short.toString(files[i].getReplication());
- cols[4] = Long.toString(files[i].getBlockSize());
- jspHelper.addTableRow(out, cols);
+ cols[2] = "";
+ cols[3] = "";
+ cols[4] = "";
}
+ jspHelper.addTableRow(out, cols, row++);
}
jspHelper.addTableFooter(out);
String namenodeHost = jspHelper.nameNodeAddr.getHostName();
@@ -110,13 +124,21 @@
%>
<html>
-
+<HEAD>
+<STYLE TYPE=text/css>
+<!--
+BODY
+ {
+ font-face:sanserif;
+ }
+-->
+</STYLE>
<title>Hadoop DFS Directory Browsing</title>
+</HEAD>
<body>
-
<%
- generateDirectoryStructure(out,request);
+ generateDirectoryStructure(out,request,response);
%>
<hr>