非Hadoop集群机器运行spark-submit遇类缺失等问题求助
Spark on Yarn集群模式NoClassDefFoundError问题排查与解答
问题场景
在Windows(部署路径C:\HadoopClient)和Linux(部署路径~)环境下,为分析师搭建桌面版Spark客户端,将用户提供的Apache Hadoop预构建版Spark集成到现有Hadoop客户端中。执行基础SparkPi提交命令:
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等环境变量及PATH配置正确,SPARK_DIST_CLASSPATH包含hadoop classpath的输出内容。查看集群节点的launch_container.sh发现,作业CLASSPATH混入了本地机器的SPARK_DIST_CLASSPATH内容,而org/apache/hadoop/fs/FSDataInputStream所在的hadoop-common-3.1.2.jar确实存在于集群节点/usr/lib/hadoop目录下且包含目标类,但Yarn仍无法加载。
疑问解答
1. 明明在CLASSPATH中,Yarn为何找不到hadoop-common-3.1.2.jar?
- 本地SPARK_DIST_CLASSPATH包含的是本地Hadoop Jar的绝对路径(如Windows下的
C:\HadoopClient\...或Linux本地的~/...),这些路径在集群节点上不存在,导致CLASSPATH解析失败,甚至覆盖了集群本地/usr/lib/hadoop路径的加载优先级。 - Yarn容器的CLASSPATH加载顺序存在问题:如果无效的本地路径排在集群Hadoop Jar路径之前,JVM会优先尝试加载不存在的路径,后续有效路径的Jar可能被忽略。
- 集群Yarn配置缺失:若
yarn.application.classpath未配置/usr/lib/hadoop/*或/usr/lib/hadoop/common/*,即使Jar存在于节点本地,容器也无法自动识别加载。
2. 本地SPARK_DIST_CLASSPATH出现在Yarn作业的CLASSPATH中,是无用冗余还是配置错误?
这属于配置错误:
- Spark在Yarn集群模式下,客户端的SPARK_DIST_CLASSPATH是本地环境配置,集群容器不需要依赖本地的Hadoop类路径。当设置SPARK_DIST_CLASSPATH包含
hadoop classpath时,客户端会将本地Hadoop类路径传递给Yarn,导致集群容器CLASSPATH混入无效本地路径。 - 正确做法:Yarn集群模式下,无需在客户端设置SPARK_DIST_CLASSPATH包含Hadoop类路径,集群节点Yarn会自动加载本地Hadoop类路径。如需额外配置,应通过Spark的
spark.yarn.jars或集群级Yarn配置统一管理。
3. 使用适配Hadoop3.1.2的预构建Spark时,spark-submit为何不将hadoop-common-3.1.2.jar发送至集群?
- Spark预构建包中,Hadoop相关Jar默认标记为
provided依赖(即假设集群环境已提供这些Jar),因此spark-submit不会主动将其上传到集群的__spark_libs__目录。 - 报错JNI错误和
NoClassDefFoundError: org/apache/hadoop/conf/Configuration,说明集群Hadoop环境与Spark预构建包依赖的版本不兼容,或Yarn容器未正确加载本地Hadoop类路径。即使本地Spark的jars目录下有该Jar,集群模式下客户端不会上传provided级别的依赖。 - 解决思路:确认集群Hadoop版本与Spark预构建包适配版本完全一致;检查
yarn.application.classpath配置,确保包含Hadoop common模块的Jar路径;若必须上传Hadoop Jar,可通过spark-submit --jars参数手动指定,或修改spark.jars.packages配置强制引入。
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

