standalone安装的hadoop和spark自带的hadoop有什么区别?
The difference between a hadoop installed by standalone and a hadoop included in spark?
我是 Hadoop 和 Spark 领域的新手。对于教程,我想将一些数据添加到 Hadoop 并在 Spark 中查询它。因此,我按照 this and I downloaded the Spark version that does not include Hadoop. But I got an error like 独立安装了 Hadoop。我尝试将类路径设置为我安装的 Hadoop 文件夹。类路径是这样的:
SPARK_DIST_CLASSPATH=%HADOOP_HOME%\share\hadoop\tools\lib\*
除此之外,我跟踪了 Spark 源并在 the source 中找到了对环境变量 SPARK_DIST_CLASSPATH 的引用。我仍然遇到错误,不可避免地,我安装了包含 Hadoop 的 Spark。我很好奇我是否还有其他限制。
独立的 Hadoop 和 Spark 中的 Hadoop 之间没有真正的区别。要使用 Spark,至少 IO 需要 Hadoop API。
您报告的错误是:
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/hadoop/fs/FSDataInputStream
这通常意味着你没有正确设置路径。
您的文件位于一个 jar 中,类似于 hadoop-hdfs-{version}.jar
。
我在我的电脑上看到这个 class 位于:
${HADOOP_HOME}/share/hadoop/hfs/hadoop-hdfs-2.7.3.jar
请检查所有HADOOP环境变量是否设置正确。最重要的是 HADOOP_HOME
,正如您在 Linux 上看到的(很可能在 Windows 上看到的)任何其他变量都依赖于它。
当您使用启动脚本时,它们会设置更多的环境变量,这些变量取决于 HADOOP_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 class您必须使用的路径:
$ 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 上的一切正常。
我是 Hadoop 和 Spark 领域的新手。对于教程,我想将一些数据添加到 Hadoop 并在 Spark 中查询它。因此,我按照 this and I downloaded the Spark version that does not include Hadoop. But I got an error like
SPARK_DIST_CLASSPATH=%HADOOP_HOME%\share\hadoop\tools\lib\*
除此之外,我跟踪了 Spark 源并在 the source 中找到了对环境变量 SPARK_DIST_CLASSPATH 的引用。我仍然遇到错误,不可避免地,我安装了包含 Hadoop 的 Spark。我很好奇我是否还有其他限制。
独立的 Hadoop 和 Spark 中的 Hadoop 之间没有真正的区别。要使用 Spark,至少 IO 需要 Hadoop API。 您报告的错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
这通常意味着你没有正确设置路径。
您的文件位于一个 jar 中,类似于 hadoop-hdfs-{version}.jar
。
我在我的电脑上看到这个 class 位于:
${HADOOP_HOME}/share/hadoop/hfs/hadoop-hdfs-2.7.3.jar
请检查所有HADOOP环境变量是否设置正确。最重要的是 HADOOP_HOME
,正如您在 Linux 上看到的(很可能在 Windows 上看到的)任何其他变量都依赖于它。
当您使用启动脚本时,它们会设置更多的环境变量,这些变量取决于 HADOOP_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 class您必须使用的路径:
$ 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 上的一切正常。