Browse Source

HDFS-7591. hdfs classpath command should support same options as hadoop classpath. (Contributed by Varun Saxena)

Arpit Agarwal 10 years ago
parent
commit
f72e2bfedd

+ 3 - 3
hadoop-common-project/hadoop-common/src/main/bin/hadoop

@@ -129,15 +129,15 @@ case $COMMAND in
     elif [ "$COMMAND" = "trace" ] ; then
     elif [ "$COMMAND" = "trace" ] ; then
       CLASS=org.apache.hadoop.tracing.TraceAdmin
       CLASS=org.apache.hadoop.tracing.TraceAdmin
     elif [ "$COMMAND" = "classpath" ] ; then
     elif [ "$COMMAND" = "classpath" ] ; then
-      if [ "$#" -eq 1 ]; then
+      if [ "$#" -gt 1 ]; then
+        CLASS=org.apache.hadoop.util.Classpath
+      else
         # No need to bother starting up a JVM for this simple case.
         # No need to bother starting up a JVM for this simple case.
         if $cygwin; then
         if $cygwin; then
           CLASSPATH=$(cygpath -p -w "$CLASSPATH" 2>/dev/null)
           CLASSPATH=$(cygpath -p -w "$CLASSPATH" 2>/dev/null)
         fi
         fi
         echo $CLASSPATH
         echo $CLASSPATH
         exit
         exit
-      else
-        CLASS=org.apache.hadoop.util.Classpath
       fi
       fi
     elif [[ "$COMMAND" = -*  ]] ; then
     elif [[ "$COMMAND" = -*  ]] ; then
         # class and package names cannot begin with a -
         # class and package names cannot begin with a -

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -250,6 +250,9 @@ Release 2.7.0 - UNRELEASED
     HDFS-7189. Add trace spans for DFSClient metadata operations. (Colin P.
     HDFS-7189. Add trace spans for DFSClient metadata operations. (Colin P.
     McCabe via yliu)
     McCabe via yliu)
 
 
+    HDFS-7591. hdfs classpath command should support same options as hadoop
+    classpath. (Varun Saxena via Arpit Agarwal)
+
   OPTIMIZATIONS
   OPTIMIZATIONS
 
 
     HDFS-7454. Reduce memory footprint for AclEntries in NameNode.
     HDFS-7454. Reduce memory footprint for AclEntries in NameNode.

+ 12 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/bin/hdfs

@@ -43,6 +43,7 @@ function print_usage(){
   echo "Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND"
   echo "Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND"
   echo "       where COMMAND is one of:"
   echo "       where COMMAND is one of:"
   echo "  dfs                  run a filesystem command on the file systems supported in Hadoop."
   echo "  dfs                  run a filesystem command on the file systems supported in Hadoop."
+  echo "  classpath            prints the classpath"
   echo "  namenode -format     format the DFS filesystem"
   echo "  namenode -format     format the DFS filesystem"
   echo "  secondarynamenode    run the DFS secondary namenode"
   echo "  secondarynamenode    run the DFS secondary namenode"
   echo "  namenode             run the DFS namenode"
   echo "  namenode             run the DFS namenode"
@@ -207,6 +208,17 @@ elif [ "$COMMAND" = "version" ] ; then
   CLASS=org.apache.hadoop.util.VersionInfo
   CLASS=org.apache.hadoop.util.VersionInfo
 elif [ "$COMMAND" = "debug" ]; then
 elif [ "$COMMAND" = "debug" ]; then
   CLASS=org.apache.hadoop.hdfs.tools.DebugAdmin
   CLASS=org.apache.hadoop.hdfs.tools.DebugAdmin
+elif [ "$COMMAND" = "classpath" ]; then
+  if [ "$#" -gt 0 ]; then
+    CLASS=org.apache.hadoop.util.Classpath
+  else
+    # No need to bother starting up a JVM for this simple case.
+    if $cygwin; then
+      CLASSPATH=$(cygpath -p -w "$CLASSPATH" 2>/dev/null)
+    fi
+    echo $CLASSPATH
+    exit 0
+  fi
 else
 else
   CLASS="$COMMAND"
   CLASS="$COMMAND"
 fi
 fi

+ 12 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/bin/hdfs.cmd

@@ -51,7 +51,14 @@ if "%1" == "--loglevel" (
       goto print_usage
       goto print_usage
   )
   )
 
 
-  set hdfscommands=dfs namenode secondarynamenode journalnode zkfc datanode dfsadmin haadmin fsck balancer jmxget oiv oev fetchdt getconf groups snapshotDiff lsSnapshottableDir cacheadmin mover storagepolicies
+  if %hdfs-command% == classpath (
+    if not defined hdfs-command-arguments (
+      @rem No need to bother starting up a JVM for this simple case.
+      @echo %CLASSPATH%
+      exit /b
+    )
+  )
+  set hdfscommands=dfs namenode secondarynamenode journalnode zkfc datanode dfsadmin haadmin fsck balancer jmxget oiv oev fetchdt getconf groups snapshotDiff lsSnapshottableDir cacheadmin mover storagepolicies classpath
   for %%i in ( %hdfscommands% ) do (
   for %%i in ( %hdfscommands% ) do (
     if %hdfs-command% == %%i set hdfscommand=true
     if %hdfs-command% == %%i set hdfscommand=true
   )
   )
@@ -122,6 +129,10 @@ goto :eof
   set CLASS=org.apache.hadoop.hdfs.tools.JMXGet
   set CLASS=org.apache.hadoop.hdfs.tools.JMXGet
   goto :eof
   goto :eof
 
 
+:classpath
+  set CLASS=org.apache.hadoop.util.Classpath
+  goto :eof
+
 :oiv
 :oiv
   set CLASS=org.apache.hadoop.hdfs.tools.offlineImageViewer.OfflineImageViewerPB
   set CLASS=org.apache.hadoop.hdfs.tools.offlineImageViewer.OfflineImageViewerPB
   goto :eof
   goto :eof