从不在Hadoop集群中的计算机运行spark-submit

sulc1iza  于 2022-12-03  发布在  Hadoop
关注(0)|答案(1)|浏览(247)

我正在尝试为我们的分析师设置一个Spark客户端分发,他们可以从他们的桌面上使用。
为了实现这一点,我在我现有的Hadoop客户端发行版中添加了一个“使用用户提供的Apache Hadoop预构建”的Spark版本。
我尝试启动最基本的spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster Spark/examples/jars/spark-examples_2.12-3.1.1.jar,但java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream失败
我已经检查了常见的嫌疑犯:

  • JAVA_HOME、HADOOP_HOME、SPARK_HOME、HADOOP_CONF_DIR、SPARK_CONF_DIR和路径均已正确设置
  • SPARK_DIST_CLASSPATH包含hadoop classpath的内容

我在Hadoop集群上检查了launch_container.sh,发现CLASSPATH变量如下所示:
$PWD:$PWD/__spark_conf__:$PWD/__spark_libs__/*:/etc/hadoop/conf/*:/usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hadoop-hdfs/*:/usr/lib/hadoop-hdfs/lib/*:/usr/lib/hadoop-yarn/*:/usr/lib/hadoop-yarn/lib/*:/usr/lib/hadoop-mapreduce/*:/usr/lib/hadoop-mapreduce/lib/*:/etc/hadoop/conf/*:/usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hadoop-hdfs/*:/usr/lib/hadoop-hdfs/lib/*:/usr/lib/hadoop-yarn/*:/usr/lib/hadoop-yarn/lib/*:/usr/lib/hadoop-mapreduce/*:/usr/lib/hadoop-mapreduce/lib/*:,后跟独立计算机中SPARK_DIST_CLASSPATH变量的完整内容(C:\HadoopClient\Hadoop\share.../home/user/Hadoop/share...)。
org/apache/hadoop/fs/FSDataInputStream来自hadoop-common-3.1.2.jar,它应该在CLASSPATH上,因为它位于集群节点上的/usr/lib/hadoop中。
1.如果hadoop-common-3.1.2.jar在类路径上,为什么Yarn找不到它?
1.我的SPARK_DIST_CLASSPATH在Yarn作业的类路径中做了什么?它是无害的浪费,还是我做错了什么?
当我使用不同的Spark发行版(为Apache Hadoop 3.1.2(我们的Hadoop版本)预构建的发行版)时,作业崩溃得更快,

  1. Error: A JNI error has occurred, please check your installation and try again
  2. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration

CLASSPATH变量如下所示:
$PWD:$PWD/__spark_conf__:$PWD/__spark_libs__/*:,后跟独立计算机中SPARK_DIST_CLASSPATH变量的全部内容。
在这种情况下,我同意类路径上没有hadoop-common-3.1.2.jar,独立机器上的%SPARK_HOME%\jars目录肯定包含hadoop-common-3.1.2.jar,但它不在集群上的$PWD/__spark_libs__/中。
1.为什么spark-submit不将jar发送到Hadoop集群?

vsaztqbk

vsaztqbk1#

原来问题出在SPARK_CONF_DIR中的spark-defaults.conf中。我从群集节点复制了整个conf目录以访问Hive,但spark-defaults.conf被调整为从群集节点运行并覆盖了spark.yarn.archives。我从配置中删除了该文件,并能够成功地将作业提交到Yarn群集。

相关问题