为什么使用" java.lang.ClassNotFoundException启动带有yarn-client的spark-shell失败:org.apache.hadoop.fs.FSDataInputStream"?

时间:2015-09-17 20:05:15

标签: hadoop apache-spark yarn

我正在尝试在家中建立一个集群,以满足我的个人需求(学习)。首先,我制作了Hadoop + Yarn。 MR2正在运作。第二 - 我正在尝试添加Spark,但收到有关缺少类的错误。

[root@master conf]# spark-shell --master yarn-client
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
...
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream

我按照这些instructions添加到spark-env.sh

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop)

更多信息
Cent_OS.86_64
Hadoop目录:/usr/local/hadoop

Hadoop版本:

[root@master conf]# hadoop version
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar

Manual说我必须有2个变种:HADOOP_CONF_DIR or YARN_CONF_DIR

[root@master conf]# echo $HADOOP_CONF_DIR
/usr/local/hadoop/etc/hadoop
[root@master conf]# echo $YARN_CONF_DIR
/usr/local/hadoop/etc/hadoop

Spark是spark-1.5.0-bin-without-hadoop.tgz - > /usr/local/spark

我尝试在hadoop +纱线启动时同时启动spark-shell --master yarn-client http://master:50070/dfshealth.html#tab-overview http://master:8088/cluster/apps http://master:19888/jobhistory

如果重要,我没有安装Scala。 任何想法我可以在Spark设置中错过什么?谢谢。

3 个答案:

答案 0 :(得分:2)

回答我自己的问题: 首先,这是我个人的错误。 致电spark-shell我是从旧的(错误的)地方/opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/bin/spark-shell发起的。我确信我已经通过yum remove cloudera*从CDH测试中删除了所有内容。

[root@master bin]# type spark-shell
spark-shell is hashed (/usr/bin/spark-shell)
[root@master bin]# hash -d spark-shell

现在,从旧的spark-1.5.0-bin-without-hadoop.tgz启动仍然给了我同样的错误。已下载spark-1.5.0-bin-hadoop2.6,已添加export SPARK_DIST_CLASSPATH=$HADOOP_HOME - spark-shell正在运行。

答案 1 :(得分:1)

我收到此错误是因为输入spark-shell/usr/bin/spark-shell正在执行。

要调用我特定的spark-shell,我从自己构建的spark源中运行以下命令 -

./bin/spark-shell

答案 2 :(得分:0)

而不是spark-1.5.0-bin-without-hadoop.tgz下载Hadoop 2.x的一个版本。它们随Hadoop客户端库一起设置起来更简单。