Spark提交任务报错:无法找到或加载主类org.apache.spark.deploy.yarn.ExecutorLauncher
Spark on YARN 执行报错问题
集群概况
- 基于5台连接内部网络的VirtualBox虚拟机搭建
- 包含1个NameNode和4个DataNode
- 所有虚拟机均使用Bitnami Hadoop Stack VirtualBox镜像构建
执行的命令
运行Spark Pi示例的命令:
spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.0.3.jar 10
报错信息
[2022-07-25 13:32:39.253]容器以非零退出码1终止。错误文件:prelaunch.err。 prelaunch.err最后4096字节内容: stderr最后4096字节内容: 错误:找不到或无法加载主类 org.apache.spark.deploy.yarn.ExecutorLauncher
运行PySpark脚本时也出现相同错误
已尝试的操作
- 在
.bashrc文件中配置了环境变量HADOOP_HOME、SPARK_HOME和HADOOP_CONF_DIR - 在
spark-env.sh中定义了SPARK_DIST_CLASSPATH和HADOOP_CONF_DIR - 在
spark-defaults.conf中添加了以下配置:spark.master yarnspark.yarn.stagingDir hdfs://hadoop-namenode:8020/user/bitnami/sparkStagingspark.yarn.jars hdfs://hadoop-namenode:8020/user/bitnami/spark/jars/
- 已将Spark的jar包上传至HDFS,执行命令:
hadoop fs -put $SPARK_HOME/jars/* hdfs://hadoop-namenode:8020/user/bitnami/spark/jars/ - 通过Web界面查看日志,未获取到更多错误细节
解决方案
检查版本兼容性
确认Spark 3.0.3与Bitnami Hadoop Stack的版本是否匹配。Spark 3.0.x需搭配Hadoop 3.2.x及以上版本,版本不匹配会直接导致类加载失败。验证HDFS上的Spark jar包完整性
执行命令检查核心jar包是否存在:hadoop fs -ls hdfs://hadoop-namenode:8020/user/bitnami/spark/jars/ | grep spark-yarn若找不到
spark-yarn_2.12-3.0.3.jar(包含ExecutorLauncher类),说明上传遗漏,重新上传:hadoop fs -rm -r hdfs://hadoop-namenode:8020/user/bitnami/spark/jars/ hadoop fs -put $SPARK_HOME/jars/* hdfs://hadoop-namenode:8020/user/bitnami/spark/jars/修正SPARK_DIST_CLASSPATH配置
在spark-env.sh中生成并写入正确的类路径:echo "export SPARK_DIST_CLASSPATH=$(hadoop classpath)" >> $SPARK_HOME/conf/spark-env.sh source $SPARK_HOME/conf/spark-env.sh验证Spark本地模式可用性
先在本地模式运行示例,排除Spark本身的问题:spark-submit --master local[*] --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.0.3.jar 10若本地模式正常,问题则集中在YARN集群配置上,需检查YARN的
yarn-env.sh是否干扰了Spark类路径。
内容的提问来源于stack exchange,提问作者Karthik Sankaran
相关产品推荐
相关产品推荐

