You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by tc...@apache.org on 2012/05/02 20:55:47 UTC

svn commit: r1333154 - in /mahout/trunk: bin/mahout distribution/src/main/assembly/bin.xml

Author: tcp
Date: Wed May  2 18:55:47 2012
New Revision: 1333154

URL: http://svn.apache.org/viewvc?rev=1333154&view=rev
Log:
MAHOUT-994 - bin/mahout should not rely on HADOOP_HOME

Modified:
    mahout/trunk/bin/mahout
    mahout/trunk/distribution/src/main/assembly/bin.xml

Modified: mahout/trunk/bin/mahout
URL: http://svn.apache.org/viewvc/mahout/trunk/bin/mahout?rev=1333154&r1=1333153&r2=1333154&view=diff
==============================================================================
--- mahout/trunk/bin/mahout (original)
+++ mahout/trunk/bin/mahout Wed May  2 18:55:47 2012
@@ -121,7 +121,7 @@ CLASSPATH=${CLASSPATH}:$MAHOUT_CONF_DIR
 
 if [ "$MAHOUT_LOCAL" != "" ]; then
   echo "MAHOUT_LOCAL is set, so we don't add HADOOP_CONF_DIR to classpath."
-else
+elif [ -n "$HADOOP_CONF_DIR"  ] ; then
   echo "MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath."
   CLASSPATH=${CLASSPATH}:$HADOOP_CONF_DIR
 fi
@@ -199,13 +199,19 @@ done
 
 # run it
 
-if [ "$HADOOP_HOME" = "" ] || [ "$MAHOUT_LOCAL" != "" ] ; then
-  if [ "$HADOOP_HOME" = "" ] ; then
-    echo "no HADOOP_HOME set, running locally"
+HADOOP_BINARY=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" which hadoop 2>/dev/null)
+if [ -x "$HADOOP_BINARY" ] ; then
+  HADOOP_BINARY_CLASSPATH=$("$HADOOP_BINARY" classpath)
+fi
+
+if [ ! -x "$HADOOP_BINARY" ] || [ "$MAHOUT_LOCAL" != "" ] ; then
+  if [ ! -x "$HADOOP_BINARY" ] ; then
+    echo "hadoop binary is not in PATH,HADOOP_HOME/bin,HADOOP_PREFIX/bin, running locally"
   elif [ "$MAHOUT_LOCAL" != "" ] ; then
     echo "MAHOUT_LOCAL is set, running locally"
   fi
 #  echo "CLASSPATH: $CLASSPATH"
+    CLASSPATH="${CLASSPATH}:${MAHOUT_HOME/lib/hadoop/*}"
     case $1 in
     (classpath)
       echo $CLASSPATH
@@ -214,13 +220,7 @@ if [ "$HADOOP_HOME" = "" ] || [ "$MAHOUT
       exec "$JAVA" $JAVA_HEAP_MAX $MAHOUT_OPTS -classpath "$CLASSPATH" $CLASS "$@"
     esac
 else
-  echo "Running on hadoop, using HADOOP_HOME=$HADOOP_HOME"
-  if [ "$HADOOP_CONF_DIR" = "" ] ; then
-    HADOOP_CONF_DIR=$HADOOP_HOME/conf
-    echo "No HADOOP_CONF_DIR set, using $HADOOP_HOME/conf "
-  else
-    echo "HADOOP_CONF_DIR=$HADOOP_CONF_DIR"
-  fi
+  echo "Running on hadoop, using $HADOOP_BINARY and HADOOP_CONF_DIR=$HADOOP_CONF_DIR"
 	
   if [ "$MAHOUT_JOB" = "" ] ; then
     echo "ERROR: Could not find mahout-examples-*.job in $MAHOUT_HOME or $MAHOUT_HOME/examples/target, please run 'mvn install' to create the .job file"
@@ -228,8 +228,9 @@ else
   else
     case "$1" in
     (hadoop)
+      shift
       export HADOOP_CLASSPATH=$MAHOUT_CONF_DIR:${HADOOP_CLASSPATH}:$CLASSPATH
-      exec "$HADOOP_HOME/bin/$@"
+      exec "$HADOOP_BINARY" "$@"
       ;;
     (classpath)
       echo $CLASSPATH
@@ -237,7 +238,7 @@ else
     (*)
       echo "MAHOUT-JOB: $MAHOUT_JOB"
       export HADOOP_CLASSPATH=$MAHOUT_CONF_DIR:${HADOOP_CLASSPATH}
-      exec "$HADOOP_HOME/bin/hadoop" --config $HADOOP_CONF_DIR jar $MAHOUT_JOB $CLASS "$@"
+      exec "$HADOOP_BINARY" jar $MAHOUT_JOB $CLASS "$@"
     esac
   fi
 fi

Modified: mahout/trunk/distribution/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewvc/mahout/trunk/distribution/src/main/assembly/bin.xml?rev=1333154&r1=1333153&r2=1333154&view=diff
==============================================================================
--- mahout/trunk/distribution/src/main/assembly/bin.xml (original)
+++ mahout/trunk/distribution/src/main/assembly/bin.xml Wed May  2 18:55:47 2012
@@ -17,6 +17,7 @@
       </includes>
       <excludes>
         <exclude>mahout-*</exclude>
+        <exclude>hadoop-*</exclude>
       </excludes>
       <outputDirectory>lib</outputDirectory>
     </fileSet>
@@ -28,6 +29,13 @@
       <outputDirectory>lib</outputDirectory>
     </fileSet>
     <fileSet>
+      <directory>${project.basedir}/../examples/target/dependency</directory>
+      <includes>
+        <include>hadoop-*.jar</include>
+      </includes>
+      <outputDirectory>lib/hadoop</outputDirectory>
+    </fileSet>
+    <fileSet>
       <directory>${project.basedir}/../math/target</directory>
       <includes>
         <include>mahout-*.jar</include>