2016-10-09 7 views
0

私はHadoopとSparkの初心者です。チュートリアルでは、Hadoopにデータを追加してSparkでクエリを実行し、thisの後にスタンドアロンでHadoopをインストールし、Sparkを含まないSparkバージョンをダウンロードしたいとします。しかし、thisのようなエラーが出ました。インストールしたHadoopに関するクラスパスを設定しようとしました。クラスパスは以下のようなものでした。また、私はHadoopのソースを追跡し、環境変数を参照ソースを発見し、the sourceスタンドアロンでインストールされたhadoopとsparkに含まれているhadoopとの違いは?

SPARK_DIST_CLASSPATH=%HADOOP_HOME%\share\hadoop\tools\lib\* 

でSPARK_DIST_CLASSPATHしかし、私はまだエラーを持って、必然的に、私はHadoopのを含んで火花をインストールしました。しかし、私は他の制約があるかどうかは不思議です。

答えて

1

スタンドアローンのHadoopとSparkの実際の違いはありません。 Sparkを使用するには、少なくともIOのためにHadoop APIが必要です。あなたが報告されている エラー:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

は通常、あなたが正しくパスの設定ではないことを意味します。

あなたのファイルを自分のコンピュータ上で、私が見 の.jar瓶、Hadoopの-hdfs- {バージョン}のようなものの中に位置しており、このクラス:

${HADOOP_HOME}/share/hadoop/hfs/hadoop-hdfs-2.7.3.jar 

すべてのHadoop ENVはvarsのかどうかを確認してください正しく設定されています。最も重要なのはHADOOP_HOMEです。これは、Linux(そしてWindowsの可能性が高い)上に表示されているように、他のvarsに依存しています。

export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_ROOT_LOGGERi=INFO,console 
export HADOOP_SECURITY_LOGGER=INFO,NullAppender 
export HADOOP_INSTALL=$HADOOP_HOME 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 
export HADOOP_PREFIX=$HADOOP_HOME 
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec 
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH 
export HADOOP_YARN_HOME=$HADOOP_HOME 

はあなたが使用する必要がHadoopのクラスパスであるかを知るために:

私たちは、あなたがHADOOP_HOMEに依存してこれらのものに依存しており、彼らはさらに多くのenv VARSを設定しますスタートアップスクリプトを使用し

$ hadoop classpath 
/opt/hadoop/etc/hadoop:/opt/hadoop/share/hadoop/common/lib/*:/opt/hadoop/share/hadoop/common/*:/opt/hadoop/share/hadoop/hdfs:/opt/hadoop/share/hadoop/hdfs/lib/*:/opt/hadoop/share/hadoop/hdfs/*:/opt/hadoop/share/hadoop/yarn/lib/*:/opt/hadoop/share/hadoop/yarn/*:/opt/hadoop/share/hadoop/mapreduce/lib/*:/opt/hadoop/share/hadoop/mapreduce/*:/opt/hadoop/contrib/capacity-scheduler/*.jar 

SPARK_DIST_CLASSPATHこの値に設定する必要があり、手で値を設定すると良いアイデアではありませんthisをお読みください。

おそらく間違ったパスを使用しています。 sparkを起動する前に、hadoopのすべてが動作していることを確認してください。

+0

このように、すべてのjarを含むすべてのフォルダをリストする必要があることを意味しますか? – verystrongjoe

+0

ハイドープで使用されているもののみ。本当に必要なパスを取得するには、 'hadoop class'を使います。 – ozw1z5rd

+0

私はこれをWindows 10で試しています。 "hadoop class"が見つかりません。選択肢はありますか? – verystrongjoe

関連する問題