スタンドアローンの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のすべてが動作していることを確認してください。
このように、すべてのjarを含むすべてのフォルダをリストする必要があることを意味しますか? – verystrongjoe
ハイドープで使用されているもののみ。本当に必要なパスを取得するには、 'hadoop class'を使います。 – ozw1z5rd
私はこれをWindows 10で試しています。 "hadoop class"が見つかりません。選択肢はありますか? – verystrongjoe