Browse Source

MAPREDUCE-3081. Fix vaidya startup script. Contributed by Suhas

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1176550 13f79535-47bb-0310-9956-ffa450edef68
Giridharan Kesavan 13 years ago
parent
commit
98cc200700

+ 2 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -29,6 +29,8 @@ Trunk (unreleased changes)
     findBugs, correct links to findBugs artifacts and no links to the
     findBugs, correct links to findBugs artifacts and no links to the
     artifacts when there are no warnings. (Tom White via vinodkv).
     artifacts when there are no warnings. (Tom White via vinodkv).
 
 
+    MAPREDUCE-3081. Fix vaidya startup script. (gkesavan via suhas).
+
 Release 0.23.0 - Unreleased
 Release 0.23.0 - Unreleased
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 67 - 6
hadoop-mapreduce-project/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/vaidya.sh

@@ -31,17 +31,78 @@ script=`basename "$this"`
 bin=`cd "$bin"; pwd`
 bin=`cd "$bin"; pwd`
 this="$bin/$script"
 this="$bin/$script"
 
 
-# Check if HADOOP_PREFIX AND JAVA_HOME is set.
-if [ -z $HADOOP_PREFIX ] ; then
-  echo "HADOOP_PREFIX environment variable not defined"
+# Check if HADOOP_HOME AND JAVA_HOME is set.
+if [ -z "$HADOOP_HOME" ] && [ -z "$HADOOP_PREFIX" ] ; then
+  echo "HADOOP_HOME or HADOOP_PREFIX environment variable should be defined"
   exit -1;
   exit -1;
 fi
 fi
 
 
-if [ -z $JAVA_HOME ] ; then
+if [ -z "$JAVA_HOME" ] ; then
   echo "JAVA_HOME environment variable not defined"
   echo "JAVA_HOME environment variable not defined"
   exit -1;
   exit -1;
 fi
 fi
 
 
-hadoopVersion=`$HADOOP_PREFIX/bin/hadoop version | grep Hadoop | awk '{print $2}'`
+if [ -z "$HADOOP_PREFIX" ]; then
+  hadoopVersion=`$HADOOP_HOME/bin/hadoop version | awk 'BEGIN { RS = "" ; FS = "\n" } ; { print $1 }' | awk '{print $2}'`
+else
+  hadoopVersion=`$HADOOP_PREFIX/bin/hadoop version | awk 'BEGIN { RS = "" ; FS = "\n" } ; { print $1 }' | awk '{print $2}'`
+fi
+
+# so that filenames w/ spaces are handled correctly in loops below
+IFS=
+
+# for releases, add core hadoop jar to CLASSPATH
+if [ -e $HADOOP_PREFIX/share/hadoop/hadoop-core-* ]; then
+  for f in $HADOOP_PREFIX/share/hadoop/hadoop-core-*.jar; do
+    CLASSPATH=${CLASSPATH}:$f;
+  done
+
+  # add libs to CLASSPATH
+  for f in $HADOOP_PREFIX/share/hadoop/lib/*.jar; do
+    CLASSPATH=${CLASSPATH}:$f;
+  done
+else
+  # tarball layout
+  if [ -e $HADOOP_HOME/hadoop-core-* ]; then
+    for f in $HADOOP_HOME/hadoop-core-*.jar; do
+      CLASSPATH=${CLASSPATH}:$f;
+    done
+  fi
+  if [ -e $HADOOP_HOME/build/hadoop-core-* ]; then 
+    for f in $HADOOP_HOME/build/hadoop-core-*.jar; do
+      CLASSPATH=${CLASSPATH}:$f;
+    done
+  fi
+  for f in $HADOOP_HOME/lib/*.jar; do
+    CLASSPATH=${CLASSPATH}:$f;
+  done
+
+  if [ -d "$HADOOP_HOME/build/ivy/lib/Hadoop/common" ]; then
+    for f in $HADOOP_HOME/build/ivy/lib/Hadoop/common/*.jar; do
+      CLASSPATH=${CLASSPATH}:$f;
+    done
+  fi
+fi
+
+# Set the Vaidya home
+if [ -d "$HADOOP_PREFIX/share/hadoop/contrib/vaidya/" ]; then
+  VAIDYA_HOME=$HADOOP_PREFIX/share/hadoop/contrib/vaidya/
+fi
+if [ -d "$HADOOP_HOME/contrib/vaidya" ]; then
+  VAIDYA_HOME=$HADOOP_HOME/contrib/vaidya/
+fi
+if [ -d "$HADOOP_HOME/build/contrib/vaidya" ]; then
+  VAIDYA_HOME=$HADOOP_HOME/build/contrib/vaidya/
+fi
+
+# add user-specified CLASSPATH last
+if [ "$HADOOP_USER_CLASSPATH_FIRST" = "" ] && [ "$HADOOP_CLASSPATH" != "" ]; then
+  CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
+fi
+
+# restore ordinary behaviour
+unset IFS
+
+echo "$CLASSPATH"
 
 
-$JAVA_HOME/bin/java -Xmx1024m -classpath $HADOOP_PREFIX/hadoop-${hadoopVersion}-core.jar:$HADOOP_PREFIX/contrib/vaidya/hadoop-${hadoopVersion}-vaidya.jar:$HADOOP_PREFIX/lib/commons-logging-1.0.4.jar:${CLASSPATH} org.apache.hadoop.vaidya.postexdiagnosis.PostExPerformanceDiagnoser $@
+$JAVA_HOME/bin/java -Xmx1024m -classpath $VAIDYA_HOME/hadoop-vaidya-${hadoopVersion}.jar:${CLASSPATH} org.apache.hadoop.vaidya.postexdiagnosis.PostExPerformanceDiagnoser $@