Skip to content

Commit 6204df9

Browse files
Tom PierceRoman Shaposhnik
Tom Pierce
authored and
Roman Shaposhnik
committed
MAHOUT-994 - bin/mahout should not rely on HADOOP_HOME
git-svn-id: https://svn.apache.org/repos/asf/mahout/trunk@1333154 13f79535-47bb-0310-9956-ffa450edef68
1 parent a958fa3 commit 6204df9

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

bin/mahout

+14-13
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ CLASSPATH=${CLASSPATH}:$MAHOUT_CONF_DIR
121121

122122
if [ "$MAHOUT_LOCAL" != "" ]; then
123123
echo "MAHOUT_LOCAL is set, so we don't add HADOOP_CONF_DIR to classpath."
124-
else
124+
elif [ -n "$HADOOP_CONF_DIR" ] ; then
125125
echo "MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath."
126126
CLASSPATH=${CLASSPATH}:$HADOOP_CONF_DIR
127127
fi
@@ -199,13 +199,19 @@ done
199199

200200
# run it
201201

202-
if [ "$HADOOP_HOME" = "" ] || [ "$MAHOUT_LOCAL" != "" ] ; then
203-
if [ "$HADOOP_HOME" = "" ] ; then
204-
echo "no HADOOP_HOME set, running locally"
202+
HADOOP_BINARY=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" which hadoop 2>/dev/null)
203+
if [ -x "$HADOOP_BINARY" ] ; then
204+
HADOOP_BINARY_CLASSPATH=$("$HADOOP_BINARY" classpath)
205+
fi
206+
207+
if [ ! -x "$HADOOP_BINARY" ] || [ "$MAHOUT_LOCAL" != "" ] ; then
208+
if [ ! -x "$HADOOP_BINARY" ] ; then
209+
echo "hadoop binary is not in PATH,HADOOP_HOME/bin,HADOOP_PREFIX/bin, running locally"
205210
elif [ "$MAHOUT_LOCAL" != "" ] ; then
206211
echo "MAHOUT_LOCAL is set, running locally"
207212
fi
208213
# echo "CLASSPATH: $CLASSPATH"
214+
CLASSPATH="${CLASSPATH}:${MAHOUT_HOME/lib/hadoop/*}"
209215
case $1 in
210216
(classpath)
211217
echo $CLASSPATH
@@ -214,30 +220,25 @@ if [ "$HADOOP_HOME" = "" ] || [ "$MAHOUT_LOCAL" != "" ] ; then
214220
exec "$JAVA" $JAVA_HEAP_MAX $MAHOUT_OPTS -classpath "$CLASSPATH" $CLASS "$@"
215221
esac
216222
else
217-
echo "Running on hadoop, using HADOOP_HOME=$HADOOP_HOME"
218-
if [ "$HADOOP_CONF_DIR" = "" ] ; then
219-
HADOOP_CONF_DIR=$HADOOP_HOME/conf
220-
echo "No HADOOP_CONF_DIR set, using $HADOOP_HOME/conf "
221-
else
222-
echo "HADOOP_CONF_DIR=$HADOOP_CONF_DIR"
223-
fi
223+
echo "Running on hadoop, using $HADOOP_BINARY and HADOOP_CONF_DIR=$HADOOP_CONF_DIR"
224224

225225
if [ "$MAHOUT_JOB" = "" ] ; then
226226
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"
227227
exit 1
228228
else
229229
case "$1" in
230230
(hadoop)
231+
shift
231232
export HADOOP_CLASSPATH=$MAHOUT_CONF_DIR:${HADOOP_CLASSPATH}:$CLASSPATH
232-
exec "$HADOOP_HOME/bin/$@"
233+
exec "$HADOOP_BINARY" "$@"
233234
;;
234235
(classpath)
235236
echo $CLASSPATH
236237
;;
237238
(*)
238239
echo "MAHOUT-JOB: $MAHOUT_JOB"
239240
export HADOOP_CLASSPATH=$MAHOUT_CONF_DIR:${HADOOP_CLASSPATH}
240-
exec "$HADOOP_HOME/bin/hadoop" --config $HADOOP_CONF_DIR jar $MAHOUT_JOB $CLASS "$@"
241+
exec "$HADOOP_BINARY" jar $MAHOUT_JOB $CLASS "$@"
241242
esac
242243
fi
243244
fi

distribution/src/main/assembly/bin.xml

+8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</includes>
1919
<excludes>
2020
<exclude>mahout-*</exclude>
21+
<exclude>hadoop-*</exclude>
2122
</excludes>
2223
<outputDirectory>lib</outputDirectory>
2324
</fileSet>
@@ -28,6 +29,13 @@
2829
</includes>
2930
<outputDirectory>lib</outputDirectory>
3031
</fileSet>
32+
<fileSet>
33+
<directory>${project.basedir}/../examples/target/dependency</directory>
34+
<includes>
35+
<include>hadoop-*.jar</include>
36+
</includes>
37+
<outputDirectory>lib/hadoop</outputDirectory>
38+
</fileSet>
3139
<fileSet>
3240
<directory>${project.basedir}/../math/target</directory>
3341
<includes>

0 commit comments

Comments
 (0)