0

ジョブをサブミットするときに、誤って「hadoop jar」ではなく「hadoop -jar」を使用しています。

この場合、jar パッケージをクラスターに送信できず、「ローカル ジョブ ランナー」のみが起動されてしまい、とても困惑しました。

その理由を知っている人はいますか?または、「hadoop jar」コマンドと「hadoop -jar」コマンドの違いは?

ありがとうございました!

4

1 に答える 1

2

/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 を実行できるかわかりません。

于 2013-07-23T11:44:27.647 に答える