この質問は、ワーカーがそれらを使用するためにクラスタ全体にジャーを配布することを意味しません。Hadoop HADOOP_CLASSPATHの問題
これは、クライアントマシン上にいくつかの追加ライブラリを指定することを指します。具体的に:私はSequenceFileの内容を取得するために、次のコマンドを実行しようとしている:
/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
それは、このエラーが私をスロー:text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable
私はDoubleArrayWritableと呼ばれる書き込み可能なクラスを持っています。実際、別のコンピュータではすべてうまく動作します。
HADOOP_CLASSPATH
に、そのクラスを含むjarを含めるように設定しようとしましたが、結果はありません。実際には、実行時:
/path/to/hadoop/script classpath
結果には、HADOOP_CLASSPATHに追加したjarが含まれていません。
質問です:Hadoopの実行時にどのように(Hadoopのスクリプトはクラスパスに自動的に含まれるもの以外の余分な意味を他のライブラリで)
を余分なライブラリを指定しない助けるかもしれないいくつかの詳細情報:
私はhadoop-env.shで- ルn hadoop.shからこの行があります:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib
おそらく私のHADOOP_CLASSPATHのenv varが無視される理由が説明されています。
はいますがHadoopのスクリプトは、この行います。export HADOOP_CLASSPATH = $ HADOOP_HOME/libが。それは私のHADOOP_CLASSPATHを書き換えます – Razvan
@Razvan私が言ったように私の更新された答え –
を見て、私は "分散"クラスパスを設定したくありません。クライアントマシン上でクラスパスを設定したいだけです。 – Razvan