我尝试设置并运行一个运行在YARN之上并使用HDFS运行的Spark集群。
我首先使用 hadoop-3.1.0 为 HDFS 设置 Hadoop。 然后我配置了 YARN 并启动了两者。 我能够将数据上传到HDFS,纱线似乎也可以正常工作。
然后我只在我的主服务器上安装了 spark-2.3.0-bin-without-hadoop,并尝试提交申请。 由于它是没有Hadoop的火花,我不得不修改 spark-env.sh,添加以下行,如文档中提到的:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
仅使用此行,我得到了以下异常:
Error: Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster
我猜这意味着他找不到火花库。所以我将火花罐添加到类路径中:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath):/usr/local/spark/jars/*
但是现在我得到以下异常:
com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.7.8
事实证明,Hadoop 3.1.0提供了Jackson 2.7.8,而Spark 2.3.0提供了Jackson 2.6.7。在我看来,两者现在都在类路径中,从而导致冲突。
由于看起来我真的需要Hadoop和Spark库来提交任何东西,我不知道如何解决这个问题。
Hadoop-3.0.0如何与旧版本的Hive,Pig,Sqoop和Spark兼容
@JacekLaskowski回答说,Hadoop 3不支持Spark。据我所知,过去 6 个月该地区没有任何变化。