运行spark提交时出现FileNotFound错误



我正试图在Hadoop集群上运行spark-submit命令以下是我的Hadoop集群摘要:

  • 集群是使用连接在内部网络上的5个VirtualBox虚拟机构建的
  • 创建了1个名称节点和4个数据节点
  • 所有虚拟机都是从Bitnami Hadoop Stack VirtualBox映像构建的

当我运行以下命令时:

spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.0.3.jar 10

我收到以下错误:

java.io.FileNotFoundException: File file:/home/bitnami/sparkStaging/bitnami/.sparkStaging/application_1658417340986_0002/__spark_conf__.zip does not exist

我在尝试使用PySpark:创建sparkSession时也遇到了类似的错误

spark = SparkSession.builder.appName('appName').getOrCreate()

我已经尝试/验证了以下

  • 环境变量:HADOOP_HOMESPARK_HOMEHADOOP_CONF_DIR已在我的.bashrc文件中设置
  • CCD_ 11中定义了CCD_ 9和CCD_
  • spark-defaults.conf中增加了spark.master yarnspark.yarn.stagingDir file:///home/bitnami/sparkStagingspark.yarn.jars file:///opt/bitnami/hadoop/spark/jars/

我认为spark.yarn.stagingDir需要是HDFS路径。

更具体地说;YARN暂存目录";需要在所有Spark执行器上可用,而不仅仅是运行spark-submit的本地文件路径

找不到的路径是从YARN集群报告的,其中/home/bitnami可能不存在,或者运行Spark执行器容器的Unix用户没有访问该路径的权限。

类似地,spark.yarn.jars(或spark.yarn.archive(应该是HDFS路径,因为这些路径将在所有执行器中并行下载。

由于spark作业应该提交给YARN管理的Hadoop集群,因此必须设置masterdeploy-mode。来自火花3.3.0文档:

# Run on a YARN cluster in cluster deploy mode
export HADOOP_CONF_DIR=XXX
./bin/spark-submit 
--class org.apache.spark.examples.SparkPi 
--master yarn 
--deploy-mode cluster 
--executor-memory 20G 
--num-executors 50 
/path/to/examples.jar 
1000

或者通过程序:

spark = SparkSession.builder().appName('appName').master("yarn").config("spark.submit.deployMode","cluster").getOrCreate()

最新更新