我正试图在家里建立一个集群,以满足我的个人需求(学习)。首先我制作了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
我按照这些指示添加到spark-env.sh
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop)
更多信息:
Cent_OS.86_64
Hadoop目录:/usr/local/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
手册说我必须有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 is spark-1.5.0-bin-without-hadoop.tgz
-> /usr/local/spark
我试图启动spark-shell --master yarn-client
在同一时间,当hadoop+yarn是可用的http://master:50070/dfshealth.html#tab-overview
http://master:8088/cluster/apps
http://master:19888/jobhistory
如果需要的话,我没有安装Scala。在Spark设置中有什么我可以错过的吗?谢谢你。
回答自己的问题:首先,这是我个人的错误。调用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现在可以工作了
我得到这个错误,因为通过输入spark-shell
, /usr/bin/spark-shell
正在执行。
为了调用我的特定spark-shell,我在自己构建的spark源代码中运行了以下命令-
./bin/spark-shell
代替spark-1.5.0-bin-without-hadoop.tgz
下载Hadoop 2.x的构建之一。它们更容易设置,因为它们随Hadoop客户端库一起提供。