Apache spark 单机版安装的hadoop与spark中包含的hadoop有什么区别?

Apache spark 单机版安装的hadoop与spark中包含的hadoop有什么区别?,apache-spark,hadoop2,Apache Spark,Hadoop2,我是Hadoop和Spark领域的新手。作为教程,我想向Hadoop添加一些数据并在Spark中查询。因此,我通过以下方式安装了Hadoop单机版,并下载了不包含Hadoop的Spark版本。但我犯了一个错误,比如。我尝试将类路径设置为我安装的Hadoop文件夹。类路径如下所示: SPARK_DIST_CLASSPATH=%HADOOP_HOME%\share\hadoop\tools\lib\* 除此之外,我还跟踪了Spark源,并在中找到了对环境变量Spark\u DIST\u CLAS

我是Hadoop和Spark领域的新手。作为教程,我想向Hadoop添加一些数据并在Spark中查询。因此,我通过以下方式安装了Hadoop单机版,并下载了不包含Hadoop的Spark版本。但我犯了一个错误,比如。我尝试将类路径设置为我安装的Hadoop文件夹。类路径如下所示:

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

除此之外,我还跟踪了Spark源,并在中找到了对环境变量Spark\u DIST\u CLASSPATH的引用。我仍然犯了错误,不可避免地,我安装了包含Hadoop的Spark。我很好奇我是否还有其他限制。

独立Hadoop和Spark中的Hadoop之间没有真正的区别。要使用Spark,您至少需要用于IO的Hadoop API。 您报告的错误是:

线程“main”java.lang.NoClassDefFoundError中出现异常: org/apache/hadoop/fs/FSDataInputStream

这通常意味着您没有正确设置路径

您的文件位于jar中,类似于
hadoop hdfs-{version}.jar
。 在我的计算机上,我看到该类位于:

${HADOOP_HOME}/share/hadoop/hfs/hadoop-hdfs-2.7.3.jar
请检查是否正确设置了所有HADOOP环境变量。最重要的是HADOOP\u HOME,正如您在Linux(很可能在Windows上)上看到的,任何其他变量都依赖于它

当您使用启动脚本时,它们将设置更多依赖于HADOOP\u HOME的环境变量:

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 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\u DIST\u CLASSPATH
设置为该值。阅读手动设置值不是一个好主意

很可能您使用了错误的路径。
在启动Spark之前,确保Hadoop上的所有东西都正常工作。

那么,你的意思是我应该列出所有文件夹,包括所有JAR?只有Hadoop使用的文件夹。使用
hadoop类
获取您真正需要的路径。我正在windows 10中尝试这一点。找不到“hadoop类”。有其他选择吗?我在前面的回答中打错了,对不起。使用hadoop类路径。您也可以尝试
hdfs classpath
,多亏了您,我在上一个版本中也成功了!!