我尝试设置并运行在 YARN 之上运行并使用 HDFS 的 Spark 集群。
我首先使用 hadoop-3.1.0 为 HDFS 设置了 Hadoop。 然后我配置了 YARN 并启动了两者。 我能够将数据上传到 HDFS,yarn 似乎也能正常工作。
然后我只在我的master上安装了spark-2.3.0-bin-without-hadoop并尝试提交申请。 由于它是没有 Hadoop 的 spark,我不得不修改 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
我猜这意味着他没有找到 Spark 库。所以我将 spark jars 添加到类路径中:
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 库来提交任何东西,我不知道如何解决这个问题。
最佳答案
How is Hadoop-3.0.0 's compatibility with older versions of Hive, Pig, Sqoop and Spark
@JacekLaskowski 的回答是 hadoop 3 不支持 spark。据我所知,过去 6 个月该领域没有任何变化。
关于apache-spark - apache spark 和 hadoop 之间的 Jar 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320315/