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 2007/03/30 23:00:53 UTC
svn commit: r524269 - in /lucene/hadoop/trunk: CHANGES.txt
src/java/org/apache/hadoop/dfs/DFSAdmin.java
src/java/org/apache/hadoop/fs/FsShell.java
Author: cutting
Date: Fri Mar 30 14:00:52 2007
New Revision: 524269
URL: http://svn.apache.org/viewvc?view=rev&rev=524269
Log:
HADOOP-672. Improve help for fs shell commands. Contributed by Dhruba.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSAdmin.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/fs/FsShell.java
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=524269&r1=524268&r2=524269
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Fri Mar 30 14:00:52 2007
@@ -76,6 +76,9 @@
23. HADOOP-1011. Fix a ConcurrentModificationException when viewing
job history. (Tahir Hashmi via cutting)
+24. HADOOP-672. Improve help for fs shell commands.
+ (Dhruba Borthakur via cutting)
+
Release 0.12.3 (not yet released)
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSAdmin.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSAdmin.java?view=diff&rev=524269&r1=524268&r2=524269
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSAdmin.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSAdmin.java Fri Mar 30 14:00:52 2007
@@ -87,7 +87,7 @@
*/
public void setSafeMode(String[] argv, int idx) throws IOException {
if (!(fs instanceof DistributedFileSystem)) {
- System.out.println("FileSystem is " + fs.getName());
+ System.err.println("FileSystem is " + fs.getName());
return;
}
if (idx != argv.length - 1) {
@@ -141,7 +141,7 @@
int exitCode = -1;
if (!(fs instanceof DistributedFileSystem)) {
- System.out.println("FileSystem is " + fs.getName());
+ System.err.println("FileSystem is " + fs.getName());
return exitCode;
}
@@ -152,6 +152,50 @@
return exitCode;
}
+ private void printHelp(String cmd) {
+ String summary = "hadoop dfsadmin is the command to execute dfs administrative commands.\n" +
+ "The full syntax is: \n\n" +
+ "hadoop dfsadmin [-report] [-safemode <enter | leave | get | wait>]\n" +
+ "\t[-refreshNodes] [-help [cmd]]\n";
+
+ String report ="-report: \tReports basic filesystem information and statistics.\n";
+
+ String safemode = "-safemode <enter|leave|get|wait>: Safemode maintenance command.\n" +
+ "\t\tSafe mode is a name node state when it\n" +
+ "\t\t\t1. does not accept changes to name space (read-only)\n" +
+ "\t\t\t2. does not replicate or delete blocks.\n" +
+ "\t\tSafe mode is entered automatically at name node startup, and\n" +
+ "\t\tleaves safe mode automatically when the configured minimum\n" +
+ "\t\tpercentage of blocks satisfies the minimal replication\n" +
+ "\t\tcondition. Safe mode can also be entered manually, but then\n" +
+ "\t\tcan only be turned off manually as well.\n";
+
+ String refreshNodes = "-refreshNodes: \tReread the hosts and exclude files to update the set\n" +
+ "\t\tof datanodes that are allowed to connect to the namenode\n" +
+ "\t\tand those that should be decommissioned/recommissioned.\n";
+
+ String help = "-help [cmd]: \tDisplays help for given command or all commands if none\n" +
+ "\t\tis specified.\n";
+
+ if ("report".equals(cmd)) {
+ System.out.println(report);
+ } else if ("safemode".equals(cmd)) {
+ System.out.println(safemode);
+ } else if ("refreshNodes".equals(cmd)) {
+ System.out.println(refreshNodes);
+ } else if ("help".equals(cmd)) {
+ System.out.println(help);
+ } else {
+ System.out.println(summary);
+ System.out.println(report);
+ System.out.println(safemode);
+ System.out.println(refreshNodes);
+ System.out.println(help);
+ }
+
+ }
+
+
/**
* Displays format of commands.
* @param cmd The command that is being executed.
@@ -171,6 +215,7 @@
System.err.println(" [-report]");
System.err.println(" [-safemode enter | leave | get | wait]");
System.err.println(" [-refreshNodes]");
+ System.err.println(" [-help [cmd]]");
}
}
@@ -231,6 +276,12 @@
setSafeMode(argv, i);
} else if ("-refreshNodes".equals(cmd)) {
exitCode = refreshNodes();
+ } else if ("-help".equals(cmd)) {
+ if (i < argv.length) {
+ printHelp(argv[i]);
+ } else {
+ printHelp("");
+ }
} else {
exitCode = -1;
System.err.println(cmd.substring(1) + ": Unknown command");
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/fs/FsShell.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/fs/FsShell.java?view=diff&rev=524269&r1=524268&r2=524269
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/fs/FsShell.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/fs/FsShell.java Fri Mar 30 14:00:52 2007
@@ -635,6 +635,181 @@
return strVal;
}
+ private void printHelp(String cmd) {
+ String summary = "hadoop fs is the command to execute fs commands. " +
+ "The full syntax is: \n\n" +
+ "hadoop fs [-fs <local | file system URI>] [-conf <configuration file>]\n\t" +
+ "[-D <property=value>] [-ls <path>] [-lsr <path>] [-du <path>]\n\t" +
+ "[-dus <path>] [-mv <src> <dst>] [-cp <src> <dst>] [-rm <src>]\n\t" +
+ "[-rmr <src>] [-put <localsrc> <dst>] [-copyFromLocal <localsrc> <dst>]\n\t" +
+ "[-moveFromLocal <localsrc> <dst>] [-get <src> <localdst>]\n\t" +
+ "[-getmerge <src> <localdst> [addnl]] [-cat <src>]\n\t" +
+ "[-copyToLocal <src><localdst>] [-moveToLocal <src> <localdst>]\n\t" +
+ "[-mkdir <path>] [-report] [-setrep [-R] <rep> <path/file>]\n" +
+ "[-help [cmd]]\n";
+
+ String conf ="-conf <configuration file>: Specify an application configuration file.";
+
+ String D = "-D <property=value>: Use value for given property.";
+
+ String fs = "-fs [local | <file system URI>]: \tSpecify the file system to use.\n" +
+ "\t\tIf not specified, the current configuration is used, \n" +
+ "\t\ttaken from the following, in increasing precedence: \n" +
+ "\t\t\thadoop-default.xml inside the hadoop jar file \n" +
+ "\t\t\thadoop-default.xml in $HADOOP_CONF_DIR \n" +
+ "\t\t\thadoop-site.xml in $HADOOP_CONF_DIR \n" +
+ "\t\t'local' means use the local file system as your DFS. \n" +
+ "\t\t<file system URI> specifies a particular file system to \n" +
+ "\t\tcontact. This argument is optional but if used must appear\n" +
+ "\t\tappear first on the command line. Exactly one additional\n" +
+ "\t\targument must be specified. \n";
+
+
+ String ls = "-ls <path>: \tList the contents that match the specified file pattern. If\n" +
+ "\t\tpath is not specified, the contents of /user/<currentUser>\n" +
+ "\t\twill be listed. Directory entries are of the form \n" +
+ "\t\t\tdirName (full path) <dir> \n" +
+ "\t\tand file entries are of the form \n" +
+ "\t\t\tfileName(full path) <r n> size \n" +
+ "\t\twhere n is the number of replicas specified for the file \n" +
+ "\t\tand size is the size of the file, in bytes.\n";
+
+ String lsr = "-lsr <path>: \tRecursively list the contents that match the specified\n" +
+ "\t\tfile pattern. Behaves very similarly to hadoop fs -ls,\n" +
+ "\t\texcept that the data is shown for all the entries in the\n" +
+ "\t\tsubtree.\n";
+
+ String du = "-du <path>: \tShow the amount of space, in bytes, used by the files that \n" +
+ "\t\tmatch the specified file pattern. Equivalent to the unix\n" +
+ "\t\tcommand \"du -sb <path>/*\" in case of a directory, \n" +
+ "\t\tand to \"du -b <path>\" in case of a file.\n" +
+ "\t\tThe output is in the form \n" +
+ "\t\t\tname(full path) size (in bytes)\n";
+
+ String dus = "-dus <path>: \tShow the amount of space, in bytes, used by the files that \n" +
+ "\t\tmatch the specified file pattern. Equivalent to the unix\n" +
+ "\t\tcommand \"du -sb\" The output is in the form \n" +
+ "\t\t\tname(full path) size (in bytes)\n";
+
+ String mv = "-mv <src> <dst>: Move files that match the specified file pattern <src>\n" +
+ "\t\tto a destination <dst>. When moving multiple files, the \n" +
+ "\t\tdestination must be a directory. \n";
+
+ String cp = "-cp <src> <dst>: Copy files that match the file pattern <src> to a \n" +
+ "\t\tdestination. When copying multiple files, the destination\n" +
+ "\t\tmust be a directory. \n";
+
+ String rm = "-rm <src>: \tDelete all files that match the specified file pattern.\n" +
+ "\t\tEquivlent to the Unix command \"rm <src>\"\n";
+
+ String rmr = "-rmr <src>: \tRemove all directories which match the specified file \n" +
+ "\t\tpattern. Equivlent to the Unix command \"rm -rf <src>\"\n";
+
+ String put = "-put <localsrc> <dst>: \tCopy a single file from the local file system \n" +
+ "\t\tinto fs. \n";
+
+ String copyFromLocal = "-copyFromLocal <localsrc> <dst>: Identical to the -put command.\n";
+
+ String moveFromLocal = "-moveFromLocal <localsrc> <dst>: Same as -put, except that the source is\n" +
+ "\t\tdeleted after it's copied.\n";
+
+ String get = "-get <src> <localdst>: Copy files that match the file pattern <src> \n" +
+ "\t\tto the local name. <src> is kept. When copying mutiple, \n" +
+ "\t\tfiles, the destination must be a directory. \n";
+
+ String getmerge = "-getmerge <src> <localdst>: Get all the files in the directories that \n" +
+ "\t\tmatch the source file pattern and merge and sort them to only\n" +
+ "\t\tone file on local fs. <src> is kept.\n";
+
+ String cat = "-cat <src>: \tFetch all files that match the file pattern <src> \n" +
+ "\t\tand display their content on stdout.\n";
+
+ String copyToLocal = "-copyToLocal <src> <localdst>: Identical to the -get command.\n";
+
+ String moveToLocal = "-moveToLocal <src> <localdst>: Not implemented yet \n";
+
+ String mkdir = "-mkdir <path>: \tCreate a directory in specified location. \n";
+
+ String setrep = "-setrep [-R] <rep> <path/file>: Set the replication level of a file. \n" +
+ "\t\tThe -R flag requests a recursive change of replication level \n" +
+ "\t\tfor an entire tree.\n";
+
+ String help = "-help [cmd]: \tDisplays help for given command or all commands if none\n" +
+ "\t\tis specified.\n";
+
+ if ("fs".equals(cmd)) {
+ System.out.println(fs);
+ } else if ("conf".equals(cmd)) {
+ System.out.println(conf);
+ } else if ("D".equals(cmd)) {
+ System.out.println(D);
+ } else if ("ls".equals(cmd)) {
+ System.out.println(ls);
+ } else if ("lsr".equals(cmd)) {
+ System.out.println(lsr);
+ } else if ("du".equals(cmd)) {
+ System.out.println(du);
+ } else if ("dus".equals(cmd)) {
+ System.out.println(dus);
+ } else if ("rm".equals(cmd)) {
+ System.out.println(rm);
+ } else if ("rmr".equals(cmd)) {
+ System.out.println(rmr);
+ } else if ("mkdir".equals(cmd)) {
+ System.out.println(mkdir);
+ } else if ("mv".equals(cmd)) {
+ System.out.println(mv);
+ } else if ("cp".equals(cmd)) {
+ System.out.println(cp);
+ } else if ("put".equals(cmd)) {
+ System.out.println(put);
+ } else if ("copyFromLocal".equals(cmd)) {
+ System.out.println(copyFromLocal);
+ } else if ("moveFromLocal".equals(cmd)) {
+ System.out.println(moveFromLocal);
+ } else if ("get".equals(cmd)) {
+ System.out.println(get);
+ } else if ("getmerge".equals(cmd)) {
+ System.out.println(getmerge);
+ } else if ("copyToLocal".equals(cmd)) {
+ System.out.println(copyToLocal);
+ } else if ("moveToLocal".equals(cmd)) {
+ System.out.println(moveToLocal);
+ } else if ("cat".equals(cmd)) {
+ System.out.println(cat);
+ } else if ("get".equals(cmd)) {
+ System.out.println(get);
+ } else if ("setrep".equals(cmd)) {
+ System.out.println(setrep);
+ } else if ("help".equals(cmd)) {
+ System.out.println(help);
+ } else {
+ System.out.println(summary);
+ System.out.println(fs);
+ System.out.println(ls);
+ System.out.println(lsr);
+ System.out.println(du);
+ System.out.println(dus);
+ System.out.println(mv);
+ System.out.println(cp);
+ System.out.println(rm);
+ System.out.println(rmr);
+ System.out.println(put);
+ System.out.println(copyFromLocal);
+ System.out.println(moveFromLocal);
+ System.out.println(get);
+ System.out.println(getmerge);
+ System.out.println(cat);
+ System.out.println(copyToLocal);
+ System.out.println(moveToLocal);
+ System.out.println(mkdir);
+ System.out.println(setrep);
+ System.out.println(help);
+ }
+
+
+ }
+
/**
* Apply operation specified by 'cmd' on all parameters
* starting from argv[startindex].
@@ -702,7 +877,7 @@
public void printUsage(String cmd) {
if ("-fs".equals(cmd)) {
System.err.println("Usage: java FsShell" +
- " [-fs <local | namenode:port>]");
+ " [-fs <local | file system URI>]");
} else if ("-conf".equals(cmd)) {
System.err.println("Usage: java FsShell" +
" [-conf <configuration file>]");
@@ -727,7 +902,7 @@
System.err.println("Usage: java FsShell" +
" [" + cmd + " [-crc] <src> <localdst>]");
} else if ("-cat".equals(cmd)) {
- System.out.println("Usage: java FsShell" +
+ System.err.println("Usage: java FsShell" +
" [" + cmd + " <src>]");
} else if ("-get".equals(cmd)) {
System.err.println("Usage: java FsShell" +
@@ -737,7 +912,7 @@
" [-setrep [-R] <rep> <path/file>]");
} else {
System.err.println("Usage: java FsShell");
- System.err.println(" [-fs <local | namenode:port>]");
+ System.err.println(" [-fs <local | file system URI>]");
System.err.println(" [-conf <configuration file>]");
System.err.println(" [-D <[property=value>]");
System.err.println(" [-ls <path>]" );
@@ -759,6 +934,7 @@
System.err.println(" [-moveToLocal [-crc] <src> <localdst>]");
System.err.println(" [-mkdir <path>]");
System.err.println(" [-setrep [-R] <rep> <path/file>]");
+ System.err.println(" [-help [cmd]]");
}
}
@@ -871,6 +1047,12 @@
}
} else if ("-mkdir".equals(cmd)) {
exitCode = doall(cmd, argv, conf, i);
+ } else if ("-help".equals(cmd)) {
+ if (i < argv.length) {
+ printHelp(argv[i]);
+ } else {
+ printHelp("");
+ }
} else {
exitCode = -1;
System.err.println(cmd.substring(1) + ": Unknown command");