ジョブをサブミットするときに、誤って「hadoop jar」ではなく「hadoop -jar」を使用しています。
この場合、jar パッケージをクラスターに送信できず、「ローカル ジョブ ランナー」のみが起動されてしまい、とても困惑しました。
その理由を知っている人はいますか?または、「hadoop jar」コマンドと「hadoop -jar」コマンドの違いは?
ありがとうございました!
/usr/bin/hadoop jar は、Hadoop の$HADOOP_HOME/bin/hadoop
スクリプトが引数として必要とするものです。 $HADOOP_HOME は、hadoop 関連ファイルを保持している場所です。
Hadoopスクリプトからの抜粋
elif [ "$COMMAND" = "jar" ] ; then
CLASS=org.apache.hadoop.util.RunJar
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
と、
elif [[ "$COMMAND" = -* ]] ; then
# class and package names cannot begin with a -
echo "Error: No command named \`$COMMAND' was found. Perhaps you meant \`hadoop ${COMMAND#-}'"
exit 1
ここでは COMMAND="jar" であり、COMMAND=-*、または -jar の場合、上記のコードのように例外をスローする必要があります。どうすればローカル jar を実行できるかわかりません。